皆さんあけましておめでとうございます<(_ _)>
本年も時々で良いですからこのブログをご鑑賞下さい。
今年は寒い寒波が来て下呂市でも大雪です。
はあ、新年からの仕事雪よけで大変そうです(^^;)
さて、大晦日の夜に家にこもってN88BASICの互換ソフトでシューティングゲームの簡単なプログラムを作成していました、今日ようやく完成で新年の一発目から公開です。
WinXPで動かしてコツコツやっていました。
こんな環境で作りました。
例によってエミュなので実機で動くのか分かりませんが(^^;)
走らせている様子です。
オープニング画面です。
スペースキーで始まります。
カーソルの右左で下の”=”が自分です、
”o”が敵機でスペースキーで弾丸が撃てます。
敵機に自分が当たると右のBoobで何回敵に当たったか数字で出ます。
と言う簡単なシューティングです(^^;)
なんかテキストでしょぼい物ですが・・・。
ソースコードはこうなっています。
-----------------------------------------------------------------------------
10 'N88Basic syutenng game 2021 bytatuakicado(2021)
20 cls:defint a-z dim teki(11),xio(11):ko=0:yii=1
30 gosub 420
40 gosub 150:goto 190
50 A$=inkey$
60 if A$=chr$(&h1C) then x=x+1
70 if A$=chr$(&h1D) then x=x-1
80 if A$=" " then ko=1
90 locate xp,10:print " ";
100 locate x,10:print "=";
110 locate 15,5:print "boob!!",gg
120 xp=x
130 if ko=1 then gosub 280
140 return
150 for xi=1 to 10
160 if int(rnd*3)+1=3 then teki(xi)=1
170 next xi
180 return
190 tim=tim+1:if tim=>10 then tim=0:yii=yii+1
200 if yii=>10 then gosub 370:gosub 150:yii=1:for i=0 to 10:locate i,9:print " ";:next i
210 for xii=1 to 10
220 for xio=1 to 10:locate xio,yii-1:print " ";
230 next xio
240 gosub 50
250 if teki(xii)=1 then xio(xii)=xii:locate xii,yii:print "o";
260 next xii
270 goto 190
280 if yoo=<0 then yoo=10:ko=0
290 yoo=yoo-1:gosub 330
300 locate x,yoo:print ".";
310 locate x,yoo+1:print " ";
320 return
330 for xiio=1 to 10
340 if xio(xiio)=x and yii=yoo and teki(xiio)=1 then locate xio(xiio),yii:print " ";:teki(xiio)=0:goto 150
350 next xiio
360 return
370 for xiio=1 to 10
380 if xio(xiio)=x and teki(xiio)=1 then gg=gg+1
390 next xiio
400 for xiio=1 to 10:xio(xiio)=0:teki(xiio)=0:next xiio
410 return
420 locate 2,5:print" シューテイングゲーム "
430 for i=0 to 10000:next i
440 locate 2,5:print" "
450 for i=0 to 10000:next i
460 locate 3,7:print " PUSH SPASE !! "
470 in$=inkey$
480 if in$=" " then cls:goto 40 else 420
490 return
--------------------------------------------------------------------------------------------
20 cls:defint a-z dim teki(11),xio(11):ko=0:yii=1
30 gosub 420
40 gosub 150:goto 190
50 A$=inkey$
60 if A$=chr$(&h1C) then x=x+1
70 if A$=chr$(&h1D) then x=x-1
80 if A$=" " then ko=1
90 locate xp,10:print " ";
100 locate x,10:print "=";
110 locate 15,5:print "boob!!",gg
120 xp=x
130 if ko=1 then gosub 280
140 return
150 for xi=1 to 10
160 if int(rnd*3)+1=3 then teki(xi)=1
170 next xi
180 return
190 tim=tim+1:if tim=>10 then tim=0:yii=yii+1
200 if yii=>10 then gosub 370:gosub 150:yii=1:for i=0 to 10:locate i,9:print " ";:next i
210 for xii=1 to 10
220 for xio=1 to 10:locate xio,yii-1:print " ";
230 next xio
240 gosub 50
250 if teki(xii)=1 then xio(xii)=xii:locate xii,yii:print "o";
260 next xii
270 goto 190
280 if yoo=<0 then yoo=10:ko=0
290 yoo=yoo-1:gosub 330
300 locate x,yoo:print ".";
310 locate x,yoo+1:print " ";
320 return
330 for xiio=1 to 10
340 if xio(xiio)=x and yii=yoo and teki(xiio)=1 then locate xio(xiio),yii:print " ";:teki(xiio)=0:goto 150
350 next xiio
360 return
370 for xiio=1 to 10
380 if xio(xiio)=x and teki(xiio)=1 then gg=gg+1
390 next xiio
400 for xiio=1 to 10:xio(xiio)=0:teki(xiio)=0:next xiio
410 return
420 locate 2,5:print" シューテイングゲーム "
430 for i=0 to 10000:next i
440 locate 2,5:print" "
450 for i=0 to 10000:next i
460 locate 3,7:print " PUSH SPASE !! "
470 in$=inkey$
480 if in$=" " then cls:goto 40 else 420
490 return
--------------------------------------------------------------------------------------------
毎度の事ながらなんて難しい非効率なプログラムを組んでいるのか?と怒られそうなコードですが。
でも皆さんもN88BASICでコード化すると殆ど一緒になると思います。
是非、実機で走らせて下さい。
もしかしてキーコードが違うかもしれません。その時は10キーで数字を振り分けてみてはいかがでしょうか?
今回は久々にプログラム公開でした。
今年はいい年にしたいですね。
まあ人の心がけしだいですが、
どちらさんもお元気で。
そりでは(_ _)