1 CLS:CLV:CLP:W=~0:LET[0],W,W,W,W,W,W,W,W,W,W,W,W,#FFF,0,#E00,#F000,0,W,W,#543F,#152,0,0,#F050,W,W,W,#534F,W,W,W,W,W,W,W,W,W,W,W,W 2 FORX=0TO17:LCX,0:?CHR$(3):LCX,11:?CHR$(3):NEXT:FORY=1TO10:LC0,Y:?CHR$(3):LC17,Y:?CHR$(3):NEXT 3 X=0:Y=0:FORA=0TO9:FORB=0TO3:M=[A*4+B]:FORZ=0TO3:C=M>>(Z*4)&15:LC1+B*4+Z,1+A:?CHR$(!!C*(223+C-(C=15)*235+(C=5)*27)):R=R+(C=5):C=C-14:X=!C*(1+B*4+Z)+!!C*X:Y=!C*(1+A)+!!C*Y:NEXT:NEXT:NEXT 4 GSB9:LCX,Y:?CHR$(237):IF!RENDELSEK=INKEY():IF!KCONTELSEIFK=32BEEP:GOTO5ELSEH=(K=29)-(K=28):V=(K=31)-(K=30):LCX,Y:?CHR$(0):X=X+H:Y=Y+V:F=SCR(X,Y):IFF&&F<>255X=X-H:Y=Y-V:CONTELSEBEEP:R=R-(F=255):CONT 5 P=X+H:Q=Y+V:F=SCR(P,Q):IFF&~3<>224GOTO4 6 G=F&3:L=(G=1)-!G:W=(G=3)-(G=2):D=SCR(P+L,Q+W):C=!G*(H=-1)+(G=1)*(H=1)+(G=2)*(V=-1)+(G=3)*(V=1):IFABS(F-D)*(F&2=D&2)*C=1GOTO4 7 IFDIFCBEEP:LCP,Q:?CHR$(0):GOTO4ELSEGOTO4 8 LCP,Q:?CHR$(0):P=P+L:Q=Q+W:D=SCR(P+L,Q+W):IFDLCP,Q:?CHR$(F):GOTO4ELSECONT 9 LC0,12:?"ICHIGO FIELDS.":?"LEFT FRUITS ";R;". PHASE ";N+1;".":RTN
マップデータは1行目で定義しています。
[0]~[39]
に1ニブル(4bit)をひとます分として定義してあります。
値と対応するキャラクターは下表のようになっています。 IchigoJamのコードを短くするためにフルーツフィールド for PC-6001mkIIとは違っています。 一緒にすればコピペでマップを持ち込めたんですけれどねえ。
値 | キャラクター |
---|---|
0 | 空白 |
1 | ← |
2 | → |
3 | ↑ |
4 | ↓ |
5 | イチゴ |
14 | REMくん |
15 | 壁 |
マップデータこそ一面分しかありませんが、ゲームのロジックはすべて実装されていますので、そう考えると、IchigoJamもなかなかのものじゃないかと思います。