IchigoJam: Worm game2015年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の入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://miscellany.asablo.jp/blog/2015/03/29/7599498/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。