目录
前言
猜数字游戏是一款简单实现又十分有趣的游戏。它允许我们在无聊的时候,和众多程序猿们智慧的结晶Random标准库斗法。该游戏具备了游戏的一些基本特征,比如抽奖,最基本的人机交互,和一些基础的游戏判断。掌握该小游戏的制作原理对未来编写更有难度的游戏会有所裨益。
该游戏规则如下:玩家有三次猜数字的机会,看看自己写的数和随机库抽出的数是否相等,如果相等,则进入抽奖环节;如果三次机会用完后还没有猜中,则退出游戏;如果在游戏进行时想退出游戏,在控制台中输入0即可。补充一下,随机库抽出的数将会被控制在一个范围内,而该程序也会在控制台中打印出相应提示,也可以自行修改。
实现思路
这个游戏分为三部分。第一部分主要是初始化一些后面要用到的变量,第二部分是游戏主体,第三部分是赢家的抽奖环节。在第一部分中,由于我们是以人机交互的形式进行游戏,我们需要一个变量来接受玩家输入,在这里我们使用变量choice来接收,以及变量input去初始化Scanner类;我们需要计数cnt;我们需要用到isCorrect这个类型为布尔的变量,因为我们在第三部分的时候判断玩家是否猜中数字;我们还需要数组gift来储存奖品;最后我们需要一个随机变量randint来接收random库抽出的随机数。
第二部分的代码主体是while循环内的代码,他其实就是一个if...else条件判断。在cnt<2且!=0的情况下(之前提到过,输入为0代表退出游戏),如果玩家输入等于randint,则说明玩家猜中了,于是让isCorrect=true,然后退出循环;反之,若没有猜中,则继续猜,直到玩家猜中,输入0,或者用完三次猜测的机会——这三条每一条最后都会退出循环。
退出循环后到达第三部分。这里用到了判断语句——如果isCorrect==true,说明猜中了,则进行一次抽奖,索引是随机的;没猜中就什么都得不到了......
注:在代码中用到的random类的方法:nextInt(),表示随机整数。如果括号里面什么都没输入的话随机范围就是从0到int类型所能识别的最大值。若括号里面输入了一个值a,则随机范围就是从0~a(小于a)。如果是nextInt(a)+b,范围就变成了b~a+b(小于a+b)。
代码展示
package advance;
import java.util.Random;
import java.util.Scanner;
public class Guess_game_cls {//猜数字游戏,用到了Java随机库
private int choice;
private int cnt = 0;
private boolean isCorrect = false;
private String[] gift = {"50 penny", "thank you", "crisps" };
private Scanner input = new Scanner(System.in);
private int randint = new Random().nextInt(5) + 1;//随机数的范围:1~5
//输入
public void process() {
System.out.println("enter a number(1 to 5):");
this.choice = this.input.nextInt();//玩家输入
}
//游戏主体
public void game() {
System.out.println("guess the number the system record!");
System.out.println("you have 3 chances\n(enter 0 to exit!)");
this.process();
//判断玩家输入是否与random随机数相等
while (this.choice != 0 && this.cnt < 2) {//procedure
if (this.choice == this.randint) {
System.out.println("correct!");
isCorrect = true;
break;
}else {
System.out.println("incorrect!\n");
cnt += 1;
this.process();
}
//判断玩家是否猜中数字
}if (isCorrect)//gift
System.out.println("you get rewards!\n" + gift[new Random().nextInt(gift.length)]);
else
System.out.print("process ended");
}
};
//实例化类,并展示游戏
public class Main{
public static void main(String[] args) {
Guess_game_cls obj=new Guess_game_cls();
obj.game();
}
}