【发布时间】:2024-01-19 05:17:01
【问题描述】:
我想创建一个以左侧 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();
}
}
问题:
现在,它正在构成游戏逻辑。如果这些点不能向后移动,我就会完成任务。但是由于它们能够向后移动,因此当代码在数组外部检查时会出现错误(尽管可以理解)。
我头顶上的解决方案是使数组更长,并带有微不足道的符号,以免出现错误。但是我想问有没有别的办法? 因为现在的情况,我不能移动我的第一个和最后一个点中间的数字应该可以正常工作!
【问题讨论】: