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つまで停止させておいて回転開始でやり直す、などである。

  1. コイン(賭点)を入力する。
  2. 回転開始ボタンをクリックする。
  3. 回転停止ボタンをクリックする。
  4. 数字の並びを判定し、得点を加減する。

 このような不都合を解消するため、ゲーム進行の状態を変数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 

 

 

inserted by FC2 system