我的主要思想是实现一个类似连连看的小游戏 代码如下:由于刚上基础班4天 看不出哪里有问题 请各位前辈指教
import java.util.*;
class Connerct {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
Game g = new Game();
g.ini();
g.print_1();
System.out.println("因时间有限 本程序每一行的六个数字都不相同");
while(true) {
int i,j,k,l;
System.out.println("请输入你选择的第一个坐标(用Enter分隔 输入错误时游戏结束):");
i = in.nextInt();
j = in.nextInt();
if(g.play(i-1,j-1)) {
continue;
}
System.out.println("请输入你选择的第二个坐标(用Enter分隔 输入错误时游戏结束):");
k = in.nextInt();
l = in.nextInt();
/*if(i == k && j == l) { //语句作用重复
System.out.println("输入坐标相同,请重新输入");
continue;
}*/
if(g.play(k-1,l-1)) {
continue;
}
g.judge(i-1,j-1,k-1,l-1);
g.print_2();
if(g.win()) {
System.out.println("恭喜你过关了");
return;
}
}
}
}
class Game {
Random random = new Random();
static Scanner in = new Scanner(System.in);
public Game() {
}
static {
System.out.println("请选择操作难度:");
}
int a =2 * in.nextInt();
int[][] arr = new int[a][6];
String[][] string = new String[a][6];
public void ini() {
for(int k = 0;k < arr.length;k++) {
for (int i = 0;i<arr[k].length ;i++ ) {
arr[k][i] = random.nextInt(6);
for(int j = 0;j<i;j++ ) {
if(arr[k][j] == arr[k][i]) {
i--;
}
}
}
}
}
public void print_1() { //用于String数组的初始化
System.out.println("\t一\t二\t三\t四\t五\t六\t");
for(int i = 0;i < string.length;i++) {
System.out.print(i+1+"\t");
for(int j = 0;j < string[i].length;j++) {
string[i][j] = "?";
System.out.print(string[i][j]+"\t");
//System.out.print(arr[i][j]+"\t"); 输出数组值
}
System.out.println("\n");
}
}
public void print_2() { //用于输出显示后的String数组
System.out.println("\t一\t二\t三\t四\t五\t六\t");
for(int i = 0;i < string.length;i++) {
System.out.print(i+1+"\t");
for(int j = 0;j < string[i].length;j++) {
System.out.print(string[i][j]+"\t");
//System.out.print(arr[i][j]+"\t"); 输出数组值
}
System.out.println("\n");
}
}
public boolean play(int a,int b) { //对选中的数字给予String数组中相同位置的替换
if(string[a][b] !="?") {
System.out.println("该位置数字已显示");
return true;
}else {
int temp = arr[a][b]; //temp变量可以不定义
string[a][b] = String.valueOf(temp); //String.valueOf() 暂时未学到
print_2();
return false;
}
}
public void judge(int a,int b,int c,int d) { //用于判断数字是否相等 如果不相等 把String中相同位置的内容重新改成"?"
if(arr[a][b] ==arr[c][d]) {
}else {
string[a][b] = "?";
string[c][d] = "?";
}
}
public boolean win() { //用于String数组中是否还有"?"
for(int i = 0;i < arr.length; i ++) {
for (int j = 0;j < arr[i].length ; j ++ ) {
if(string[i][j] == "?") {
return false;
}else {
continue;
}
}
}
return true;
}
}
|
|