ニャオニャオ21世紀

アイデア。レトロゲーム(MSX、PCエンジン、ファミコン、メガドライブセガサターン)と、MSXのゲーム開発と、最新ゲーム(PS4、SWITCH)、身体(身体意識など)、ライフハック、電子工作ほか雑記を綴っています

MSX BASICの自作ゲーム制作!第二弾。ジャンプ処理(URLクリックで実行できます)

MSXの機体の情報が一杯 これは必見の書籍!! 僕らの好きなMSXハードカタログ

WebMSXでMSX BASICの自作ゲーム作成!第二弾。

今日はジャンプをやりたいと思います。

このジャンプ処理はMSX MAGAZINE 永久保存版2に

記載されていたものです。

詳しくは本をご購入ください^^

MSX MAGAZINE 永久保存版 2
MSX MAGAZINE 永久保存版 2
posted with amazlet at 18.02.20

アスキー
売り上げランキング: 563,356

スペースキーを押す長さによって、ジャンプの高さが

変わります。

こちらのURLをクリックすると、実行結果を試せます。

 

http://webmsx.org/?DISKA_URL=http://goods.heteml.jp/msx/samp3 (1).dsk

 

WebMSXで作品公開する方法は、

WebMSXで作ったDiskイメージファイルをどこかにアップロードして、

そのURLを、

http://webmsx.org/?DISKA_URL=

のあとに繋げてリンクを貼ればOKです。

 

 

それではソースコードを。 

10 SCREEN1,2,0:DEFINTA-Z:KEYOFF:
WIDTH32: COLOR15,1,5
20 H2 = 1:X=128:Y=160
30 FOR J=0 TO 7:S$="":FOR I=1 TO
32:READD$:S$=S$+CHR$(VAL("&H"+D$
)):NEXT:SPRITE$(J)=S$:NEXT
40 S=STICK(0):TG=STRIG(0)
50 IF S=3 THEN X=X+4
60 IF S=7 THEN X=X-4
70 IF S=1 THEN Y=Y-4
80 IF S=5 THEN Y=Y+4
90 H2=-H2:IF JF=1 THEN H2=-1
100 IF S=3 AND H2=1 THEN H=0
110 IF S=3 AND H2=-1 THEN H=4
120 IF S=7 AND H2=1 THEN H=1
130 IF S=7 AND H2=-1 THEN H=5
140 IF X<0 THEN X=0
150 IF X>240 THEN X=240
160 IF JF=1 THEN 190
170 IF TG=0 THEN 250
180 JF=1:JY=-8:JC=6
190 IF JC=0 THEN 220
200 IF TG=0 THEN JC=0:GOTO 220
210 JC=JC-1
220 IF JC=0 AND JY<8 THEN JY=JY+
2
230 Y=Y+JY
240 IF Y>160 THEN Y=160:JF=0
250 PUTSPRITE 0,(X,Y),7,H
260 PUTSPRITE 1,(X,Y),11,H+2
270 GOTO 40

500 DATA 2E,2D,67,7E,78,7C,38,06,16,17,0F,14,1D,07,0F,0F, F0,F8,80,00,00,00,00,00,E0,70,70,20,50,80,80,E0
510 DATA 0F,1F,01,00,00,00,00,00,07,0E,0E,04,0A,01,01,07,74,B4,E6,7E,1E,3E,1C,60,68,E8,F0,28,B8,E0,F0,F0
520 DATA 10,10,18,00,01,01,01,00,00,00,00,03,00,00,00,00,00,00,10,50,D8,F0,E0,00,00,00,00,00,00,00,00,00
530 DATA 00,00,08,0A,1B,0F,07,00,00,00,00,00,00,00,00,00,08,08,18,00,80,80,80,00,00,00,00,C0,00,00,00,00
540 DATA 00,1E,5D,4B,7E,78,7C,38,06,0D,1D,0D,16,2B,38,1E,00,E0,F8,80,00,00,00,00,00,E0,F0,30,20,D4,3C,38
550 DATA 00,07,1F,01,00,00,00,00,00,07,0F,0C,04,2B,3C,1C,00,78,BA,D2,7E,1E,3E,1C,60,B0,B8,B0,68,D4,1C,78
560 DATA 00,20,20,30,00,01,01,01,00,00,00,00,00,00,00,00,00,00,00,10,50,D8,F0,E0,00,00,00,C0,C0,00,00,00
570 DATA 00,00,00,08,0A,1B,0F,07,00,00,00,03,03,00,00,00,00,04,04,0C,00,80,80,80,00,00,00,00,00,00,00,00

 

前回のプログラムに追加しています。

www.nyaonyao21.com

 

 

前回と違うのは、PUT SPRITEを下の方に移動しております。

それと時間稼ぎのFOR NEXT文を取り除きました。

 

40,90,140~240行を追加しています。

 

40 S=STICK(0):TG=STRIG(0)

TG=STRIG(0)は、

スペースキーを押したかどうかを知るための宣言です。

 

90 H2=-H2:IF JF=1 THEN H2=-1

JF=1はジャンプフラグです。

ジャンプしている時は、足を開いたスプライトを表示します。

 

140 IF X<0 THEN X=0
150 IF X>240 THEN X=240

はマイキャラのX座標の移動範囲を。X座標が、0~240まで。

端から端までです。

 

160 IF JF=1 THEN 190

JF=1はジャンプしているとき。そのときは190行へとびます。

 

170 IF TG=0 THEN 250

TG=0は、スペースキーを押していないときです。

250行へとびます。

250行はPUT SPRITEで、180~240行のジャンプ処理をまるまる飛び越えて

います。なにもしないということです。

 

180 JF=1:JY=-8:JC=6

JF=1は、ジャンプフラグです。

JY=-8は、最初にスペースキーを押したときは、Y座標を-8移動させるということ。

毎回、Y座標を、-8ドットづつしていきます。(スペースキーを押している間)

JCの説明を。

スペースキーを押している間は、-8ドットづつ上へ上がりますが、

それの上限を設けなければいけません。そうしないと永遠に上に飛んで行ってしまう

ので。そこでカウンターを入れます。

最初は6です。そこから後の行で-1づつしていきます。

160行でジャンプフラグが立っている時は、この行は飛ばされています。

 

190 IF JC=0 THEN 220

JC=0のとき、220行へ飛びます。


200 IF TG=0 THEN JC=0:GOTO 220

スペースキーが離されたら、JC=0とします。

そして1行飛ばして、220行へ。

 

210 JC=JC-1

ジャンプカウンターを-1づつしていきます。

 

220 IF JC=0 AND JY<8 THEN JY=JY+2

初期値がJC=6で、ジャンプの上限か、スペースキーを離した時に

JC=0となっていました。

JY<8となっていますが、ジャンプなので、上へ上がったら、下へも降りてこないと

いけません。その移動量の上限が+8です。

JYに2づつ足していきます。

JYは、この処理を何回か通ることで、

-8,-8,-8,-8,-8,-8,-6,-4,-2,0,2,4,6,8,8,8,8,8,8

となっていきます。

擬似的に重力加速度を意識したような動きになっています。

 

230 Y=Y+JY

Y座標に移動量を足していきます。


240 IF Y>160 THEN Y=160:JF=0

Y座標の地面がY=160となっています。

ここは、いずれゲームを作っていくときには変えていかないといけません。

 

優秀なジャンプ処理ですね。

シンプルですけど高さ調整もできるし。

今、MSX BASICをやると資料が豊富にあるので、楽に作ることができるのが

いいですね〜。

このプログラムはジャンプカウンターJCを いれるところがキモですね。

もし自分でプログラムを考えるとすると、

まず、JY=-8と初期設定し、毎回、JY=JY+2するというのはすぐわかると

思います。

そこにジャンプカウンター JC=6として、JC=0となるまでは、

JY=-8がしばらく続かせると考えていくのでしょうか。

-8,-6,-4,-2,0,2,4,6,8

-8,-8,-8,-8,-8,-8,-6,-4,-2,0,2,4,6,8,8,8,8,8,8

にしていく処理を考えます。

 

そんなところでしょうか。

次回は地面にブロックを敷き詰めたいと思います。

とりあえず、カラフルな多色刷りはやめておいて、2色のブロックにすると

思います。

それでもVRAMを弄らないといけないですからね。

そのうちカラフルな多色刷りもやりたいと思います。

 

 

最後に、

iphoneとandroidでアプリを作っております。

MSXっぽいアプリで、横スクロールランアクションゲームです。

8ドットカクカクスクロールです!

 

8bit run run go

8bit run run go

  • nao21
  • ゲーム
  • 無料

  

play.google.com

 

www.nyaonyao21.com

 

 こちらもよろしく、です!

 

次のページ

www.nyaonyao21.com

 

 

では~。


「ニャオニャオ21世紀は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」

当サイトは第三者配信の広告サービス「Google Adsense グーグルアドセンス」を利用しています。 広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。 Cookie(クッキー)を無効にする設定およびGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご覧ください