技术需求
- 输入&输出流的使用
- 随机数生成
- 文本处理
游戏规则
程序会生成 0~9 四个不相同的数字,随后由用户猜测四个数字,每次猜测后会进行提示。提示内容为 XAYB ,其中 X 代表不仅数字正确,且数字所处的位置也正确的数字的数量,Y 代表只有数字正确,但数字所处的位置不正确的数字数量,经过若干轮猜测后,用户可推导出正确答案。
代码展示
package top.eastcloud;
//import java.util.Scanner;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("你好,欢迎来到猜数字1小游戏,请猜四个数字,输入形式为0123,反馈形式为XAYB");
System.out.println("其中,X为猜对且位置正确的数,Y为猜对蛋位置不正确的数");
System.out.println("若想重新开始请输入【next】,退出请输入【exit】");
boolean breakSignal = true;
while(breakSignal){
System.out.println("=====游戏开始=====");
String randomNumber = getRandomNumber(); // get a number from 0 to 9999
System.out.println(randomNumber);
// heck
int round = 2;
while(true){
System.out.print("请输入数字:");
String input = sc.nextLine();
if(input.equals("next")){
System.out.println("正在重开游戏");
break;
}
if(input.equals("exit")){
System.out.println("退出游戏");
breakSignal = false;
break;
}
if(!checkInput(input)){
System.out.println("非法的输入,长度异常或有重复项。");
continue;
}
if(input.equals(randomNumber)){
System.out.println("恭喜你!用时" + round + "轮就猜中了数字!");
System.out.println("正在重开游戏");
break;
}
System.out.println(getStringOutput(input, randomNumber));
}
}
}
private static String getRandomNumber(){
StringBuilder string = new StringBuilder();
Random random = new Random();
ArrayList<Integer> r = new ArrayList<>(); // create an array to save created number
for(int i=0;i<4;i++){
int t = random.nextInt(9);
while(r.contains(t)){
t = random.nextInt(9);
}
r.add(t);
string.insert(0, t);
}
return string.toString();
}
private static boolean checkInput(String input){
if(input.length() != 4){
return false;
}
ArrayList<String> l = new ArrayList<>();
for(int i=0;i<4;i++){
if(l.contains(input.substring(i,i+1))){
return false;
}
l.add(input.substring(i,i+1));
}
return true;
}
private static String getStringOutput(String num, String rand){
int a=0;
int b=0;
for(int i=0;i<4;i++){
if(num.charAt(i)==rand.charAt(i)){
a = a + 1;
}
if(rand.contains(num.substring(i,i+1)) && num.charAt(i)!=rand.charAt(i)){
b = b + 1;
}
}
return a + "A" + b + "B";
}
}
评论0
暂时没有评论