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

(6) 勝敗判定の処理

 勝敗判定の処理はサブルーチンhanteiに作成する。リーチかどうか判定したとき、縦横斜めの合計が2または-2のときリーチと判定した。したがって、勝敗は合計が3または-3のとき勝敗が決定したと判定できる。
 処理の概要は次の通りである。

  1. 勝敗を判定する。勝ち、負けのメッセージを表示する。変数rhanteiを1にして戻る。
  2. 置き場所があるか調べる。置き場所があれば、変数rhanteiを0にして戻る。
    置き場所がなければ、引き分けである。

 「1.勝敗判定」は、リーチ判定の計算がそのまま使える。

    rhantei = 0    ;勝敗未決
    repeat 8
        cnt1 = cnt * 3
        gk = ff(chk(cnt1)) + ff(chk(cnt1 + 1)) + ff(chk(cnt1 + 2))
        if gk = -3 {
            dialog "コンピュータの勝ちです。"
            rhantei = 1
            break
        }
        if gk = 3 {
            dialog "あなたの勝ちです。"
            rhantei = 1
            break
        }
    loop
    if rhantei = 1 : return

 「2.置き場所を調べる」は、変数rhanteiを1にしておき、9カ所順に調べ、1カ所でも空きがあれば、変数rhanteiを0にして戻る。
空きがなければ、引き分けである。

   rhantei = 1    ;勝敗決定
    repeat 9
       if ff(cnt) = 0 : rhantei = 0 : break    ;空きあれば勝敗未決
   loop
   if rhantei = 0 : return
   dialog "引き分けです。"
   return


.


課題(ox65.hsp)
 勝敗判定の処理を追加する。


(リスト)



課題(ox66.hsp)
 ゲーム開始前に、先攻・後攻・終了が選択できるように処理を追加する。

ヒント
 dialog命令には、[OK]ボタンが1つ、[はい]、[いいえ]ボタンが2つのダイアログしかないので、ここでは、ウィンドウにボタンのオブジェクトを配置して、先攻・後攻・終了が選択できるようにする。
button


(リスト)


 ○×・ゲーム制作 前へ 目次へ 
2007 © Hiroshi Masuda

 

 

inserted by FC2 system