HSP3 ゲームのプログラミング
 スロット・ゲーム制作 前へ 目次へ 

(7) 回転停止

 回転を管理する変数kaiten1,kaiten2,kaiten3を0にする。しかし、[STOP]ボタンが3つあり、どれをクリックしてもサブルーチン*teishiへ移動する。どのボタンがクリックされたか判定する必要がある。
 ボタンだけではなく、入力などオブジェクトを配置すると順番に番号が割り当てられる。
  button gosub "STOP", *teishi   ;obj ID0
 ボタン配置の命令のコメントにID0のように順番に番号を示している。これがその番号である。この番号はシステム変数statで調べることができる。次に、1つ分のプログラムを示す。

    if stat = 0 {    ;ボタンID0
        kaiten1 = 0    ;回転停止
    }

 ただし、このままでは、数字が半分ずつ表示された状態で停止することもある。それを防ぐため、補正が必要になる。補正をしたプログラムを次に示す。

    if stat = 0 {    ;ボタンID0
        kaiten1 = 0    ;回転停止
        if suu1 \ 2 = 1 : suu1 = suu1 + 1    ;数字補正
        if suu1 = 10 : suu1 = 0
        pos 60, 80 : gcopy 1, 0, 25 * suu1   ;画像描画
    }
 数字補正では、変数suu1が奇数の場合に数字が半分ずつ表示されるので、奇数の場合に1を加算する。また、変数kaiten1が0になって回転は停止するので、数字の画像描画命令も追加している。

 3カ所の数字の回転が停止したら、ゲームの状態を示す変数sstatを2にする。3カ所の数字がすべて停止すると、回転を管理する変数kaiten1,kaiten2,kaiten3がすべて0になる。

    if kaiten1 = 0  &  kaiten2 = 0  & kaiten3 = 0 : sstat = 2    ;2:判定

 判定文は上のように書くことができるが、3つの変数がすべて0なので、合計が0のとき停止したと判定できる。

    if kaiten1 + kaiten2 + kaiten3 = 0 : sstat = 2    ;2:判定



課題(slot64.hsp)
 回転停止の処理を追加する。


(リスト)



(8) 数字の並び判定・終了判定

 停止したときの数字は変数suu1, suu2, suu3に格納されている。ただし、1, 2, 3, 4, 5の数字のとき、それぞれ0, 2, 4, 6, 8が格納されている。しかし、ここでは3つの数字が同じときだけ賭点の3倍を加算するので、特に気にする必要はない。ただし、数字の値で判定を変える場合は注意が必要である。

;並び判定・得点計算 -----
*hantei
    if suu1 = suu2 & suu2 = suu3 {    ;3つ同じ数字
        tokuten = tokuten + coin * 4    ;3倍+賭点 加算
        gosub *tokuten_disp    ;得点表示
    }
    coin = 0    ;賭点初期化
    gosub *coin_disp    ;賭点表示
    sstat = 0    ;0:スタートok
    return
 同じ数字が3つそろったとき、変数tokutenに賭点coinの4倍を加算している。これは、賭点入力時に賭点を得点から引いているので、賭点の分と3倍の分の4倍を加算する。

 並びの判定はゲーム状態sstatが2のときに実行する。回転アニメーションの後、サブルーチン*hanteiに移動する判定文を追加する。

        redraw 1
        if sstat = 2 : gosub *hantei
        await 100

 ゲームを進行していき、得点が0になったらゲームオーバーである。ただし、賭点を得点から引いていくので賭点入力時に0になることがある。したがって、ゲームオーバーは得点と賭点がともに0になったときということになる。

        redraw 1
        if sstat = 2 : gosub *hantei
        if tokuten = 0 & coin = 0 : break    ;game over
        await 100
    loop
    dialog "ゲーム・オーバーです。\nもう一度しますか。", 2, "スロット・ゲーム"
    if stat = 6 :goto *start
    end



課題(slot65.hsp)
 数字の並び判定・終了判定の処理を追加する。


(リスト)



課題(slot66.hsp)
 3つの数字が並んだとき、上部赤色の円内に点滅するようなアニメーションを追加する。点滅後に得点加算されるようにする。


;当たり点滅 -----
*atari
    repeat 5
        color 255,255,0:circle 8,8,40,40
        color 255,255,0:circle 360,8,390,40
        wait 30
        color 255,0,0:circle 8,8,40,40
        color 255,0,0:circle 360,8,390,40
        wait 30
    loop
    return


 スロット・ゲーム制作 前へ 目次へ 
2007 © Hiroshi Masuda 

 

 

inserted by FC2 system