@Author : By Runsen
效果展现
猜数字游戏是一个简单,有趣的小游戏。游戏者通过输入一个指定区间的数字,与系统产生的随机数进行对比,然后输出相应的结果。
游戏运行时产生一个0-10之间的随机整数,要求用户从控制台输入数字
若输入的数字比产生的数字小,则输出:“太小了,再大一点!”;
若输入的数字比产生的数字大,则输出:“太大了,再小一点!”,
若输入的数字和产生的数字相等,则输出:“恭喜你猜对了!”然后退出程序

功能要求
猜数字:生成一个指定范围内的随机正整数,从命令行读取一个整数,如果和随机数相同,就 算猜中。
固定随机数的范围
支持每次猜数字游戏的猜测次数,在指定次数内没猜对,则猜数字失败,否则就是成功。
可以支持退出游戏
输出剩余的猜测次数
每次猜测后,如果未猜中,则提示本次猜测的数字比目标数字大还是小
游戏结束后,输出猜数字游戏的统计
没有猜中,要输出这次的目标数字
可以设置随机数的范围,可以设置最大猜测次数
功能分析
第一,需要是设置猜数的范围,和次数,如果超过这个次数就直over了。
第二,还有统计每次游戏的次数和猜中游戏的次数
第三,如果输入-1就是结束游戏,因此需要一个变量判断是不是在运行游戏。
最后,就是需要通过 Math.random生成一个随机数,判断猜数是不是相等,相等就是猜中,没有就次数加一。
第一步
我就设置1到8,一共猜数的次数是五次,
//创建Scanner从控制台读取输入
Scannerin=newScanner(System.in);
//游戏设置
intrangeStart=1;
intrangeEnd=8;
intguessTotal=5;
第二步
//游戏统计
inttotalGameCount=0;
inttotalCorrectCount=0;
第三步
booleanstopGame=false;
while(!stopGame){
//初始化本次游戏的变量
System.out.println("===================猜数字===================");
System.out.println("目标数已经生成,数字在"+rangeStart+"到"+rangeEnd+"之间,"+
"不包括这两个数。共有"+guessTotal+"次猜测的机会。输入-1随时结束游戏。");
//本次游戏是否开始了
booleangameStart=true;
//本次游戏是否开始了
booleangameStart=true;
//本次是否猜中数字
booleanguessCorrect=false;
while(guessLeft>0){}
最后一步
最后一步,一步的逻辑比较复杂,我直接上所有的代码
importjava.util.Scanner;
publicclassGuessNumber{
publicstaticvoidmain(String[]args){
//创建Scanner从控制台读取输入
Scannerin=newScanner(System.in);
//游戏设置
intrangeStart=1;
intrangeEnd=8;
intguessTotal=5;
//游戏统计
inttotalGameCount=0;
inttotalCorrectCount=0;
//是否结束游戏
booleanstopGame=false;
while(!stopGame){
//初始化本次游戏的变量
//游戏次数
intguessLeft=guessTotal;
//区间
intmod=rangeEnd-rangeStart;
//随机数0到1的小数
doublerandNum=Math.random();
System.out.println(randNum);
//求余数,保证是0到8
intnum=((int)(randNum*rangeEnd*100))%mod;
System.out.println(num);
num+=rangeStart;
System.out.println(num);
//存在num等于8或者1的清空
if(num<=rangeStart){
num=rangeStart+1;
}
if(num>=rangeEnd){
num=rangeEnd-1;
}
System.out.println("===================猜数字===================");
System.out.println("目标数已经生成,数字在"+rangeStart+"到"+rangeEnd+"之间,"+
"不包括这两个数。共有"+guessTotal+"次猜测的机会。输入-1随时结束游戏。");
//本次游戏是否开始了
booleangameStart=true;
//本次是否猜中数字
booleanguessCorrect=false;
while(guessLeft>0){
System.out.println("还有"+guessLeft+"次机会,请输入猜测的数字,回车确认");
intguessNum=in.nextInt();
//输入-1,结束游戏
if(guessNum==-1){
stopGame=true;
break;
}
if(guessNum<=rangeStart||guessNum>=rangeEnd){
System.out.println("请输入在"+rangeStart+"到"+rangeEnd+"之间,的数字,不包括这两个数。");
continue;
}
//只要至少猜过一次,就算玩过了。
if(gameStart){
totalGameCount++;
gameStart=false;
}
//可以用的猜测次数减1
guessLeft--;
if(guessNum==num){
totalCorrectCount++;
guessCorrect=true;
System.out.println("恭喜你猜对了!这次的数字就是"+num+
"。本次你共猜了"+(guessTotal-guessLeft)+"次。");
break;
}elseif(guessNum>num){
System.out.println("猜测的数字比目标数字大。");
}else{
System.out.println("猜测的数字比目标数字小。");
}
}
if(!guessCorrect){
System.out.println("本次的目标数字是"+num+"。这次没有猜中。");
}
}
System.out.println("共进行了"+totalGameCount+"次游戏,其中正确的为"+totalCorrectCount+"次");
}
}