;四角い謎の物体の弾発射
screen 0,300,400,1 ;パレットモードの方がとりあえず早い
jx=130 ;自機の初期位置x
jy=180 ;自機の初期位置y
jsizex=40 ;自機の大きさx
jsizey=40 ;自機の大きさy
jtm=100 ;自弾の最大数
jtmsizex=10 ;自弾の大きさx
jtmsizey=10 ;自弾の大きさy
dim jtmc,jtm ;自弾の表示フラグ
dim jtmx,jtm ;自弾の位置x
dim jtmy,jtm ;自弾の位置y
jtmno=0 ;次の弾のナンバー
*mainloop
redraw 0 ;描画ストップ
color : boxf ;背景塗りつぶし
gosub *keycheck
gosub *jdraw
gosub *jtmdraw
redraw 1 ;再描画
await 1 ;ウェイトを入れておかないとキー取得が出来ない。入れないと止まる
goto *mainloop
*jdraw
color ,255 : boxf jx,jy,jx+jsizex,jy+jsizey ;■の描画
return
*jtmdraw
repeat jtm
if jtmc.cnt=1 {
jtmy.cnt-2 ;上方向へ移動
if jtmy.cnt<(-jtmsizey) : jtmc.cnt=0 ;上端までいったらフラグをオフにする
color 255 : boxf jtmx.cnt,jtmy.cnt,jtmx.cnt+jtmsizex,jtmy.cnt+jtmsizey ;自弾の描画
}
loop
return
*keycheck
stick ky,15,1
if ky!=0 {
if ky&1 {
jx-- : if jx<0 : jx=0 ;画面外へ行かないように
}
if ky&2 {
jy-- : if jy<0 : jy=0
}
if ky&4 {
jx++ : if jx>(winx-jsizex) : jx=winx-jsizex
}
if ky&8 {
jy++ : if jy>(winy-jsizey) : jy=winy-jsizey
}
if ky&16 {
jtmc.jtmno=1 ;自弾表示ON
jtmx.jtmno=jsizex-jtmsizex/2+jx ;自機の真ん中
jtmy.jtmno=jy ;自機の先端
jtmno++ : if jtmno=jtm : jtmno=0 ;次の弾へ
}
}
return
|