Когда я писал некоторые функции, системы для своих некоторых карт, то подумал, почему не облегчить для себя построение скрипта в моем понятии. Хотя это может такое представление и наркомовский для других, но для меня удобный. Для чего я такое представлял в своей голове: для более быстрого написания кода. Который все равно бы преобразовался в нормальный код jass. Может даже и есть подобный подход, не проверял а др. источниках...
Вот собственно как я вижу для себя свой подход к скрипту для уменьшения своей трудоёмкости.

Как я себе представляю объявление глобальных переменных.
// KingJass (KJ)

Declare:
	real gx = 0.,
	real gy = 0.;
Объявление констант.
Const:
	int A = 0,
	str B = null;
Массивы.
Arrays:
	int A[12], // A[1][1] -> A[1*12+1] || A[0..681*12+0..11]
	int B,  // B[0..8191]
Почему так представляю псевдокод. Потому, что мне так удобнее.
Пример простой функции и способа вызова другой функции

* Test2<*>:
	DestroyTimer GetExpiredTimer,
	BJDebugMsg "Hi!";
Ещё один примерный код функции, где >> заменяет function.
int Test<*>:
Inside:
	real x = 0., real y = 0., timer t = CreateTimer;
	TimerStart t 1. false >>Test2,
	return 0;
Другой пример функции:
int MyCode<int a, real x>:
	return I2R x / 2;
Пример цикла.
* Test3<*>:	
Inside:
	int i = 0;
loop:
	BJDebugMsg I2S i, 
	i+,
	>ifexit i == 15;;

arr3{arr2,arr,i} = 0  // set arr3[arr2[arr[i]]] = 0
//или
@i.arr.arr2.arr3 = 0 // set arr3[arr2[arr[i]]] = 0
Полное значение в параметр функции..

I2R [5 + i - 4]
Скорее это больше наркомания, но мне так было бы удобнее кодить псевдокодом jass, который конвертировался в обычный jass2.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
18
8 лет назад
0
С восьмым мартом.
0
29
8 лет назад
0
Кристофер:
С восьмым мартом.
Ты ошибся ресурсом, дневником и пользователем, дружище.
0
30
8 лет назад
0
Берёшь такой, просишь исходники cJass у ADOLF'а и радостно переписываешь под себя.
раньше они на cjass.xgm.guru были, не нашёл почему-то.

ifexit
"Если выход"
проще просто "exit" (что я, кстати, сам использую).
Вообще часть этого можно дефайнами сделать, но не всё.
0
29
8 лет назад
Отредактирован Волчачка
0
Clamp:
Берёшь такой, просишь исходники cJass у ADOLF'а и радостно переписываешь под себя.
раньше они на cjass.xgm.guru были, не нашёл почему-то.

ifexit
"Если выход"
проще просто "exit" (что я, кстати, сам использую).
Вообще часть этого можно дефайнами сделать, но не всё.
Дефайны хороши, что нет у в vJass. Особенно объявлять псевдотипы объявлять.
Мне без разницы на чем кодить vJass, сJass или JASS2...
Добавлю:
Хоть я и позабавился с дефайнами, но все равно не хватает несколько фишек....
code
Тестил define, ничего так. Но немного не так. XD
#include "cJassKing_MaximaxVers.j"
//#include "kj_lib.j"


library TimerGroup initializer Ini{
    ^pointer(TimerGroup)
    ^add pointer(TimerGroup,^t,Timer)
    ^add pointer(TimerGroup,^i,Step)
    
    _no tgClear(^pointer i){
        pointer(TimerGroup,Timer,i) = _nl
        pointer(TimerGroup,Step,i) = _ni
    }
    
    ^no Ini(){
        ^init pointer(TimerGroup)
        
    }
}

library TimerSetting initializer Ini{
    ^pointer ts_Tmr = _ni
    ^h Hash
    
    ^pointer trhd(^pointer Timer){
        _re LoadInteger( Hash, _hi(pointer(TimerGroup,Timer,Timer)), _ni )
    }
    
    ^pointer NewTimer(^pointer px, ^r ix, ^c fcode ){
        ts_Tmr =  ^p_loc(TimerGroup)
        pointer(TimerGroup,Timer,ts_Tmr) = cr ^t
        SaveInteger( Hash, _hi(pointer(TimerGroup,Timer,ts_Tmr)),_ni, px )
        _tRun( pointer(TimerGroup,Timer,ts_Tmr), ix, false, fcode )
        _re ts_Tmr
    }
    
    ^pointer NewTimerEx(^pointer px, ^r ix, ^c fcode ){
        ts_Tmr =  ^p_loc(TimerGroup)
        pointer(TimerGroup,Timer,ts_Tmr) = cr ^t
        _tRun( pointer(TimerGroup,Timer,ts_Tmr), ix, true, fcode )
        _re ts_Tmr
    }
    
    _no CrashTime(^pointer Timer){
        clear ^h(Hash,_hi(pointer(TimerGroup,Timer,Timer)))
        free ^t(pointer(TimerGroup,Timer,Timer))
        ^p_unloc(TimerGroup,Timer)
    }
    
    ^no Ini(){
        
        Hash = cr ^h
    }
}
Чтобы оставить комментарий, пожалуйста, войдите на сайт.