Step8:ひよこの昇格,にわとりの降格
ひよこ(Hiyoko)が相手の陣地(一番奥)に入ったとき,にわとり(Niwatori)に昇格する機能.Niwatoriが取られたときにHiyokoに降格する機能.
全タスク一覧
[Task8-1]KomaListクラスの更新
[Task8-2-a]Hiyokoクラスの更新
[Task8-2-b]Niwatoriの更新
タスク間の依存関係
- Task8-1を最初に実施すること.
- Task8-2-a,8-2-bはどちらからやっても良い.ただし,Niwatoriの降格処理(8-2-b)はTask8-2-a実施後でなければ動作確認はできない.
担当者決定
担当者を決定する.開発担当とレビュー担当をTask毎に決定し,記述すること.なお,特定のTaskについて,開発者とレビュアーを同じ人がやってはいけない.また,複数のTaskを一人でまとめて実施しても構わないが,Step毎に最低2人は開発を担当すること.
Task 8-1 | Task 8-2-a | Task 8-2-b | |
---|---|---|---|
開発 | |||
レビュー |
[Task8-1]KomaListクラスの更新
実施内容
KomaListクラスにpromote()
メソッド,demote()
メソッドを追加する.
promote()
メソッドでは,active=false
になっているNiwatoriのコマを探索し,昇格するHiyokoと入れ替える処理を実装するdemote()
メソッドでは,active=false
になっているHiyokoのコマを探し,降格するNiwatoriと入れ替える処理を実装する
KomaListクラス
void promote(AbstractKoma hiyoko, int toX, int toY) {
for (AbstractKoma k : komaArray) {
if (k.name.equals("niwatori") && !k.kStat.active) {
hiyoko.kStat.active = false;
k.kStat.active = true;
k.kStat.captured = false;
k.kStat.selected = false;
k.x = toX;
k.y = toY;
k.team = hiyoko.team;
break;
}
}
}
void demote(AbstractKoma niwatori) {
for (AbstractKoma k : komaArray) {
if (k.name.equals("hiyoko") && !k.kStat.active) {
niwatori.kStat.active = false;
k.kStat.active = true;
k.kStat.captured = true;
k.kStat.selected = false;
k.x = niwatori.x;
k.y = niwatori.y;
k.team = niwatori.team;
break;
}
}
}
レビュー項目
- KomaListクラスの
promote()
メソッドとdemote()
メソッドの処理が↑と同一であるかを確認する
[Task8-2-a]Hiyokoクラスの更新
実施内容
Hiyokoクラスにおいて,updatePos()
メソッドを親クラス(AbstractKomaクラス)からオーバーライドし,KomaListクラスのpromote()
メソッドを呼び出す処理を追加する
- Left/Rightによって,昇格の際に入場する陣地の場所が異なるため,そのチェックを行う.
- 昇格処理終了後に,親クラスの
updatePos()
メソッドを呼び出す.
Hiyokoクラス
void updatePos(int toX, int toY) {
if(this.team==0 && toX==board.bArea.posX+board.bArea.yoko-1){
komaList.promote(this,toX,toY);
}else if(this.team==1 && toX==board.bArea.posX){
komaList.promote(this,toX,toY);
}
super.updatePos(toX,toY);
}
レビュー項目
- 正常に実行可能であり,Left/Rightそれぞれにおいて,Hiyokoが相手の陣地に入場すると,Niwatoriに昇格することを確認する
[Task8-2-b]Niwatoriクラスの更新
実施内容
Niwatoriクラスにおいて,captured()
メソッドを親クラス(AbstractKomaクラス)からオーバーライドし,Niwatoriが取られたときに,KomaListクラスのdemote()
メソッドを呼び出す処理を追加する
- 親クラスの
captured()
メソッドを呼び出し,その後demote()
メソッドを呼び出す- Niwatoriが相手に取得されて持ちゴマエリアに移動した後,降格処理を行う
Niwatoriクラス
void captured(){
super.captured();
komaList.demote(this);
}
レビュー項目
- 正常に実行可能であり,Left/Rightそれぞれにおいて,Niwatoriが敵に取得された際に,Hiyokoに戻ることを確認する