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

プチコン3号


参考資料

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

飛べ、飛べ!

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

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

飛行

飛行は、基本的に遊泳と同じです。『跳べ、跳べ!1』や『泳げ、泳げ!』に記述して居ますので、参照して下さい。

但し、遊泳とは異なり、何時でも上昇出来る訳ではなく、下降中に微妙なタイミングで再上昇が出来る様に変更して居ます。此のタイミングは、更に調整する必要が有ります。

プログラムの説明

下記のプログラムでは、スプライトが、 ボタンで左右に動き、 ボタンでダッシュします。 ボタンで、歩行時はジャンプ、ダッシュ時は飛行します。亦、飛行時に、下降のタイミングで ボタンを押すと再上昇します。

猶、遊泳中の画像と共に、飛行中の画像も、標準画像に無かったので、新たに作成しました(スーパーマリコと謂います)。

0000001OPTION STRICT
0000002ACLS
0000003DIM B,X=184,Y=184,C=0,N=0
0000004DIM DS=1,AC=0,ST=0,DR=0,FL=0
0000005
0000006LOAD "GRP4:SP_MARIKO",0
0000007
0000008'MANTLE MARIKO LEFT
0000009SPDEF 0,256,16,32,32
0000010SPDEF 1,288,16,32,32
0000011SPDEF 2,320,16,32,32
0000012SPDEF 3,352,16,32,32
0000013
0000014'MANTLE MARIKO RIGHT
0000015SPDEF 4,256,16,32,32,0,0,9
0000016SPDEF 5,288,16,32,32,0,0,9
0000017SPDEF 6,320,16,32,32,0,0,9
0000018SPDEF 7,352,16,32,32,0,0,9
0000019
0000020'MANTLE MARIKO LEFT DASH
0000021SPDEF  8, 0,352,32,32
0000022SPDEF  9,32,352,32,32
0000023SPDEF 10,64,352,32,32
0000024SPDEF 11,96,352,32,32
0000025
0000026'MANTLE MARIKO RIGHT DASH
0000027SPDEF 12, 0,352,32,32,0,0,9
0000028SPDEF 13,32,352,32,32,0,0,9
0000029SPDEF 14,64,352,32,32,0,0,9
0000030SPDEF 15,96,352,32,32,0,0,9
0000031
0000032'MANTLE MARIKO LEFT FLY
0000033SPDEF 16,128,352,32,32 'START
0000034SPDEF 17,384,352,32,40 'UP
0000035SPDEF 18,416,352,32,40 'EVEN
0000036SPDEF 19,448,352,32,40 'DOWN
0000037
0000038'MANTLE MARIKO RIGHT FLY
0000039SPDEF 20,128,352,32,32,0,0,9
0000040SPDEF 21,384,352,32,40,0,0,9
0000041SPDEF 22,416,352,32,40,0,0,9
0000042SPDEF 23,448,352,32,40,0,0,9
0000043
0000044SPSET 0,0
0000045
0000046GCLS RGB(0,255,255)
0000047GFILL 0,216,399,239,#BLUE
0000048LOCATE 17,28:PRINT PUSH X TO FINISH"
0000049
0000050WHILE TRUE
0000051  B=BUTTON(0)
0000052  
0000053  'QUIT
0000054  IF B AND 64 THEN BREAK
0000055  
0000056  'DASH
0000057  IF B AND 32 THEN
0000058    DS=DS*1.2:IF DS>3 THEN DS=3
0000059  ELSE
0000060    DS=1
0000061  ENDIF
0000062  
0000063  'MOVE LEFT
0000064  IF B AND 4 THEN
0000065    DEC X,DS:DR=0
0000066    IF ST<3 THEN
0000067      IF DS<2 THEN
0000068        SPCHR 0,0+N
0000069      ELSE
0000070        SPCHR 0,8+N
0000071      ENDIF
0000072    ELSE
0000073      IF ST<5 THEN
0000074        SPCHR 0,16+DR
0000075      ELSE
0000076        SPCHR 0,19+DR
0000077      ENDIF
0000078    ENDIF
0000079  ENDIF
0000080  
0000081  'MOVE RIGHT
0000082  IF B AND 48 THEN
0000083    INC X,DS:DR=4
0000084    IF ST<3 THEN
0000085      IF DS<2 THEN
0000086        SPCHR 0,4+N
0000087      ELSE
0000088        SPCHR 0,12+N
0000089      ENDIF
0000090    ELSE
0000091      IF ST<5 THEN
0000092        SPCHR 0,16+DR
0000093      ELSE
0000094        SPCHR 0,19+DR
0000095      ENDIF
0000096    ENDIF
0000097  ENDIF
0000098  
0000099  IF X<0 THEN X=0
0000100  IF X>366 THEN X=366
0000101  
0000102  'START TO JUMP OR FLY
0000103  IF B AND 16 THEN
0000104    IF ST==0 THEN
0000105      IF DS<2 THEN
0000106        ST=1
0000107      ELSE
0000108        ST=3:SPCHR 0,16+DR
0000109      ENDIF
0000110    ENDIF
0000111    IF ST==1 THEN
0000112      INC AC,2:IF AC>10 THEN AC=10:ST=2
0000113    ELSEIF ST==3 THEN
0000114      INC AC,2:IF AC>13 THEN AC=13:ST=4
0000115    ELSEIF ST==5 THEN
0000116      IF FL==0 THEN
0000117        SPCHR 0,17+DR
0000118        INC AC,5:IF AC>8 THEN AC=8
0000119        WAIT 10:FL=1
0000120        SPCHR 0,19+DR
0000121      ENDIF
0000122    ENDIF
0000123  ELSE
0000124    IF FL>10 THEN FL=0
0000125    IF ST==1 || ST==3 THEN INC ST
0000126  ENDIF
0000127  
0000128  'JUMPING & FALLING
0000129  IF ST==1 || ST==2 THEN
0000130    GPSET X+16,Y+16,#RED
0000131    DEC AC,0.98
0000132    DEC Y,AC
0000133    IF Y>=184 THEN Y=184:ST=0:SPCHR 0,0+DR
0000134  ENDIF
0000135  
0000136  'FLYING & FALLING
0000137  IF ST>2 && ST<6 THEN
0000138    GPSET X+16,Y+16,#RED
0000139    IF ABS(AC)<0.3 THEN
0000140      SPCHR 0,17+DR:WAIT 5:ST=5:AC=-0.4
0000141    ENDIF
0000142    IF AC>0 THEN
0000143      DEC AC,0.49
0000144    ELSE
0000145      DEC AC,0.08:SPCHR 0,19+DR
0000146    ENDIF
0000147    DEC Y,AC
0000148    IF DR==0 THEN DEC X,2 ELSE INC X,2
0000149    IF Y>=176 THEN Y=184:ST=0:SPCHR 0,0+DR
0000150  ENDIF
0000151  
0000152  IF FL>0 THEN INC FL:IF FL>100 THEN FL=0
0000153  INC C,DS
0000154  IF (C DIV 10)==1 THEN
0000155    C=0:INC N:IF N>3 THEN N=0
0000156  ENDIF
0000157  
0000158  SPOFS 0,X,Y
0000159  VSYNC 1
0000160WEND
0000161ACLS:END




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

Copyright © King of Squid, All rights reserved.