目录
1.介绍及功能
介绍: 猜数字游戏是一种经典的猜测游戏,玩家需要根据提示猜测一个目标数字。在本篇文章中,我们将使用Java编程语言来实现一个简单的猜数字游戏。
功能:1.可以自定义生成数字区间
2.可以设置玩家猜的次数
3.可以统计游戏进行了几次
2.具体介绍
前置知识
Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float、byte 数组以及 double 类型的随机数,这是它与 random() 方法最大的不同之处。random() 方法只能产生 double 类型的 0~1 的随机数。
导入必要的类和库
在开始编写代码之前,我们需要导入java.util.Scanner
类,以便从用户输入中获取数据。这个类提供了一种方便的方式来读取用户输入。
import java.util.Scanner;
设置游戏参数
我们需要设置一些游戏参数,例如目标数字的范围、猜测次数等。在这个例子中,我们将设置目标数字的范围为99到66之间(不包括这两个数字),猜测次数为3次。
int targetMin = 66; int targetMax = 99; int maxAttempts = 3;
初始化游戏
在每次游戏开始之前,我们需要进行一些初始化操作。这包括生成一个随机的目标数字,并打印游戏的提示信息。
int target = generateRandomNumber(targetMin, targetMax); System.out.println("目标已经生成,数字在" + targetMin + "到" + targetMax + "之间,不包含这两个数字," + maxAttempts + "次机会,输入-1游戏结束");
进行游戏循环
在游戏循环中,玩家将根据提示输入猜测的数字,并根据猜测结果进行相应的处理。循环将继续,直到玩家猜中目标数字或猜测次数用尽。
while (attempts > 0) { // 获取玩家输入的猜测数字 int guess = scanner.nextInt(); attempts--; // 处理玩家输入的猜测数字 if (guess == -1) { // 玩家选择结束游戏 gameWon = true; gameOver = true; break; } else if (guess >= targetMax || guess <= targetMin) { // 玩家输入的数字超出范围 System.out.println("请输入在" + targetMin + "到" + targetMax + "之间的数"); continue; } else if (guess == target) { // 玩家猜中目标数字 gameWon = true; System.out.println("恭喜你猜对了,这次数字是" + target + "本次共猜了" + (maxAttempts - attempts) + "次"); break; } else if (guess > target) { // 玩家猜的数字比目标值大 System.out.println("你猜的数字比目标值大"); } else { // 玩家猜的数字比目标值小 System.out.println("你输入的值比目标值小"); } }
结束游戏并统计结果
当游戏结束时,我们将打印出玩家的游戏统计信息,包括玩了多少把游戏和猜对了多少次。
System.out.println("本次共玩了" + totalGames + "把,其中猜对了" + totalWins + "把");
3.完整代码
import java.util.Scanner;
public class shuzhiyouxi {
public static void main(String[] args) {
String redText = "\u001B[31m";
String blueText = "\u001B[34m";
String resetText = "\u001B[0m";
Scanner in = new Scanner(System.in);
//游戏设置
int zhuidashu = 99;
int zhuixiaoshu = 66;
int youxichishu = 3;
//游戏统计
int youxijinxingjichi = 0;
int youxiyinglejichi = 0;
//是否结束游戏
boolean jeishu = false;
while (!jeishu) {
//游戏初始化
int n = youxichishu;
int cha = zhuidashu - zhuixiaoshu;
double x = Math.random();
int mo = ((int) (x * cha * 100)) % cha;
mo += zhuixiaoshu;
//System.out.println(mo); 生成数字的值
if (mo <= zhuixiaoshu) {
mo = zhuixiaoshu + 1;
}
if (mo >= zhuidashu) {
mo = zhuidashu - 1;
}
System.out.println(blueText+"============================猜数字==========================="+redText);
System.out.println(redText+"目标已经生成,数字在" + zhuixiaoshu + "到" + zhuidashu + "之间,不包含这两个数字," + n + "次机会,输入-1游戏结束"+resetText);
//本次游戏开始
boolean kaishi = true;
//本次是否猜中
boolean jeishu1 = false;
while (n > 0) {
if (!jeishu1)
System.out.println("还有" + n + "次机会,请输入所猜的数字");
int shuru = in.nextInt();
n--;
if (shuru == -1) {
jeishu1 = true;
jeishu = true;
break;
}
if (shuru >= zhuidashu || shuru <= zhuixiaoshu) {
System.out.println("请输入在" + zhuixiaoshu + "到" + zhuidashu + "之间的数");
continue;
}
if (kaishi) {
youxijinxingjichi++;
kaishi = false;
}
if (shuru == mo) {
youxiyinglejichi++;
jeishu1 = true;
System.out.println("恭喜你猜对了,这次数字是" + mo + "本次共猜了" + (youxichishu - n) + "次");
break;
} else if (shuru > mo) {
System.out.println("你猜的数字比目标值大");
} else {
System.out.println("你输入的值比目标值小");
}
}
if (!jeishu1) {
System.out.println("很遗憾本次没有猜中,本次数字是:" + mo);
boolean jieshu = false;
}
}
System.out.println("本次共玩了" + youxijinxingjichi + "把,其中猜对了" + youxiyinglejichi + "把");
}
}