
参考資料
§ 基本アクション(スプライト移動) §
弾め、弾め!
ボタンの押し下げ状態、変数のインクリメントとデクリメント、アニメーション
前出の『歩け、歩け!』に記述して居ますので、参照して下さい。
ジャンプ
前出の『跳べ、跳べ!2』に記述して居ますので、参照して下さい。但し、状態フラグを、跳躍フラグJPと落下フラグFLに別けて居ます。
バウンド
落下時に、地面に到達すれば、速度ACの符号を反転させて減少させます(負の値を乗算する)。速度の絶対値がが一定の値未満に成れば、バウンドを終了します(下記のプログラムでは、画面の上端に達すると、強制的に落下モードに仕て居ます)。
IF Y<0 THEN
JP=0:FL=1
ELSEIF Y>=216 THEN
Y=216:AC=AC*(-0.65)
IF ABS(AC)<1 THEN JP=0:FL=0
ENDIF
スプライトの回転
SPROTステートメントを使用すると、スプライトを回転する事が出来ます。
プログラムの説明
下記のプログラムでは、スプライトが、
ボタンで左右に動き、 ボタンでダッシュし、
ボタンでジャンプします。
| 0000001 | OPTION STRICT |
| 0000002 | ACLS |
| 0000003 | DIM X,Y,AC,JP,FL,DS,B,A |
| 0000004 | SPSET 0,339 |
| 0000005 | SPHOME 0,8,8 |
| 0000006 | SPSCALE 0,2,2 |
| 0000007 | GFILL 0,232,399,239,RGB(0,255,0) |
| 0000008 | |
| 0000009 | X=184:Y=216:AC=0:JP=0:FL=0:DS=1:A=0 |
| 0000010 | SPOFS 0,X,Y |
| 0000011 | |
| 0000012 | LOCATE 17,1:PRINT "PUSH X TO FINISH" |
| 0000013 | |
| 0000014 | WHILE TRUE |
| 0000015 | B=BUTTON(0) |
| 0000016 | |
| 0000017 | 'QUIT |
| 0000018 | IF B AND 64 THEN BREAK |
| 0000019 | |
| 0000020 | 'DASH |
| 0000021 | IF B AND 32 THEN |
| 0000022 | DS=DS*1.2:IF DS>5 THEN DS=5 |
| 0000023 | ELSE |
| 0000024 | DS=1 |
| 0000025 | ENDIF |
| 0000026 | |
| 0000027 | 'LEFT MOVE |
| 0000028 | IF B AND 4 THEN |
| 0000029 | DEC X,DS:DEC A,3*DS:IF A<0 THEN A=359 |
| 0000030 | ENDIF |
| 0000031 | |
| 0000032 | 'RIGHT MOVE |
| 0000033 | IF B AND 8 THEN |
| 0000034 | INC X,DS:INC A,3*DS:IF A>359 THEN A=0 |
| 0000035 | ENDIF |
| 0000036 | |
| 0000037 | IF X<0 THEN X=0 |
| 0000038 | IF X>366 THEN X=366 |
| 0000039 | |
| 0000040 | 'JUMP |
| 0000041 | IF !FL THEN |
| 0000042 | IF B AND 16 THEN |
| 0000043 | JP=1:DEC AC:IF AC<-10 THEN AC=-10:FL=1 |
| 0000044 | ELSE |
| 0000045 | IF JP THEN FL=1:JP=0 |
| 0000046 | ENDIF |
| 0000047 | ENDIF |
| 0000048 | |
| 0000049 | IF JP || FL THEN |
| 0000050 | INC AC,0.7 |
| 0000051 | INC Y,AC |
| 0000052 | IF Y<0 THEN |
| 0000053 | JP=0:FL=1 |
| 0000054 | ELSEIF Y>=216 THEN |
| 0000055 | Y=216:AC=AC*(-0.65) |
| 0000056 | IF ABS(AC)<1 THEN JP=0:FL=0 |
| 0000057 | ENDIF |
| 0000058 | ENDIF |
| 0000059 | |
| 0000060 | SPOFS 0,X,Y |
| 0000061 | SPROT 0,A |
| 0000062 | |
| 0000063 | VSYNC 1 |
| 0000064 | WEND |
| 0000065 | ACLS:END |
