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.captured
がtrue
になったか)と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;
}
}
}
}
レビュー項目
- 以前の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();
}
レビュー項目
- 正常に実行が可能であり,2種類の勝利条件のいずれかを満たしたときにその勝利条件を満たした側が勝利したことがInfoAreaに下図のように正しく表示されるかを確認する
- 勝利条件1: 敵のLionを取得する(キャッチ)
- 勝利条件2: Lionが敵の陣地に入る(トライ)
- 勝利条件2における敵の陣地とはLeft(turn=0)の場合,BaseAreaの右端,Right(turn=1)の場合,BaseAreaの左端を示す.