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 |