パックマンっぽい表示デモ3

パックマンっぽいデモに当たり判定を追加しました。
パワーエサも追加しました。取ると、モンスターが白くなって逃げます。
これで完成のつもりです。
http://nicotak.com/nicobasic/edu2/pacpac3.gif

絶対値を求めるために新しく搭載した「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でした。