ズブの初心者がゲーム作れるまで勉強するスレ
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/11/07 20:26ID:PFtlmWD9ズブの初心者以外お断りです。
なおアドバイス等はプロのかたでも結構です。
初心者は聞く耳を持ちプロもわかりやすく教えてやってください。
0838名前は開発中のものです。
2006/03/16(木) 22:02:29ID:gXQpHvOVgosub *init_task
screen 0,640,480
screen 1,640,480,2
repeat
gsel 1,-1
cls 4
await 1
color 255,255,255
gosub *task_factory0
//タスクシステム実行
gosub *run_task
//デバッグ情報
mes "---sp---"
mes sp
mes "---np---"
mes np
mes "---TaskList---"
gosub *show_task_busy
// gosub *show_task_null
// gosub *show_task_all
//裏画面を表にコピー
gsel 0,1
gcopy 1,0,0,640,480
loop
stop
0839名前は開発中のものです。
2006/03/16(木) 22:03:02ID:gXQpHvOV*sub0
tl.it.2=tl.it.2+cos(tl.it.4/100)*10
tl.it.3=tl.it.3+sin(tl.it.5/100)*10
pset tl.it.2, tl.it.3
if (tl.it.2 < 0) or (tl.it.2 > 640) or (tl.it.3 < 0) or (tl.it.3 > 480) {
tl.it.6=1
}
return
*sub1
return
*sub2
return
*sub3
return
*sub4
return
0840名前は開発中のものです。
2006/03/16(木) 22:03:32ID:gXQpHvOV*init_task
Dim tl,100,10 //タスクリスト 2番目の添え字の0は次のタスクへのポインタ、1は呼び出すサブルーチン、2以降はキャラデータ
//2,3座標 4,5加速度 6死亡フラグ
sp=0 //使用中タスク先頭
np=1 //空きタスク先頭 0なら残りなし
repeat 100
tl.cnt.0=cnt+1
loop
tl.0.0=0
tl.99.0=0
//この初期化でリストは次のように繋がる
//sp -> 0
//np -> 1 -> 2 -> 3 -> ... -> 0
return
0841名前は開発中のものです。
2006/03/16(木) 22:36:03ID:gXQpHvOV*add_task
//空きタスクが無ければ何もしない
if np=0 : return
//空きタスクから一つ取り出す
tmp=np
np=tl.np.0
//新しいタスク(=取りだしたタスク)がどのサブルーチンを呼ぶか設定
tl.tmp.1=add_task_sub
//新しいタスクにゲームデータを代入
tl.tmp.2=add_task_2
tl.tmp.3=add_task_3
tl.tmp.4=add_task_4
tl.tmp.5=add_task_5
tl.tmp.6=add_task_6
//取り出したタスクに利用中タスクの先頭ポインタを渡す
tl.tmp.0=sp
//先頭ポインタを新しく追加したタスクにする
sp=tmp
return
0842名前は開発中のものです。
2006/03/16(木) 22:36:34ID:gXQpHvOV*del_task
//SP直後の要素を書き換える場合はSPを書き換える必要があるので
//特別な処理をする
if del_task_index=0 {
//空タスクに移動
tmp=tl.sp.0
tl.sp.0=np
np=sp
//切れたタスクリストを繋ぐ
sp=tmp
return
}
it=sp
repeat del_task_index-1
it=tl.it.0
loop
//削除するタスクを待避
tmp=tl.it.0
//待避した穴を埋める
tl.it.0=tl.tmp.0
//待避したタスクを空リストに入れる
tl.tmp.0=np
np=tmp
return
0843名前は開発中のものです。
2006/03/16(木) 22:37:07ID:gXQpHvOV*show_task_all
repeat 100
mes tl.cnt.0
loop
return
//タスクリストの状態表示 使用中タスク(Debug用)
*show_task_busy
its=sp
while its ! 0
mes tl.its.0
its=tl.its.0
wend
return
//タスクリストの状態表示 空きタスク(Debug用)
*show_task_null
its=np
while its ! 0
mes tl.its.0
its=tl.its.0
wend
return
0844名前は開発中のものです。
2006/03/16(木) 22:37:39ID:gXQpHvOV*run_task
it=sp
while it ! 0
switch tl.it.1
case 0
gosub *sub0
swbreak
case 1
gosub *sub1
swbreak
case 2
gosub *sub2
swbreak
case 3
gosub *sub3
swbreak
case 4
gosub *sub4
swbreak
swend
it=tl.it.0
wend
gosub *check_kill
return
*check_kill
return
0845名前は開発中のものです。
2006/03/16(木) 22:38:22ID:gXQpHvOVadd_task_sub=0
add_task_2=320
add_task_3=240
add_task_4=rnd(628)
add_task_5=rnd(628)
add_task_6=0
gosub *add_task
return
*task_factory1
add_task_sub=1
gosub *add_task
return
*task_factory2
add_task_sub=2
gosub *add_task
return
*task_factory3
add_task_sub=3
gosub *add_task
return
*task_factory4
add_task_sub=4
gosub *add_task
return
■ このスレッドは過去ログ倉庫に格納されています