Step6:勝利条件チェック

Left/Rightのどちらが勝利したかを下記公式ルールにもとづいて判定し,表示する機能

  • 勝利条件1: 敵のLionを取得する(キャッチ)
  • 勝利条件2: Lionが敵の陣地に入る(トライ)
    • ここで敵の陣地とはLeft(turn=0)の場合,BaseAreaの右端,Right(turn=1)の場合,BaseAreaの左端を示す.

全タスク一覧

[Task6-1]GameStatusクラスの更新

[Task6-2]InfoAreaクラスの更新

[Task6-3]Doubutsu.pdeの更新

タスク間の依存関係

  • Task6-1,6-2,6-3はこの順に実施すること

担当者決定

担当者を決定する.開発担当とレビュー担当をTask毎に決定し,記述すること.なお,特定のTaskについて,開発者とレビュアーを同じ人がやってはいけない.また,複数のTaskを一人でまとめて実施しても構わないが,Step毎に最低2人は開発を担当すること.

Task 6-1 Task 6-2 Task 6-3
開発
レビュー  

[Task6-1]GameStatusクラスの更新

実施内容

GameStatusクラスにフィールドを追加し,checkWinner()メソッドを追加する

  • フィールドにint win = -1;を追加する
    • 初期値は-1でLeftが勝利すると0が入り,Rightが勝利すると1が入る
  • checkWinner()メソッドでは,Lionが取られたか(すなわちLionコマのkStat.capturedtrueになったか)とLionのコマが敵の陣地に入ったかをチェックし,そのどちらかが満たされたときに,フィールドのwinにそのチームの値(0 or 1)を代入する

GameStatusクラス

  void checkWinner() {
    for (AbstractKoma k : komaList.komaArray) {
      if (k.name.equals("lion")) {
        if(k.kStat.captured || (k.team==0 && k.x==board.bArea.posX+board.bArea.yoko-1) ||(k.team==1 && k.x==board.bArea.posX)){
          this.win=k.team;
          break;
        }
      }
    }
  }

レビュー項目

  1. 以前のStepの状態で正常に実行が可能であり,GameStatusクラスのフィールドにint型の変数winが追加されており,checkWinner()メソッドが↑上記と同じであることを確認する

[Task6-2]InfoAreaクラスの更新

実施内容

InfoAreaクラスのdraw()メソッドを更新し,勝利条件が満たされたときにLeft(Right)Win!!,とInfoAreaに表示する処理を追加する

  void draw() {
    fill(#FFFFFF);
    rect(posX*SQUARESIZE, posY*SQUARESIZE, yoko*SQUARESIZE, tate*SQUARESIZE);
    fill(#000000);
    textSize(20);
    if (gs.win==0) {
      text("Left win!!", (posX+0.3)*SQUARESIZE, (posY+0.5)*SQUARESIZE);
    } else if (gs.win==1) {
      text("Right win!!", (posX+yoko-1.3)*SQUARESIZE, (posY+0.5)*SQUARESIZE);
    } else if (gs.turn==0) {
      text("<- Left turn", (posX+0.3)*SQUARESIZE, (posY+0.5)*SQUARESIZE);
    } else {
      text("Right turn ->", (posX+yoko-1.7)*SQUARESIZE, (posY+0.5)*SQUARESIZE);
    }
  }

レビュー項目

1.正常に実行が可能であり,InfoAreaクラスのdraw()メソッドに↑と同じ処理が実装されていることを確認する


[Task6-3]Doubutsu.pdeの更新

実施内容

Doubutsu.pdeのdraw()メソッドに勝利条件をチェックする処理を追加する

  • draw()メソッドにgs.checkWinner()を追加する

Doubutsu.pde

void draw() {
  board.draw();
  komaList.draw();
  gs.checkWinner();
}

レビュー項目

  1. 正常に実行が可能であり,2種類の勝利条件のいずれかを満たしたときにその勝利条件を満たした側が勝利したことがInfoAreaに下図のように正しく表示されるかを確認する
    1. 勝利条件1: 敵のLionを取得する(キャッチ)
    2. 勝利条件2: Lionが敵の陣地に入る(トライ)
    3. 勝利条件2における敵の陣地とはLeft(turn=0)の場合,BaseAreaの右端,Right(turn=1)の場合,BaseAreaの左端を示す.

results matching ""

    No results matching ""