私はJavaでボードスタイルのゲームに取り組んでいます。現在、ボードは 2 次元配列で初期化されています。プレーヤーは自分のチップの色と自分の動きを入力することで動きを作ることができます。例えば、次のように入力します: "W c 3" W = チップの色/プレーヤー c は列に対応する文字で、6 は行です。文字列から値を取得し、ボードの行と列を更新できるようにする必要があります。したがって、" a 1" は row =1 col = 1 である必要があります。"b 1" は row = 1 col = 2 である必要があります。例として、"e 5" は row = 5 col = 5 です。
どうすればそのようなことをすることができますか?
これが役立つ場合、これが私の move.java クラスのコードです。私が取り組んでいるメソッドは Move (String str) メソッドです。
public class Move implements Comparable<Move>{
static final int PASS_VALUE = 0;
int row, col;
boolean movement;
int pass;
int pos;
Board board;
/**
*
* Default constructor that initializes a pass move
*/
Move(){
row = PASS_VALUE;
col = PASS_VALUE;
}//Move default contructor
/**
*
* @param rowValue
* @param colValue
*/
Move(int rowValue, int colValue){
row = rowValue;
col = colValue;
}//Move constructor
/**
*
* @param oldMove -- Move to be copied
*/
Move(Move oldMove){
row = oldMove.row;
col = oldMove.col;
}//Move clone constructor
Move(String str) {
//int i = Integer.parseInt( str );
} //Move String constructor
Move (int positions) {
}//Move Positions constructor
/**
*
* @return string value of Move
*/
@Override
public String toString(){
String result ="";
String headers = " abcdefgh";
char colLetter = headers.charAt(col);
result = colLetter + " " + row;
return result;
}//toString
/**
*
* @param otherMove -- move to be compared
* @return
* -1 if this move precedes otherMove
* 0 if this move equals otherMove
* 1 if this move succeeds otherMove
*/
@Override
public int compareTo(Move otherMove){
return 0;
}//compareTo
boolean isAMove() {
return movement;
}
boolean isAPass(){
return row == PASS_VALUE;
}
}//Move
***文字列変数 (str) は次のコードによって設定されていることに注意してください。
Move getOpponentMove(BufferedReader keyboard) throws IOException {
OthelloOut.printComment("Please enter your move");
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(reader);
String initializeStr = keyboard.readLine();
Move opponentMove = new Move(initializeStr);
return opponentMove;
}