烏賊先生のプログラミング道場

プチコン3号


参考資料

§ 基本アクション(スプライト移動) §

跳べ、跳べ!2

ボタンの押し下げ状態、変数のインクリメントとデクリメント、アニメーション

前出の『歩け、歩け!』に記述して居ますので、参照して下さい。

ジャンプ

此のジャンプは、 ボタンを押す時間に依り、跳躍距離が調整されるジャンプです。状態フラグSTで、歩行時(値0)と、ジャンプ時(値1)と、落下時(値2)を区別します。

ボタンが押されて居る時、落下時でなければ(ST<2の時)、ジャンプ時に設定して、速度ACを、上限値に達する迄、増加させ、上限値に達すると、状態フラグを落下時に設定します。

B=BUTTOPN(0)
IF B AND 16 THEN
  IF ST≶2 THEN
    ST=1:INC A,2:IF AC>14 THEN AC=14:ST=2
  ENDIF
ELSE
  IF ST==1 THEN ST=2
ENDIF

次に、ジャンプ時や、落下時なら、速度ACに重力加速度(下記のプログラムでは0.98)の影響を与え、其れを縦位置(Y座標)に反映させます(重力加速度の値を調節する事に依り、跳躍距離や跳躍速度を変化させる事が出来ます)。

IF ST>0 THEN
  DEC AC,0.98
  DEC Y,AC
ENDIF

最期に、地面に到達すれば、状態フラグを歩行時(0)に戻します(下記のプログラムではY座標で判定して居ます)。

プログラムの説明

下記のプログラムでは、スプライトが、 ボタンで左右に動き、 ボタンでジャンプします。

0000001OPTION STRICT
0000002ACLS
0000003DIM B.X=184,Y=200,AC=0,ST=0,C=0,N=0
0000004SPSET 0,660
0000005SPSCALE 0,2,2
0000006SPOFS 0,X,Y
0000007GFILL 0,232,399,239,RGB(0,255,0)
0000008
0000009LOCATE 17,1:PRINT "PUSH X TO FINISH"
0000010
0000011WHILE TRUE
0000012  IF B AND 64 THEN BREAK
0000013  IF B AND 4 THEN
0000014    DEC X:SPCHR 0,664+N
0000015  ENDIF
0000016  IF B AND 8 THEN
0000017    INC X:SPCHR 0,656+N
0000018  ENDIF
0000019  IF X<0 THEN X=0
0000020  IF X>366 THEN X=366
0000021  IF B AND 16 THEN
0000022    IF ST<2 THEN
0000023      ST=1:INC AC,2:IF AC>14 THEN AC=14:ST=2
0000024    ENDIS
0000025  ELSE
0000026    IF ST==1 THEN ST=2
0000027  ENDIF
0000028  IF ST>0 THEN
0000029    GPSET X,Y,#RED
0000030    DEC AC,0.98
0000031    DEC Y,AC
0000032    IF Y>200 THEN Y=200:ST=0
0000033  ENDIF
0000034  INC C
0000035  IF (C DIV 10)==1 THEN
0000036    C=0:INC N:IF N>3 THEN N=0
0000037  ENDIF
0000038  SPOFS 0,X,Y
0000039  VSYNC 1
0000040WEND
0000041ACLS:END





ゲームプログラミング道場 ニンテンドー3DS Smile BASIC  Visual Basic,Visual C#

Copyright © King of Squid, All rights reserved.