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

プチコン3号


参考資料

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

跳べ、跳べ!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座標で判定して居ます)。

プログラムの説明

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

0000001OPTION STRICT
0000002ACLS
0000003DIM B.X=184,Y=200,AC=0,ST=0,C=0,N=0
0000004SPSET 0,636
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,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
0000036WEND
0000037ACLS:END




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

Copyright © King of Squid, All rights reserved.