我想创建一个游戏,以左侧的3个绿色点和右侧的3个红色点开始,并在它们之间留出空间。终结应该有颜色切换方面。Java数组游戏 - 游戏逻辑概念
游戏的规则是,如果点旁边有一个空格,它应该可以在那里移动,如果旁边有一个相反的颜色 - 它应该能够跳过,如果有一个相反颜色背后的空间。
我的问题位于代码下方。
下面是代码:
//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();
}
}
问题:
眼下,它弥补了游戏逻辑。如果点不能倒退,我会完成任务。但是因为它们能够向后移动,所以当代码在数组外部进行检查时它会给出错误(尽管可以理解)。
我的头顶上的解决方案是使阵列更长,无意义的迹象,以免得到错误。但我问是否有其他方法? 因为,它现在的样子,我不能移动我的第一个和最后一个点中间的数字工作应该虽然!
谢谢句法!很理解你的解释!一个侧面的问题,这是在数组中移动/切换索引的唯一方法吗? – Zopyrus 2010-04-21 13:06:51