最近老是布置了一道很有趣的题,是以前小时候玩的文曲星上的一个猜数字的游戏,让我们用JAVA面向对象写出来,写的时候遇到了不少麻烦,还好有万能的百度,学到了几个新的方法,期间用到了跳出for循环的新方法和如何比较两个数组是否相等;其中我用到了Arrays.equals(array, random),来比较两个数组是否相等,这个是之前没有学到过的;
这道题网上有很多不同的方法,我找到了一个,但是设计思路完全跟我想的不一样,代码太多也不想看,所以作为JAVA新人还是花了不少时间写了出来
下面是这道题的大体规则
这个游戏的规则:随机生成4个数(0~9之间的,而且不重复),然后由玩家来猜。一共有7次机会
每猜一次,电脑给玩家一定提示
如果猜的数字里有几个是要猜的数字但是位置不对,就显示几个B
如果猜的数字里有几个是要猜的数字而且对应的位置也一样,就显示几个A
例如:要猜的数字 0713
如果玩家输入2045
就显示0A1B,数字里有0但是位置不对
玩家再次输入0231
就显示1A2B
下面是我写的代码,各位大神请多多指出不足
首先main类
package com.lovo.test;
import com.lovo.homework.*;
public class TestMain2 {
public static void main(String[] args) {
System.out.println("欢迎您,本游戏为猜数字游戏,您只有7次机会");
GameMachine gm = new GameMachine();
Player pa = new Player();
int random[] =new int[4];
int array[] =new int [4];
random=gm.productNum();
array=pa.input();
gm.judge(array, random);
}
}
其次Player类
package com.lovo.homework;
import java.util.Scanner;
public class Player {
private int Num1;
private int Num2;
private int Num3;
private int Num4;
public Player() {
}
public int[] input() {
Scanner input = new Scanner(System.in);
System.out.println("请输入第1个数字");
this.Num1 = input.nextInt();
System.out.println("请输入第2个数字");
this.Num2 = input.nextInt();
System.out.println("请输入第3个数字");
this.Num3 = input.nextInt();
System.out.println("请输入第4个数字");
this.Num4 = input.nextInt();
int[] playerArray = { Num1, Num2, Num3, Num4 };
return playerArray;
}
}
最后是GameMachine类
package com.lovo.homework;
import java.util.Arrays;
public class GameMachine {
private int[] array = new int[4];
private int num = 0;
public int[] productNum() {
for1: for (int i = 0; i < array.length; i++) {
int random = (int) (Math.random() * 9);
for (int j = 0; j < array.length; j++) {
if (array[j] == random) {
i--;
continue for1;
}
}
array[i] = random;
System.out.println(random);
}
return array;
}
public void judgeA(int array[], int random[]) {
int num = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] == random[i]) {
num = num + 1;
}
}
System.out.print(num + "A");
}
public void judgeB(int array[], int random[]) {
int num = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < random.length; j++) {
if (array[i] == random[j] && i != j) {
num = num + 1;
}
}
}
System.out.print(num + "B" + "\n");
}
public void judge(int array[], int random[]) {
if (!Arrays.equals(array, random)) {
System.out.println("\n" + "很遗憾猜错了,您还有" + (6 - num) + "次机会,请加油,下面是本次提示");
this.judgeA(array, random);
this.judgeB(array, random);
Player pa = new Player();
array = new int[4];
array = pa.input();
num = num + 1;
}
if (Arrays.equals(array, random)) {
System.out.println("\n" + "恭喜您猜对了");
return;
}
if (num == 6) {
System.out.println("很遗憾,您的机会已经用光,请再玩一盘");
return;
}
judge(array, random);
}
}