
参考資料
§ 罠(TRAP) §
スプライトは、SPANIMステートメントでアニメーションを設定する事が出来ます。亦、SPCOLステートメントとSPHITSP関数を使用する事でスプライト同士の衝突判定を簡単に行う事が出来ます。
下記のプログラムでは、ダンジョンの罠(トラップ)を実現して居ます。キャラクタは、
ボタンで左右に動き、
ボタンでジャンプし、
ボタンでダッシュします。
ボタンで何度でも挑戦出来ます。終了するには、キーボード画面の STOP をタップして下さい。
| 0000001 | OPTION STRICT |
| 0000002 | ACLS |
| 0000003 | DIM I,B,X,Y,N,A,S,D |
| 0000004 | |
| 0000005 | GFILL 0,0,399,239,RGB(128,0,0) |
| 0000006 | |
| 0000007 | FOR I=0 TO 11 |
| 0000008 | BGPUT 0,I,13,614 |
| 0000009 | BGPUT 0,I,14,646 |
| 0000010 | BGPUT 0,I+13,13,614 |
| 0000011 | BGPUT 0,I+30,14,646 |
| 0000012 | NEXT |
| 0000013 | |
| 0000014 | SPSET 0,496 |
| 0000015 | SPOFS 0,10,192 |
| 0000016 | |
| 0000017 | SPSET 1,1346 |
| 0000018 | SPOFS 1,192,224 |
| 0000019 | SPANIM 1,"I",10,1347,10,1346,0 |
| 0000020 | SPANIM 1,"XY",-30,192,0,-30,192,224 |
| 0000021 | |
| 0000022 | SPSET 2,1250 |
| 0000023 | SPOFS 2,100,0 |
| 0000024 | SPANIM 2,"XY",-50,100,100,-20,100,192,-50,100,0,0 |
| 0000025 | SPSET 3,1250 |
| 0000026 | SPOFS 3,220,0 |
| 0000027 | SPANIM 3,"XY",-60,220,100,-20,220,192,-50,220,0,0 |
| 0000028 | SPSET 4,1250 |
| 0000029 | SPOFS 4,320,0 |
| 0000030 | SPANIM 4,"XY",-70,320,100,-20,320,192,-50,320,0,0 |
| 0000031 | |
| 0000032 | SPCOL 0 : SPCOL 1 : SPCOL 2 |
| 0000033 | SPCOL 3 : SPCOL 4 |
| 0000034 | |
| 0000035 | @START |
| 0000036 | X=10 : Y=192 : N=0 : A=0 : S=0 : D=1 |
| 0000037 | WHILE TRUE |
| 0000038 | B=BUTTON(0) |
| 0000039 | IF B AND 64 THEN BREAK |
| 0000040 | IF B AND 32 THEN |
| 0000041 | D=D*1.2 : IF D>5 THEN D=5 |
| 0000042 | ELSE |
| 0000043 | D=1 |
| 0000044 | ENDIF |
| 0000045 | IF B AND 4 THEN |
| 0000046 | DEC X,D : IF X<0 THEN X=0 |
| 0000047 | SPCHR 0,504+N |
| 0000048 | END IF |
| 0000049 | IF B AND 8 THEN |
| 0000050 | INC X,D : IF X>383 THEN X=383 |
| 0000051 | SPCHR 0,496+N |
| 0000052 | ENDIF |
| 0000053 | IF S==0 && (B AND 16)>0 THEN |
| 0000054 | S=1 : A=10 |
| 0000055 | ENDIF |
| 0000056 | IF S==1 THEN |
| 0000057 | DEC A,0.98 |
| 0000058 | DEC Y,A : IF Y>192 THEN Y=192 : S=0 |
| 0000059 | ENDIF |
| 0000060 | SPOFS 0,X,Y |
| 0000061 | IF SPHITSP(0)>0 THEN BREAK |
| 0000062 | IF BGGET(0,X,Y+16,1)!=614 THEN |
| 0000063 | SPANIM 0,"XY",-10,X,240,1 |
| 0000064 | BREAK |
| 0000065 | ENDIF |
| 0000066 | INC N : IF N>3 THEN N=0 |
| 0000067 | VSYNC 1 |
| 0000068 | WEND |
| 0000069 | LOCATE 18,10 : PRINT "PUSH A BUTTON!" |
| 0000070 | REPEAT |
| 0000071 | B=BUTTON(0) |
| 0000072 | UNTIL (B AND 16)>0 |
| 0000073 | CLS : GOTO @START |