Я хочу создать игру, которая начинается с 3 зеленых точек слева и 3 красных точек справа с пробелом между ними. В финале должны быть цвета, поменяемые сторонами.
Правила игры таковы, что если рядом с точкой есть пробел, она должна быть в состоянии перемещаться туда, а также, если рядом с ней находится противоположный цвет - она должна быть в состоянии перепрыгнуть, если есть пробел за противоположным цветом.
Мой вопрос находится под кодом.
Вот код:
//import mind.*;
import javax.swing.*;
import java.util.*;
import java.lang.*;
import java.awt.*;
public class Drive {
String[] middle = new String[7];
public Drive() {
int player1, player2;
boolean gameEnd, checkempty, checkempty2, enemy, enemy2;
// Gamepieces
String gr,rd,tom;
gr="G"; rd="R"; tom=" ";
// beginning of the game, endgame and the updating array
String[] begin = {gr,gr,gr,tom,rd,rd,rd};
String[] mellan = new String[7];
String[] end = {rd,rd,rd,tom,gr,gr,gr};
Scanner in = new Scanner(System.in);
while (mellan!=end) {
mellan=begin;
for(int i=0; i<mellan.length; i++) {
System.out.print(mellan[i]);
}
System.out.print(" Choose 0-6: ");
int digits = in.nextInt();
//BOOLEAN for game rules!!!
checkempty = mellan[digits+1]==tom;
checkempty2 = mellan[digits-1]==tom;
enemy = (mellan[digits]==gr && mellan[digits+1]==rd && mellan[digits+2]==tom);
enemy2 = (mellan[digits]==rd && mellan[digits-1]==gr && mellan[digits-2]==tom);
if(checkempty) {
mellan[digits+1]=mellan[digits];
mellan[digits]=tom;
} else if (checkempty2) {
mellan[digits-1]=mellan[digits];
mellan[digits]=tom;
} else if (enemy) {
mellan[digits+2]=mellan[digits];
mellan[digits]=tom;
} else if (enemy2) {
mellan[digits-2]=mellan[digits];
mellan[digits]=tom;
}
}
System.out.print("Nicely Done");
}
// Test Drive!
public static void main(String args[]) {
new Drive();
}
}
Задача :
Прямо сейчас это составляет игровую логику. Если бы точки не могли двигаться назад, я бы выполнил задание. Но так как они могут двигаться в обратном направлении, это вызывает ошибку при проверке кода вне массива (хотя это и понятно).
Решение на моей голове - сделать массив длиннее с незначительными признаками, чтобы не получить ошибку. Но я спрашиваю, есть ли другой способ? Потому что, как сейчас, я НЕ МОГУ ПЕРЕМЕЩАТЬ свои ПЕРВЫЕ и ПОСЛЕДНИЕ точки. средние числа работают так, как и должно быть!