IchigoJam: Worm game ― 2015年03月29日
IchigoJamは一つのプログラムに割り当てられるメモリが1KBしかなく、ちょっと複雑なプログラムをここへ納めるのはほとんど俳句の域になる。
PC-8001時代に見た「餌を食べると長くなる芋虫のゲーム」を作ってみた。カーソルキーで移動。周りの柵や自分自身にぶつかるとゲームオーバーというシンプルなもの。配列変数が100個までしか使えない関係で自分の長さが50になるとアガリで、それ以上点数は増えない。
1 REM WORM GAME 2015.3.24 10 CLS:X=0:Y=1 20 IF X<36 ?CHR$(219);:LET X,X+1:GOTO 20 30 IF Y<25 LC0,Y:?CHR$(219);:LC35,Y:?CHR$(219);:LET Y,Y+1:GOTO 30 40 X=0:LC X,25 50 IF X<36 ?CHR$(219);:LET X,X+1:GOTO 50 60 L=2:H=2:T=0:M=1:N=0 70 LET [0],18,19,20 80 LET [50],12,12,12 100 J=0 110 IF J0 GOTO 135 138 ? "&"; 140 K=INKEY():IF (K>31)+(K<28) GOTO 190 150 M=-(K==28)+(K==29) 160 N=-(K==30)+(K==31) 190 LC [H],[H+50]:?CHR$(219); 200 LC [T],[T+50]:? " "; 210 LET [T],[H]+M:LET[T+50],[H+50]+N:LET H,T:LET T,T+1 220 IF T>L LET T,0 230 LC [H],[H+50]:W=VPEEK() 240 ? CHR$(1); 250 IF W==38 LET L,L+(L<49):LET[L],[T]:LET[L+50],[T+50]:BEEP1:GOTO 130 260 IF W==219 GOTO 280 270 GOTO 140 280 LC 13,13:? "GAME OVER"; 290 J=0:X=[H]:Y=[H+50] 300 IF J<30 LET J,J+1:LC X,Y:?"*";:BEEP1:LC X,Y:? "+";:GOTO 300 310 LC 10,15:? "PRESS SPACE KEY"; 320 IF INKEY()<>ASC(" ") GOTO 320 330 GOTO 10
ソースコードを載せたり、Youtubeの動画をブログに張り込んだりする練習を兼ねてこのエントリを書いてみた。
2015.4.1 追記:エサを食べた時に囲いが消えることがあるバグがあったので修正。
コメント
トラックバック
このエントリのトラックバックURL: http://miscellany.asablo.jp/blog/2015/03/29/7599498/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。