http://homepage2.nifty.com/kasayan/bindex.htm
上記ページを参考に DarkBASICに移植してみました。
Rem UFO-GAME rem 初期設定 sync on : sync rate 60 set display mode 640,480,16 set text font "MS ゴシック",128 set text size 16 rem イメージ読み込み cls : print "-<T>-" :get image 1,0,0,42,16 cls : print "<UFO>" :get image 2,0,0,47,16 cls : print "I" :get image 3,0,0,5,16 cls : print "*" :get image 4,0,0,8,16 cls
x=300 : y=400 :` x、y 自機の座標 ・ m=0 : ` ミサイル存在フラグ mx=0 : my=0 ` mx、my ミサイル座標
randomize timer() ex=20 : ey=int(rnd(300))+20 :` ex,ey 敵座標
sprite 2,ex,ey,2 sprite 3,600,600,3
rem main loop ゲームループ do set cursor 0,0: print "KEY操作 ←左 →右 ↑ミサイル発射";" 自機 <T> を操り 敵 <UFO>を撃つゲーム" gosub _houdai if m=1 then gosub _tama ` m=0 ミサイル未発射、ミサイル移動ルーチンにはいかない、 m=1 ミサイル発射中へ行へ gosub _teki gosub _hantei sync ` 同期 ここで一括して画面を描く。 loop
rem 以下サブルーチン
_houdai: ` 自機の移動、ミサイル発射 if leftkey()=1 and x>1 then x=x-1 if rightkey()=1 and x<600 then x=x+1 if upkey()=1 and m=0 then mx=x+20 : my=400 : m=1 sprite 1,x,y,1 return
_tama:` ミサイル移動ルーチン my=my-1 if my<2 then mx=600 : my=600 : m=0 : `上までいったらミサイル終了。m=0に戻す sprite 3,mx,my,3 return
_teki: ` 敵移動ルーチン ex=ex+1 if ex>600 then ex=0 : ey=int(rnd(300))+20 `端までいったら新座標 sprite 2,ex,ey,2 return
_hantei: `当たり判定 if sprite collision(3,2)=1 then gosub _theEnd : end :` 当たり判定 return
_theEnd: `当たりの時の処理 sprite 4,mx,my,4 set cursor 0,200 print "大当たり THE END" print "HIT ANY KEY" sync wait key return
なにかあれば どうぞ