package ymy.day3;
/**
* 这个类的功能是一个猜数游戏
* (1)系统随机产生数据
* (2)从终端输入数据跟产生数据进行比对
* (3)大:过大。小:过小。正确:正确
* (4)实现得分评价
* (5)只有10次输入机会
* (6)游戏结束提示是否重来
* */
import java.util.*;
public class GuessNumber {
public static void main(String[] args) {
boolean derail = true; //开关变量1
boolean flag = true; //开关变量2
int count = 10; //猜测次数
int point = 100; //用户游戏得分
int result = getRandom(100); //随机产生100以内的整数
while(derail){
System.out.print("请输入 1 开始游戏,输入 0 结束游戏,");
int state = Integer.parseInt(Input(type.tyint).toString());
if(state==1){
System.out.print("游戏开始,幸运数字以产生,快来猜猜看吧,");
//循环体开始
while (flag) {
if(count!=0){
//获取用户输入的数据
int number = Integer.parseInt(Input(type.tyint).toString());
if(result==number){
System.out.println("--------------------");
System.out.println("回答正确,恭喜游戏过关!");
System.out.println("您共使用了 "+(10-count)+"次机会,得到了 "+point+" 点分数");
System.out.println("--------------------");
flag = false; //数据初始化
count = 10; //数据初始化
point = 100; //数据初始化
}else if(number > result){
count--;
point=point-10;
System.out.println("数字过大,您还有 " + count + " 机会!");
}else if(number < result){
count--;
point=point-10;
System.out.println("数字过小,您还有 " + count + " 机会!");
}
}else{
System.out.println("很遗憾你的猜测次数已用完,请重新开始游戏!\n----------------------------------------------");
flag = false; //数据初始化
count = 10; //数据初始化
point = 100; //数据初始化
}
}
}else if(state==0){
System.out.print("游戏退出!");
derail = false;
}
}
}
/**
* 随机产生scope值以内的整数
* int scope:范围值
* 例:getRandom(10)--->产生10以内的随机数
* */
public static int getRandom(int scope){
int result = 0;
return result = (int)(Math.random() * scope);
}
/**
* 这是一个保存类型的枚举
* */
enum type{tyint,tyString,tyshort,tylong,tybyte,tyfloat,tydouble,tyboolean};
/**
* 万能输入,只要将参数选择为自己想要的输入类型,本函数就能返回你想要的数据类型
* 输入函数,调用此方法会提示用户输入数据,并返回用想要的类型的数据
* */
public static Object Input(type ty){
System.out.println("请输入数据:");
Scanner scan = new Scanner(System.in);
Object result = null;
switch (ty) {
case tyint:{
result = scan.nextInt();
}break;
case tyString:{
result = scan.next();
}break;
case tyshort:{
result = scan.nextShort();
}break;
case tylong:{
result = scan.nextLong();
}break;
case tybyte:{
result = scan.nextByte();
}break;
case tyfloat:{
result = scan.nextInt();
}break;
case tydouble:{
result = scan.nextDouble();
}break;
case tyboolean:{
result = scan.nextBoolean();
}break;
default:{
System.out.print("数据有误!");
}break;
}
return result;
}
}