网络视频中有很多猜数字得奖或者用蛋糕弄在脸上,此篇文章讲详细讲述其运行原理。
下面以选择猜物品价格为例,与双十一前的淘宝活动一样。
首先要给出一定猜取范围,在玩家输入自己所猜的数字时,系统自动的对比,然后给出答案,如果猜对,系统会结束运行,然后输出相对应的话。
如果猜的数字比系统的数字大,那就会报出,猜大了;反之,则报出,猜小了
具体流程如下:
首先要创建全局变量,username_name玩家参与的名字,plan_price系统产生的价格
其次要创建用户输入价格--user_name
如果是有多种可以猜的类型,可以用Switch语句进行选择,对于每一种类型赋上相对应的范围,以变随机出现的值在范围内。
其次是创建循环,在while循环中用if语句去判断输入值得大小。
如果猜的数字比系统的数字大,那就会报出,猜大了;反之,则报出,猜小了
也可以设置两个变量,控制范围,在if语句结尾加入变量的赋值,更容易得出结果。
以下是一个代码的流程:
- 显示菜单
- 选择物品类型:家电 文具
- 用户输入用户名,参与游戏
- 系统根据类别产生随机数
- 用户循环输入数字,每一个数字都判断大,小。
- 结束循环条件:用户猜对数字
import java.lang.invoke.SwitchPoint;
import java.util.Scanner;
public class Test_guest_price {
public static void main(String[] args) {
//定义全局变量,username玩家参与名字,plan_price系统产生价格
String username;
float plan_price=0.00f;
//定义菜单
System.out.println("---------------------");
System.out.println("游戏:幸运价格猜猜");
System.out.println(" 作者:张");
System.out.println(" 版本:v1.0");
System.out.println("----------------------");
//显示欢迎界面,当用户回车,进入用户的用户名输入
//这里的回车需要Scanner
Scanner scanner = new Scanner(System.in);
//先接收回车,在这部用户桥任何数据都不接收,这句没有接收,原因用户敲任何内容不需要保持
scanner.nextLine();
//这里username全局变量是需要接收的
System.out.println("请用户输入名字");
//这里username全局变量是需要接收的
username = scanner.next();
//接收完之后
System.out.println(username + "欢迎进入游戏空间,现在请选择的价格猜猜猜商品的累别");
//输出类别
System.out.println("****************");
System.out.println("1------家电");
System.out.println("2------文具");
System.out.println("****************");
//接收用户输入1或2,放置用户输入其他内容报错,这里不用nextLnt,还是用next
String user_choice=scanner.next();
//用户的user_choice内容输入后,只有1和2进行响应
//条件语句有确定值用switch
switch (user_choice){
case "1":
plan_price=Math.round(Math.random()*1000+1000);
break;
case "2":
plan_price=Math.round(Math.random()*99+1);
break;
default:
plan_price=Math.round(Math.random()*10000);
}
System.out.println("请开始猜价格");
//用户才数字,输入价格和判断是重复步骤,while才对,还有一个变量用户输入价格
float user_price = scanner.nextFloat();
//设定一个最终输出不同信息的标志位
boolean flag=false;
//考虑一下,用户在while没有出来过,做一个规定,如果用户输入0或者负数直接退出猜价格
//设置两个变量 price1,price2
float price1=0;
float price2=100;
while (!(user_price == plan_price)){
//进入到循环
if (user_price<=0){
//退出循环,用break
flag=true;
break;
}
//进入循环的条件没有等于,else中的意义,除了大于就是小于
if (user_price>plan_price){
System.out.println("猜大了");
//赋值
price2 = user_price;
// price1 = user_price;
}else {
System.out.println("猜小了");
//赋值
// price2 = user_price;
price1 = user_price;
}
System.out.println("价格在"+price1+"和"+price2+"之间");
//循环继续猜
user_price=scanner.nextFloat();
}
//最后输出用户到底是才出来还是没有猜出来
if(flag){
System.out.println("再接再厉");
}else {
System.out.println("你真聪明");
}
System.out.println("对此游戏有什么宝贵意见,可以联系作者。电话XXXXX");
System.out.println("恭喜你,猜对了,此价格是"+plan_price);
}
}