HSP3 ゲームのプログラミング
 カブ・ゲーム制作 前へ 目次へ 

(9) 勝敗判定と得点表示

 それぞれの合計は配列yakuに格納されている。親の合計yaku(5)と比較して、勝敗を判定していくだけである。ただし、選択したカードとは比較して、その勝敗によって賭点(kake)を加減算する必要がある。次に処理の概要を示す。

    repeat 5
        if 選択したカード {
            勝敗判定・勝敗結果表示・得点加減算
        } else {
            勝敗判定・勝敗結果表示
        }
    loop

 「勝敗判定・勝敗結果表示」は、yaku(5)と比較していくだけである。勝敗結果のメッセージを表示するときの座標の指定は、合計点の下に来るよう調整する。

;勝敗判定・勝敗結果表示
    repeat 5    ;5人分
        pos ptx(cnt * 3), pty(cnt * 3) + 160    ;勝敗表示座標
        if selc = cnt {    ;選択したカード
            if yaku(5) = yaku(cnt) : color 255, 0, 255 : mes "引き分け"
            if yaku(5) > yaku(cnt) : color 0, 0, 0 : mes "負け" : tokuten = tokuten - kake
            if yaku(5) < yaku(cnt) : color 255, 0, 0 : mes "勝ち" : tokuten = tokuten + kake
        } else {           ;未選択カードと親
            if yaku(5) = yaku(cnt) : color 255, 0, 255 : mes "引き分け"
            if yaku(5) > yaku(cnt) : color 0, 0, 0 : mes "負け"
            if yaku(5) < yaku(cnt) : color 255, 0, 0 : mes "勝ち"
        }
    loop


○ 得点表示の処理

 得点、すなわち持ち点が表示されていない。抜けていました。ここで、処理を追加する。
 表示する位置を検討したが、ウィンドウの右端で親のカードと親以外のカードが配布されている間に表示することにした。ここは、ゲーム領域でアニメーションの時など頻繁に書き換えられる。そこで、得点表示の処理はサブルーチン*gf_dispの最後に追加することにする。
 得点表示の座標は(550, 180)とする。得点は0付きの6けたで表示することにする。勝敗判定の後、「gosub *gf_disp」を挿入すると勝敗判定後の得点が表示される。

    ;得点表示
    pos 550, 180
    color 0, 0, 0 : mes "持ち点"
    mes strf("%06d", tokuten)



課題(card68.hsp)
 勝敗判定と得点表示の処理を追加する。


  勝敗判定の後に「gosub *gf_disp」を挿入するため、親の合計が消されてしまう。「gosub *gf_disp」の後に、次の処理を追加して対処しよう。
    ;親合計点再表示
    pos ptx(15), pty(15) + 60
    color 0, 0, 0 : mes "合計=" + yaku(5)


(リスト)



課題(card69.hsp)
 ゲーム繰り返しの処理を追加する。

 1ゲーム終わるとプログラムが停止する野で、「もう一度しますか」とメッセージを表示して、確認をする。また、持ち点がなくなったらゲームオーバーの処理も必要である。
 ゲーム再開の場合、配布カードの初期化の前に戻る。ここに、ラベル*startを追加する。
;ゲーム再開確認
    if tokuten = 0 {
        dialog "ゲーム・オーバーです。もう一度しますか。", 2, "かぶ・ゲーム"
        if stat = 6 :tokuten = 200 : goto *start
    } else {
        dialog "もう一度しますか。", 2, "かぶ・ゲーム"
        if stat = 6 :goto *start
    }
    end


(リスト)


 カブ・ゲーム制作 前へ 目次へ 
2007 © Hiroshi Masuda

 

 

inserted by FC2 system