スカッシュ・ゲームを作ろう その1(2/2) |
5.バーの移動 |
矢印キーの左右でバーを動かします。一度に8ドット動かすことにします。
; ;メイン・ループ ; *Main_Loop await 16 ;バーの移動 getkey key, 37 if key == 1 { bar_x -= 8 } getkey key, 39 if key == 1 { bar_x += 8 } if bar_x < 0 { bar_x = 0 } if bar_x > 576 { bar_x = 576 }
キーコード
←キー | 37 |
→キー | 39 |
←キーが押されていたらbar_xから8引きます。→キーが押されていたらbar_xに8足します。
bar_xが0より小さくなったら強制的に0にし、バーが左端より左に行かないようにします。右端についても同様で、bar_xが576(= 640 - 64)より大きくなったら強制的に576にします。
なお、←キと→キーを同時に押した場合は相殺されてどちらにも動きません。
6.画面の更新 |
; ;画面の更新 ; redraw 0 gosub *Clear_Screen ;バーの描画 pos bar_x, bar_y gmode 2 celput 1 redraw 1 goto *Main_Loop
画面をクリアし、自機を描きます。
あとは*Main_Loop行に戻って繰り返しです。
まとめますと、以下の通りです。
; ;プログラム実行時の初期設定 ; screen 0, 640, 480 title "SQUASH" gsel 0 gosub *Clear_Screen ;仮想画面に絵を読み込む celload "graphics\\bar.bmp", 1 ; ;タイトル画面 ; *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 } ; ;ゲームスタート時の初期設定 ; ;バーの座標 bar_x = (640 - 64) / 2 bar_y = 480 - 48 ; ;メイン・ループ ; *Main_Loop await 16 ;バーの移動 getkey key, 37 if key == 1 { bar_x -= 8 } getkey key, 39 if key == 1 { bar_x += 8 } if bar_x < 0 { bar_x = 0 } if bar_x > 576 { bar_x = 576 } ; ;画面の更新 ; redraw 0 gosub *Clear_Screen ;バーの描画 pos bar_x, bar_y gmode 2 celput 1 redraw 1 goto *Main_Loop ;画面のクリア *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