スカッシュ・ゲームを作ろう その1(1/2) |
スカッシュというのは、壁にボールを打ちつけて、返ってきたボールをラケットで打ち返すスポーツです。スカッシュ・ゲームは、画面端に当たって跳ね返るボールをバーで打ち返す、要するにブロックのないブロック崩しです。
ルール
まずはバーを動かすところまでを作ります。
1.サブルーチンを作る
2.プログラム実行時の初期設定
3.タイトル画面の表示
4.ゲームスタート時の初期設定
5.バーの移動
6.画面の更新
7.5に戻る
1.サブルーチンを作る |
画面をクリアする処理と、メッセージを表示する処理は複数個所に出てくるのでサブルーチンにしておきます。
;画面のクリア *Clear_Screen color 0, 0, 0 boxf 0, 0, 639, 479 return ;メッセージの表示 *Write_Message ;msx,msy : 表示する座標 ;message : メッセージの内容 pos msx, msy color 255, 255, 255 font "MS 明朝", 16 mes message return
2.プログラム実行時の初期設定 |
; ;プログラム実行時の初期設定 ; screen 0, 640, 480 title "SQUASH" gsel 0 gosub *Clear_Screen ;仮想画面に絵を読み込む celload "graphics\\bar.bmp", 1
title "SQUASH"
ウィンドウのタイトルバーの文字列を"SQUASH"に変えます。
gosub *Clear_Screen
後でタイトル表示時に画面をクリアするのではありますが、それまでの間背景のデフォルトの色である白色が見えてしまいます。本ゲームの場合一瞬なので気にするほどでもないのですが、画像や音の読み込みに時間がかかる場合見苦しいので、ウィンドウを作ったらすぐに黒色でクリアします。
celload "graphics\\bar.bmp", 1
プログラムがあるフォルダの"graphics"フォルダの下の"bar.bmp"をウィンドウIDが1番の仮想画面に読み込みます。文字列の中に"\"(フォルダの区切り記号)を書く場合には"\\"とします。
"bar.bmp"はバーの絵で、大きさは64×16です。
3.タイトル画面の表示 |
; ;タイトル画面 ; *Title_Screen gosub *Clear_Screen pos 200, 128 color 255, 255, 0 font "MS 明朝", 72 mes "SQUASH" msx = 256 : msy = 480 - 48 message = "PUSH Z KEY" gosub *Write_Message *Input_Z await 16 getkey key, 90 if key == 0 { goto *Input_Z }
画面をクリアし、"SQUASH"と"PUSH Z KEY"を書き、Zキーが押されるのを待ちます。Zキーを押すとゲームがスタートします。Zキーのキーコードは90です。
残念ながら、フォントの大きさを72にしても、文字列の幅は72ドット×6文字=432ドットにはなりません。文字列の幅を知る方法を、私は寡聞にして知りません。大雑把に位置を決めて、「ちょっと右すぎるな」、「ちょっと左すぎるな」といった感じで微調整していきます。
4.ゲームスタート時の初期設定 |
; ;ゲームスタート時の初期設定 ; ;バーの座標 bar_x = (640 - 64) / 2 bar_y = 480 - 48
ゲームスタート時に行うべき処理です。バーの初期位置を変数bar_x、bar_yに入れます。バーが真ん中にある時、x座標は(640 - 64) / 2となります。
画面の幅が640、バーの幅が64ですから、図の赤い線の長さは640 - 64です。その半分ですから(640 - 64) / 2となります。
y座標は、画面下端から48ドットの高さとします。