パックマンっぽいデモに当たり判定を追加しました。
パワーエサも追加しました。取ると、モンスターが白くなって逃げます。
これで完成のつもりです。
絶対値を求めるために新しく搭載した「ABS」関数を使っています。今回のファームのバージョンアップ(nicobas20080826.zip)で追加しました。
プログラム(sample/pacpac3.txt)
DIM D(24):DIM M(14):DIM X1(4):DIM Y1(4) X1(0)=0:Y1(0)=-1 X1(1)=1:Y1(1)=0 X1(2)=0:Y1(2)=1 X1(3)=-1:Y1(3)=0 D(0)=&B1001 D(1)=&B1001 D(2)=&B1111 D(3)=&B0110 D(4)=&B0111 D(5)=&B1100 D(6)=&B1100 D(7)=&B0111 D(8)=&B0110 D(9)=&B1111 D(10)=&B1001 D(11)=&B1001 D(12)=&B1010 D(13)=&B0011 D(14)=&B0011 D(15)=&B1110 D(16)=&B0110 D(17)=&B1111 D(18)=&B1111 D(19)=&B1111 D(20)=&B0000 D(21)=&B0110 D(22)=&B1001 D(23)=&B1111 FOR I=0 TO 23 D(I)=D(I)<<12 NEXT M(0)= &B111111111111111 M(1)= &B100000000000001 M(2)= &B101111101111101 M(3)= &B101000000000101 M(4)= &B101011101110101 M(5)= &B101010000010101 M(6)= &B100010111010101 M(7)= &B100000000000001 M(8)= &B101011111110101 M(9)= &B101000000000101 M(10)= &B101111101111101 M(11)= &B100000000000001 M(12)= &B111111111111111 M(13)=0 *START CLS DT=0 FOR Y=0 TO 25 STEP 5 FOR X=0 TO 30 STEP 5 I=X:J=Y:K=3:GOSUB *KABECK IF KABE THEN LINE X,Y,X,Y+5,1 I=X:J=Y:K=0:GOSUB *KABECK IF KABE THEN LINE X,Y,X+5,Y,1 K=2 IF X%30=0 THEN IF Y%25=0 THEN K=3 LINE X+2,Y+2,X+K,Y+K,1,BF DT=DT+1 NEXT NEXT LINE 35,0,35,30,1 LINE 0,30,35,30,1 PW=0:G=16 X=16:Y=16:H=3:C=0 W=16:V=6:T=2:B=0 F=0 WHILE F<2 IF F THEN BITMAP D(H*4),X,Y,4,2 IF C=0 THEN I=X+1:J=Y+1 IF POINT(I,J) THEN IF POINT(I+1,J) THEN PW=30 LINE I,J,I+1,J+1,0,BF DT=DT-1:IF DT=0 THEN F=2 ENDIF IF SW=0 THEN K=H IF SW=1 THEN K=0 IF SW=8 THEN K=1 IF SW=2 THEN K=2 IF SW=4 THEN K=3 I=X:J=Y GOSUB *KABECK IF KABE=0 THEN H=K:C=5 ENDIF IF C THEN X=X+X1(H):Y=Y+Y1(H) C=C-1 ENDIF BITMAP D(H*4),X,Y,4,2 IF F THEN BITMAP D(G),W,V,4,2 IF B=0 THEN IF ABS(X-W)<5 THEN IF ABS(Y-V)<5 THEN IF PW THEN W=16:V=6 ELSE F=2 ENDIF ENDIF ENDIF I=W:J=V IF RND%4 THEN IF RND%2 THEN K=1:IF W>X THEN K=3 ELSE K=2:IF V>Y THEN K=0 ENDIF ELSE K=T K=RND%4 ENDIF G=16:IF PW THEN G=20 PW=PW-1 K=K+2 % 4 ENDIF GOSUB *KABECK IF KABE=0 THEN T=K:B=5 ENDIF IF B THEN W=W+X1(T):V=V+Y1(T) B=B-1 ENDIF BITMAP D(G),W,V,4,2 REM IF F=0 THEN F=1 WEND FOR I=0 TO 3000 NEXT GOTO *START *KABECK J=J/5*2+1+Y1(K) I=I/5*2+1+X1(K) KABE= &H4000 >> I AND M(J) RETURN
、、、これで1985バイト。2Kの内部EEPROMに一杯です。
早くも1チップの容量の限界が見えました。
容量2Kの中でどれだけできるかを追求していくのが普通の楽しみ方かと思うのですが、逆にハードを延々とパワーアップさせていくという楽しみ方もあります。
・外部EEPROMにする(128KB)
・外部RAMにする(64KB〜32KB)
基板上にはすでに両方拡張できるように作ってあります。
ちなみに昔投稿した「ニルナノーグ」は、8KBでした。