Step4:コマの移動機能
該当するターンのコマを選択(クリック)し,もう一度任意のマス目をクリックするとそこに移動する機能 さらに,コマの移動が完了するとLeft/Rightのturnが切り替わる機能
全タスク一覧
[Task4-1]AbstractKomaクラスの更新
[Task4-2]Boardクラスの更新
[Task4-3]InfoAreaクラスの更新
タスク間の依存関係
- Task4-1,4-2はこの順に実施すること
- コマが正常に移動できるかはTask4-3完了後に確認できる
- Task4-3はいつ実施してもよいが,ターンの切り替えが正常に表示されるのはTask4-2実施後になる.
担当者決定
担当者を決定する.開発担当とレビュー担当をTask毎に決定し,記述すること.なお,特定のTaskについて,開発者とレビュアーを同じ人がやってはいけない.また,複数のTaskを一人でまとめて実施しても構わないが,Step毎に最低2人は開発を担当すること.
Task 4-1 | Task 4-2 | Task 4-3 | |
---|---|---|---|
開発 | |||
レビュー |
[Task4-1]AbstractKomaクラスの更新
実施内容
move()
メソッドとupdatePos()
メソッドを追加する
move()
メソッドは移動先の座標(toX, toY)を受け取り,updatePos()
メソッドに渡すupdatePos()
メソッドは,コマの座標(x,y)を(toX,toY)に更新し,GameStatusクラスの変数gsのturn変数の値を0⇔1に変換する
AbstractKomaクラス
void move(int toX, int toY) {
this.updatePos(toX, toY);
}
void updatePos(int toX, int toY) {
this.x=toX;
this.y=toY;
gs.turn = (gs.turn+1)%2;
}
レビュー項目
- AbstractKomaクラスの
move()
メソッドとupdatePos()
メソッドが↑の内容になっていることを確認する.
[Task4-2]Boardクラスの更新
実施内容
select()
メソッドを更新する
select()
メソッドにおいて,選択されたコマが存在した場合に,そのコマのmove()
メソッドを呼び出す処理を追加する.
Boardクラス
void select(int x, int y){
AbstractKoma koma = komaList.getSelectedKoma();
if(koma==null){
komaList.select(x,y);
}else{
koma.move(x,y);
koma.kStat.selected=false;
}
}
レビュー項目
- Boardクラスの
select()
メソッドが↑になっているかを確認する - プログラムを実行し,下図のようにコマが移動できるかとLeftの手番が終わったら(コマが移動できたら),Right側のコマが移動できるようになることを確認する
[Task4-3]InfoAreaクラスの更新
実施内容
InfoAreaクラスのdraw()
メソッドを更新する.
draw()
メソッドにおいて,gs.turn
の値が0のときは"<- Left turn",1のときは"Right turn ->"とInfoAreaに表示する処理を追加する.- 追加場所はLeftの場合はInfoAreaの左より,Rightの場合は右寄りになるようにする.
InfoAreaクラス
void draw() {
fill(#FFFFFF);
rect(posX*SQUARESIZE, posY*SQUARESIZE, yoko*SQUARESIZE, tate*SQUARESIZE);
fill(#000000);
textSize(20);
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);
}
}
レビュー項目
- Task4-2の処理でturnが切り替わったときに,InfoArea内の表示が切り替わることを確認する
- Left/Rightどちらの手番かを下図のように正しく表示していることを確認する