当方プログラミング初心者で修行中です。継承の勉強を生かしてオセロプログラムを作ってみようと思い、書いてみましたがイマイチどうかけばいいかわからなくなってしまった部分があるので質問させて頂きます。(継承なんか使わなくても楽にかけるかもしれませんが、練習なのでそこはご容赦下さい)
java
1 2public class BoardData { 3 4 final static int out = -1; 5 final static int noPiece = 0; 6 final static int black = 1; 7 final static int white = 2; 8 9 static int turn = black; 10 private int pieceData[][] = new int[10][10]; 11 12 BoardData(){ 13 InitialPieceDataSetting(); 14 } 15 16 public void InitialPieceDataSetting(){ 17 for(int i = 0; i < 10; i++){ 18 for(int j = 0; j < 10; j++){ 19 if(i == 0 || i == 9 || j == 0 || j == 9){ 20 this.pieceData[i][j] = out; 21 }else{ 22 this.pieceData[i][j] = noPiece; 23 } 24 } 25 } 26 27 this.pieceData[4][5] = black; 28 this.pieceData[5][4] = black; 29 this.pieceData[4][4] = white; 30 this.pieceData[5][5] = white; 31 } 32 33 public int searchPieceData(int x, int y){ 34 return this.pieceData[x][y]; 35 } 36 37 public void changePieceData(int x, int y, int color){ 38 this.pieceData[x][y] = color; 39 } 40 41} 42 43public class Board extends BoardData{ 44 45 public void outputBoardByChar(){ 46 47 for(int i = 0; i < 10; i++){ 48 for(int j = 0; j < 10; j++){ 49 if(searchPieceData(i, j) == out){ 50 if(j == 9){ 51 System.out.println("■"); 52 }else{ 53 System.out.print("■"); 54 } 55 }else if(searchPieceData(i, j) == noPiece){ 56 System.out.print("□"); 57 }else if(searchPieceData(i, j) == black){ 58 System.out.print("●"); 59 }else if(searchPieceData(i, j) == white){ 60 System.out.print("○"); 61 } 62 } 63 } 64 65 } 66 67} 68 69/* 70public class CPU { 71 72 Board b = new Board(); 73 74 public void CPUPutPiece(int x, int y){ 75 b.changePieceData(x, y, BoardData.turn); 76 } 77 78} 79*/ 80 81public class Main { 82 83 public static void main(String[] args) { 84 85 Board b = new Board(); 86 b.outputBoardByChar(); 87 88 } 89 90} 91 92
このコードのCPUクラスからBoardDataクラスのpieceData[][]の値をいじれるようになりたいのですが、どのようなコードにすればいいでしょうか?
自分の考えとしてはchangePieceDataのメソッドを利用すればいいのでは?と考えたのですが・・・。このメソッドを継承していない他のクラスから使うことは可能ですか?
何かコードをわかりやすくする上でアドバイス等あれば、加えてお願いします。
【追記】
すいません、質問がわかりづらかったと思います。
このコード内で、最初自分が書いたCPUクラスをコメントで残していますが、こうすればちゃんとプログラムが動作することはわかりました。
ただ、ほかのクラスのインスタンスをここで宣言して使うような感じで使っていいのかな?と疑問に思った次第です。
当然
java
1public class CPU { 2 3 public void CPUPutPiece(int x, int y){ 4 changePieceData(x, y, BoardData.turn); 5 } 6 7}
ではコンパイルエラー出ると思うので・・・
プログラミング初心者すぎて何いってるのかわからないかもしれませんがよろしくおねがいします><
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。