import java.util.Scanner;
import java.util.regex.Pattern;
public class Game {
private int[] guessedNum;
private int[] scanNumber=new int[4];
private Scanner scan=new Scanner(System.in);
//游戏流程,外部只能通过此方法来进行游戏
public void gameRun(){
welcome();
while(true){
this.guessedNum=new GuessedNumber().getGuessNumber();
System.out.println(guessedNum[0]+""+guessedNum[1]+""+guessedNum[2]+""+guessedNum[3]);
for(int i=0;i<7;i++){
scanManager();
String result = compareNumber();
if(result.equals("4A0B")){
System.out.println("恭喜你猜出正确数字!");
break;
}else{
if(i==6){
System.out.println("很遗憾,没有猜出来");
System.out.print("正确答案为:");
for(int n=0;n<4;n++){
System.out.print(guessedNum[n]);
}
System.out.print("\n");
break;
}
System.out.println(result+"\t还有"+(6-i)+"次机会");
}
}
if(quitYesOrNo()){
continue;
}else{
break;
}
}
scan.close();
quitGame();
}
private void welcome(){
System.out.println("**********欢迎游玩猜数游戏**********");
}
//控制用户输入数字
private void scanManager(){
int number=0;
while(true){
System.out.print("输入一位四位数:");
String numStr=scan.next();
if(judgeScan(numStr)){
number=Integer.parseInt(numStr);
break;
}else{
System.out.println("输入错误,重新输入!");
}
}
this.scanNumber[0]=number/1000;
this.scanNumber[1]=number/100%10;
this.scanNumber[2]=number/10%10;
this.scanNumber[3]=number%10;
}
//判定所输入的内容,通过正则表达式固定为4位数
private boolean judgeScan(String numStr){
String regex="^\\d{4}$";
boolean boo=Pattern.compile(regex).matcher(numStr).find();
return boo;
}
//比较数字,返回此次比较结果,以xAxB的结果返回
private String compareNumber(){
int A=0,B=0;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(this.scanNumber[i]==this.guessedNum[j]){
if(i==j){
A+=1;
}else{
B+=1;
}
}
}
}
return A+"A"+B+"B";
}
//控制继续游戏规则
private boolean quitYesOrNo(){
while(true){
System.out.println("继续游戏吗?(Y/N)");
String str=scan.next();
if(str.equals("Y")||str.equals("y")){
return true;
}else if(str.equals("N")||str.equals("n")){
return false;
}else{
System.out.println("输入错误,重新输入!");
}
}
}
//退出
private void quitGame(){
System.out.println("谢谢游玩");
System.exit(0);
}
}