HSP3 ゲームのプログラミング | |
スロット・ゲーム制作 |
(3) ボタンの動作制限
ボタン(オブジェクト)を次のようなプログラムで配置した。
;ボタン等オブジェクトの配置
pos 50, 160
button gosub "STOP", *teishi ;obj ID0
pos 130, 160
button gosub "STOP", *teishi ;obj ID1
pos 210, 160
button gosub "STOP", *teishi ;obj ID2
pos 320, 160
button gosub "START", *kaishi ;obj ID3
pos 320, 60
button gosub "COIN", *coinin ;obj ID4
ボタンをクリックするといつでもサブルーチン*teishi、*kaishi、*coininに移動してreturn命令で戻ってくる。
処理の流れを次のようにするので、ボタンをクリックしたとき、いつでもサブルーチンに移動されると不都合がある。例えば、コインを入力する前に回転開始したり、2つまで停止させておいて回転開始でやり直す、などである。
- コイン(賭点)を入力する。
- 回転開始ボタンをクリックする。
- 回転停止ボタンをクリックする。
- 数字の並びを判定し、得点を加減する。
このような不都合を解消するため、ゲーム進行の状態を変数sstatで管理することにする。
sstat 状態 変化 0 コイン入力と回転開始が可能 → 回転開始ボタンクリックでsstat=1にする。 1 回転停止が可能 → 3つの回転停止ボタンクリックでsstat=2にする。 2 数字の並び判定が可能 → 判定終了でsstat=0にする。
各サブルーチンに変数sstatをチェックする命令を追加しておく。
; サブルーチン -----
*teishi
if sstat ! 1 : return ;sstat=1以外は戻る
return
*kaishi
if sstat ! 0 : return ;sstat=0以外は戻る
return
*coinin
if sstat ! 0 : return ;sstat=0以外は戻る
return
(4) 得点等表示
[COIN]ボタンをクリックすると10ずつ賭点が加算されるようにする。賭点は変数coinに格納する。持ち点は2000点で変数tokutenに格納する。得点(持ち点)を表示するサブルーチン*tokuten_dispと賭点(コイン)を表示するサブルーチン*coin_dispも一緒に作成する。
ゲーム開始前の初期設定として、得点などを設定する。
*start
;ゲーム初期設定
sstat = 0 ;ゲーム状態 0:スタートok、1:ストップok、2:判定
tokuten = 2000
gosub *tokuten_disp ;得点表示
coin = 0
gosub *coin_disp ;賭点表示
得点表示、賭点表示のサブルーチンは次の通りである。得点は回転する数字の上部、賭点は[COIN]ボタンの下に表示する。
;得点表示 -----
*tokuten_disp
color 0, 255, 0 : boxf 100, 20, 280, 40 ;得点表示領域消去
pos 100, 20 : color 200, 0, 255 : mes strf("持ち点: %08d", tokuten) ;得点表示
return
;賭点表示 -----
*coin_disp
color 0, 255, 0 : boxf 320, 80, 390, 120 ;賭点表示領域消去
pos 320, 90 : color 0, 0, 255 : mes strf(" %4d", coin) ;賭点表示
return
(5) コイン(賭点)の入力
プログラムはサブルーチン*coininとして作成する。
[COIN]ボタンをクリックすると10ずつ加算された数字が表示される。それとともに、得点の方は減っていくようにする。ただし、得点を超えて入力することができないようにする。
;賭点入力 -----
*coinin
if sstat ! 0 : return ;sstat=0以外は戻る
if tokuten >= 10 { ;得点チェック
coin = coin + 10 ;賭点加算
tokuten = tokuten - 10 ;得点減算
gosub *tokuten_disp ;得点表示
gosub *coin_disp ;賭点表示
} else {
dialog "これ以上、持ち点がありません。"
}
return
(slot62.hsp)
ボタン動作制限、得点等表示、コイン入力の処理を追加する。
得点(持ち点)と[COIN]ボタンの下に賭点が表示される。
(6) 回転開始
プログラムを実行すると、すでに数字は回転している。また、回転停止ボタンで停止させる必要がある。回転する(1)/しない(0)を変数kaiten1,kaiten2,kaiten3で管理する。また、コイン入力後でないと回転しないようにする必要もある。
ゲーム初期設定として、変数kaiten1,kaiten2,kaiten3を0で初期化する。
回転アニメーションで1セットずつの処理を変数kaiten1,kaiten2,kaiten3が1のときだけ実行するようにする。次に、1セット分だけプログラムを示す。
if kaiten1 = 1 {
suu1 = suu1 + 1
if suu1 = 10 : suu1 = 0
pos 60, 80
gcopy 1, 0, 25 * suu1 ;画像描画,yを25ドット単位で
}
回転開始は、[START]ボタンをクリックとサブルーチン*kaishiに移動して始まる。したがって、回転開始の処理はサブルーチン*kaishiとして作成する。
;回転開始 -----
*kaishi
if sstat ! 0 : return ;sstat=0以外は戻る
if coin <= 0 : dialog "コインを入れてください。" : return
kaiten1 = 1 ;回転開始
kaiten2 = 1
kaiten3 = 1
sstat = 1 ;1:ストップok
return
回転が始まると賭点入力などができないように変数sstat=1に設定する。
(slot63.hsp)
回転開始の処理を追加する。
ただし、上記の説明の処理だけを追加すると、実行した後、回転する数字の場所に数字が表示されないで、座標(背景画像)がそのまま表示される。この点も解決すること。
数字初期化の後、数字を表示する。
スロット・ゲーム制作 | |
2007 © Hiroshi Masuda |