
参考資料
§ 基本アクション(スプライト移動) §
跳べ、跳べ!1
ボタンの押し下げ状態、変数のインクリメントとデクリメント、アニメーション
前出の『歩け、歩け!』に記述して居ますので、参照して下さい。
ジャンプ
此のジャンプは、必ず一定の高さ迄、跳び上がるジャンプです。状態フラグSTで、歩行時(値0)と、ジャンプ時(値1)を区別します。
先ず、歩行時に
ボタンが押されると、ジャンプ時に設定して、速度ACを初速度に設定します(値が大きい程、高く跳び上がります)。
B=BUTTOPN(0)
IF ST==0 && ((B AND 16)>0) THEN
ST=1:AC=15
ENDIF
次に、ジャンプ時なら、速度ACに重力加速度(下記のプログラムでは0.98)の影響を与え、其れを縦位置(Y座標)に反映させます(重力加速度の値を調節する事に依り、跳躍距離や跳躍速度を変化させる事が出来ます)。
IF ST==1 THEN
DEC AC,0.98
DEC Y,AC
ENDIF
最期に、地面に到達すれば、状態フラグを歩行時(0)に戻します(下記のプログラムではY座標で判定して居ます)。
プログラムの説明
下記のプログラムでは、スプライトが、
ボタンで左右に動き、
ボタンでジャンプします。
| 0000001 | OPTION STRICT |
| 0000002 | ACLS |
| 0000003 | DIM B.X=184,Y=200,AC=0,ST=0,C=0,N=0 |
| 0000004 | SPSET 0,636 |
| 0000005 | SPSCALE 0,2,2 |
| 0000006 | SPOFS 0,X,Y |
| 0000007 | GFILL 0,232,399,239,RGB(0,255,0) |
| 0000008 | |
| 0000009 | LOCATE 17,1:PRINT "PUSH X TO FINISH" |
| 0000010 | |
| 0000011 | WHILE TRUE |
| 0000012 | IF B AND 64 THEN BREAK |
| 0000013 | IF B AND 4 THEN |
| 0000014 | DEC X:SPCHR 0,644+N |
| 0000015 | ENDIF |
| 0000016 | IF B AND 8 THEN |
| 0000017 | INC X:SPCHR 0,636+N |
| 0000018 | ENDIF |
| 0000019 | IF X<0 THEN X=0 |
| 0000020 | IF X>366 THEN X=366 |
| 0000021 | IF ST==0 && ((B AND 16)>0) THEN |
| 0000022 | ST=1:AC=15 |
| 0000023 | ENDIF |
| 0000024 | IF ST==1 THEN |
| 0000025 | GPSET X,Y,#RED |
| 0000026 | DEC AC,0.98 |
| 0000027 | DEC Y,AC |
| 0000028 | IF Y>200 THEN Y=200:ST=0 |
| 0000029 | ENDIF |
| 0000030 | INC C |
| 0000031 | IF (C DIV 10)==1 THEN |
| 0000032 | C=0:INC N:IF N>3 THEN N=0 |
| 0000033 | ENDIF |
| 0000034 | SPOFS 0,X,Y |
| 0000035 | VSYNC 1 |
| 0000036 | WEND |
| 0000037 | ACLS:END |
