シューティングゲームで、自機の場所などは、変数で管理します。
前回のプログラムを少し修正してみましょう。
screen 0,300,200
x = -150 ;変数初期化
*main
redraw 0
gosub *draw ;描画ルーチン
redraw 1
await 5
goto *main
*draw
x++ ;変数インクリメント
color 255,255,255 : boxf ;背景(白で塗りつぶす)
pos x,20
color 0,0,0 : mes "シューティングゲーム(仮)"
return
画面外から文字が出てきます。
ゲームで、キャラが動くのはこんな感じでやっています。
「キャラの位置」のような変わるものと、「ウィンドウの大きさ」など、変わらない数値もあります。
変わらない数値「定数」は、#constで作成することができます。
#const wx 300 //wxという名前のマクロ作成
#const wy 200 //スクリプト中のwxという文字はすべて300に置き換えられる
screen 0,wx,wy
x = -150 ;変数初期化
*main
redraw 0
gosub *draw ;描画ルーチン
redraw 1
await 5
goto *main
*draw
x++ ;変数インクリメント
color 255,255,255 : boxf ;背景(白で塗りつぶす)
pos x,20
color : mes "シューティングゲーム(仮)"
return
wxやwyの値は変更することができません。
乱数も入れてみました。
文字のスピードがランダムになります。
#const wx 300
#const wy 200
randomize
screen 0,wx,wy
x = -150 ;変数初期化
*main
redraw 0
gosub *draw ;描画ルーチン
redraw 1
await 5
goto *main
*draw
if rnd(2)=1 : x++ ;ランダムに進ませる
color 255,255,255 : boxf ;背景(白で塗りつぶす)
pos x,20
color : mes "シューティングゲーム(仮)"
return
rnd関数でランダムに値を取得し、それが1なら表示位置を進めています。
[Download]sh2.hsp