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;
      }
    }
  }

レビュー項目

  1. 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);
  }

レビュー項目

  1. 正常に実行可能であり,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);
  }

レビュー項目

  1. 正常に実行可能であり,Left/Rightそれぞれにおいて,Niwatoriが敵に取得された際に,Hiyokoに戻ることを確認する

results matching ""

    No results matching ""