
参考資料
§ 基本アクション(スプライト移動) §
飛べ、飛べ!
ボタンの押し下げ状態、変数のインクリメントとデクリメント、アニメーション
前出の『歩け、歩け!』に記述して居ますので、参照して下さい。
飛行
飛行は、基本的に遊泳と同じです。『跳べ、跳べ!1』や『泳げ、泳げ!』に記述して居ますので、参照して下さい。
但し、遊泳とは異なり、何時でも上昇出来る訳ではなく、下降中に微妙なタイミングで再上昇が出来る様に変更して居ます。此のタイミングは、更に調整する必要が有ります。
プログラムの説明
下記のプログラムでは、スプライトが、
ボタンで左右に動き、
ボタンでダッシュします。
ボタンで、歩行時はジャンプ、ダッシュ時は飛行します。亦、飛行時に、下降のタイミングで
ボタンを押すと再上昇します。
猶、遊泳中の画像と共に、飛行中の画像も、標準画像に無かったので、新たに作成しました(スーパーマリコと謂います)。
| 0000001 | OPTION STRICT |
| 0000002 | ACLS |
| 0000003 | DIM B,X=184,Y=184,C=0,N=0 |
| 0000004 | DIM DS=1,AC=0,ST=0,DR=0,FL=0 |
| 0000005 | |
| 0000006 | LOAD "GRP4:SP_MARIKO",0 |
| 0000007 | |
| 0000008 | 'MANTLE MARIKO LEFT |
| 0000009 | SPDEF 0,256,16,32,32 |
| 0000010 | SPDEF 1,288,16,32,32 |
| 0000011 | SPDEF 2,320,16,32,32 |
| 0000012 | SPDEF 3,352,16,32,32 |
| 0000013 | |
| 0000014 | 'MANTLE MARIKO RIGHT |
| 0000015 | SPDEF 4,256,16,32,32,0,0,9 |
| 0000016 | SPDEF 5,288,16,32,32,0,0,9 |
| 0000017 | SPDEF 6,320,16,32,32,0,0,9 |
| 0000018 | SPDEF 7,352,16,32,32,0,0,9 |
| 0000019 | |
| 0000020 | 'MANTLE MARIKO LEFT DASH |
| 0000021 | SPDEF 8, 0,352,32,32 |
| 0000022 | SPDEF 9,32,352,32,32 |
| 0000023 | SPDEF 10,64,352,32,32 |
| 0000024 | SPDEF 11,96,352,32,32 |
| 0000025 | |
| 0000026 | 'MANTLE MARIKO RIGHT DASH |
| 0000027 | SPDEF 12, 0,352,32,32,0,0,9 |
| 0000028 | SPDEF 13,32,352,32,32,0,0,9 |
| 0000029 | SPDEF 14,64,352,32,32,0,0,9 |
| 0000030 | SPDEF 15,96,352,32,32,0,0,9 |
| 0000031 | |
| 0000032 | 'MANTLE MARIKO LEFT FLY |
| 0000033 | SPDEF 16,128,352,32,32 'START |
| 0000034 | SPDEF 17,384,352,32,40 'UP |
| 0000035 | SPDEF 18,416,352,32,40 'EVEN |
| 0000036 | SPDEF 19,448,352,32,40 'DOWN |
| 0000037 | |
| 0000038 | 'MANTLE MARIKO RIGHT FLY |
| 0000039 | SPDEF 20,128,352,32,32,0,0,9 |
| 0000040 | SPDEF 21,384,352,32,40,0,0,9 |
| 0000041 | SPDEF 22,416,352,32,40,0,0,9 |
| 0000042 | SPDEF 23,448,352,32,40,0,0,9 |
| 0000043 | |
| 0000044 | SPSET 0,0 |
| 0000045 | |
| 0000046 | GCLS RGB(0,255,255) |
| 0000047 | GFILL 0,216,399,239,#BLUE |
| 0000048 | LOCATE 17,28:PRINT PUSH X TO FINISH" |
| 0000049 | |
| 0000050 | WHILE 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 |
| 0000160 | WEND |
| 0000161 | ACLS:END |
