月曜日ですね
世間では月曜日らしいので久しぶりにゲーム制作の進捗報告でもしようかと思います(?)。今回はウディタでなくHSPでつくってるやつのほうの報告です。
こんなのをつくってしまった
前回までの内容。また数ヶ月前の記事を引っ張りだすことになってるけど、こちらになります。
inujini.hatenablog.com
今回はタイトル画面を作成しました。↑キーを押すとゲーム開始です。
ゲーム内容は、画面外に出ないようにタイミングよく↑キーを押してジャンプするだけのゲームとなっています。シンプル。
画面外に出てしまうとゲームオーバーです。それまでのジャンプ回数が画面に出てきます。再度、↑キーを押すとタイトルに戻ります。
これ、面白いの?
ノーコメントでお願いします。
タイトル画面とゲームシーンとゲームオーバー画面とスコア的な要素を含んでるので、何を言われようが僕はこれをゲームと言い張ります。ジャンプのパラメータをランダムにしたり、ジャンプの回数に応じて演出みたいの加えたらよりゲームっぽくなってくると思います。僕の中では「もうこれで完成でいいんじゃね?」みたいになってますけど…。
感想とか
主に画像の描画系の書き方がよくわからなかった。
でもとりあえず一つの形になったのでこれでいいのではないでしょうか?
以下、ソースコード
title "月曜ジャンプ" buffer 1 picload "mon.bmp" buffer 2, 200, 200 picload "monjum.bmp" screen 0, 640, 480 *opening ;開始シーン ;メインゲームパラメータ y = 240 -32 jFlag = 0 jBegin = 0 jCount = 0 redraw 0 color 255,255,255:boxf pos 170,100 gcopy 2,0,0,200,200 pos 200,280 color 0,0,0 mes "Push [↑] Start" mes "How to play" mes "[↑] Jump" redraw 1 stick openingKey if(openingKey & 2){ goto *main } await 20 goto *opening *main ;メインシーン redraw 0 color 255,255,255:boxf pos 320-32, y gcopy 1,0,0,32,32 stick key ;ジャンプフラグ if(jFlag = 1){ yTemp = y y += (y - yPre) + 1 yPre = yTemp ;ジャンプ終了 ;終了フラグが座標一致なので二段ジャンプでフラッピーバード挙動になる if(y = 240-32 & jBegin = 0){ jFlag = 0 } } ;ジャンプ if(key & 2){ jCount = jCount + 1 jFlag = 1 jBegin = 1 yPre = y y = y - 15 } redraw 1 ;確認用 pos 100,100 color 255,0,0 mes y mes "フラグ:"+jFlag mes "カウント数:" + jCount await 20 ;終了判定 if(y < -120 | y > 500){ goto *gameOver } goto *main *gameOver ;終了シーン redraw 0 stick endKey color 255,255,255:boxf color 0,0,0 pos 160,160 mes "GameOver" mes "ジャンプした回数:" + jCount mes "Push [↑] Replay" if(endKey & 2){ color 255,255,255:boxf goto *opening } await 20 redraw 1 goto *gameOver
とりあえず大きなシーン毎にステージを作成して、ループを回すという感じで作ってます。シーン内に処理があればサブルーチンで回すって感じをイメージ。それ以上に肥大化したものをつくろうとかは考えてないのでとりあえずこんなんで。まだ粗はあるから直しどころはたくさんあるけど、ひとまずはこれで……。
この言語まだよくわかってないけど、ループ回すお作法はこれでいいのだろうか。というか、これが自分の中で分かりやすい書き方だった。
*[ラベル名] redraw 0 color 255,255,255:boxf [処理] await 20 redraw 1 goto *[ラベル名]