Итак, я пытаюсь создать игру Connect 4. Игра имеет 2 измерения (6row) x (7col). Когда я создаю новую игру, используя метод сброса рамок, панелей, меток для моего GUI, я создаю пустой файл и заполняю его 0. Пример
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Пока моя игра играет, и каждый игрок делает ход, я хочу go и найти точное местоположение, которое было сыграно, и изменить 0 на символ проверки игроков, где player1 равен "1", а игрок 2 - это «-1». Пример:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 1 0 0 0
0 0 0 1 -1 -1 -1
После каждого периода времени каждый раз, когда я хочу сделать кнопку, которая сохраняет эти изменения, чтобы я мог перезапустить игру и перезагрузить предыдущую в мой GUI.
public static void file_write(int row,int col,int letter) throws IOException{
int counter1 = 0; // a counter that goes +1 until reach the row
int counter2=0; // a counter that goes +1 until reach the col
FileWriter writehandle;
writehandle = new FileWriter("file.txt");
BufferedWriter bw = new BufferedWriter(writehandle);
FileReader readhandle = new FileReader("file.txt");
BufferedReader br = new BufferedReader(readhandle);
if(Constants.once){ // boolean from class Constants that fills the file with 0. First example
for(int i=0; i<7; i++){
for(int j=0; j < 8; j++){
Constants.line="0";
bw.write(Constants.line + " "); // filling the file with 0
}
bw.newLine();
}
}
if(letter == Constants.Player1) // player 1 symbol is 1
for(int i=0; i<row;i++)
for(int j=0; j<col; j++)
if (br.readLine() == "0" && counter2 != col){ //if statement in order to not change
bw.write("0"); //anything else except the player symbol i
counter2++; //am looking for
}
else if(br.readLine() == " " && counter2 != col){
bw.write(" ");
counter2++;
}
else if (br.readLine() == "-1" && counter2 != col){
bw.write("-1");
counter2++;
}
if(letter == Constants.Player1)
bw.write("-1");
else if (letter == Constants.Player2)
bw.write("1");
bw.close();
writehandle.close();
Constants.once =false;
file_read(0,0);
}
Таким образом, каждый раз, когда происходит перемещение, код получает для него строку и столбец и вызывает этот метод, чтобы внести соответствующие изменения в файл. Моя проблема в том, что я не знаю, как перейти в точное местоположение, чтобы изменить число с помощью файлов, а не массивов. Кажется, код не перемещается в нужное мне место. Помощь!