回答編集履歴

1

質問の追記分に関して回答しました

2016/08/22 11:50

投稿

flied_onion
flied_onion

スコア2604

test CHANGED
@@ -15,3 +15,73 @@
15
15
  というところでしょうか。
16
16
 
17
17
  turnをstaticにしない方法も考えられますが、一つずつ改善していけばよいかと思います。
18
+
19
+
20
+
21
+ ---
22
+
23
+
24
+
25
+ 質問の追記に気づいてませんでした。すいません。
26
+
27
+
28
+
29
+ つまり、changePieceDataを使えばいいことはなんとなくわかるけど、BoardData.turnを使う事に抵抗があるということですね。
30
+
31
+
32
+
33
+ まず、継承している(=BoardはBoardDataでもある)ので、BoardもBoardData.turnを使う事が出来ます。
34
+
35
+ ( Board.turn も使え、それはBoardData.turnと同じものを参照しています。 )
36
+
37
+
38
+
39
+ もう一つは、turnはBoardやBoardDataは知っているので、現在のturnを渡すくらいなら受け取らなくても自分で見ればいいという事です。
40
+
41
+
42
+
43
+ この2つから、turnを受け取らないオーバーロード(引数の違う同じ名前のメソッド)か別メソッドを作って、3つ目の引数はBoard自身が処理するという手も考えられます。
44
+
45
+
46
+
47
+ `Board.java`
48
+
49
+ ```
50
+
51
+ public void changePieceData(int x, int y){
52
+
53
+ changePieceData(x,y,Board.turn); // 続きの処理は引数3つの方にやらせる
54
+
55
+ // changePieceData(x,y,BoardData.turn); // 同じこと
56
+
57
+ }
58
+
59
+ ```
60
+
61
+
62
+
63
+ `CPU.java`
64
+
65
+ ```
66
+
67
+ // b.changePieceData(x, y, BoardData.turn);
68
+
69
+ b.changePieceData(x, y);
70
+
71
+ ```
72
+
73
+
74
+
75
+ 他には、Boardが今のturnを教えてくれるメソッドを作るという手もあると思います。
76
+
77
+ やりかたはいろいろあるので考えてみてください。
78
+
79
+
80
+
81
+ あとは、turnはstaticじゃなくてもいいんじゃない?という気もしてますが、それも自分でためしてみてください。
82
+
83
+
84
+
85
+
86
+
87
+