玩游戏学编程-猜数字

一些编程初学者的痛点在于认识的英语单词太少,不知道程序在运行过程中需要什么?通过开发游戏学习编程,是一个快速但又不会觉得枯燥的方法;在这篇简单的猜数字游戏中,来看看程序开发过程中逻辑是怎样形成的?为了达到期望的结果,需要做哪些工作?

猜数字游戏过程: 用户自己输入一个数字A和程序中产生的一个数字B进行比较,如果A大于B则提示太大了,否则提示太小了,直到输入的数字A与产生的数字B相等,游戏结束,程序还需要设置一个猜的次数,如果超过次数则没猜中则游戏失败,否则成功。


猜数字游戏

一、问题
  1. 程序中需要哪些变量?
  2. 用户要怎样输入?
  3. 怎样产生随机数字 ?
  4. 怎样使用循环和判断 ?
  5. 怎样创建对象 ? 它是用来干嘛的 ?
二、解决问题

使用Scanner对象获取玩家的输入,当然还需要System.in

定义变量input用于存储用户输入的数字,定义number存储计算机生成的随机数

为了控制循环和判断的逻辑还需要两个控制变量 running 和 guessed

为了控制玩家输入的次数,需要定义count计数器变量计数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package top.coolcode;

import java.util.Scanner;

public class GuessNumber
{
public static void main( String[] args )
{
//玩家需要输入,且输入的会是一个数字
Scanner sc = new Scanner(System.in);
//程序运行所需要的要素,我怎么会想到需要这个,你是怎样想到的?
boolean running = true; //控制游戏是否继续
boolean guessed = true; //控制是否要猜数字
//计算机帮我们生成的数字
int number = 0;
//游戏玩家输入的数字
int input = 0;
//记录猜的次数
int count = 1;

//游戏是否能一直玩,靠的是这个running
while(running) {
if(count>3) {
System.out.println("三次机会已用完,游戏失败. 您可以继续游戏;退出输入-1");
guessed = true;
}
//判断是否要猜数字
if(guessed==true) {
System.out.println("计算机已经随机产生一个数,范围是0~20");
System.out.println("您可以猜猜看, 退出输入 -1");
number = getRandom(20);
guessed = false;//设置为false,如果后续没有设置为true,就不会产生新的随机数
}
//如果上面的if分支进入了,那么说明随机数字已经产生
//游戏玩家输入的数字
input = sc.nextInt();
//判断用户输入
//如果用户输入的是-1表示结束游戏, 更改判断变量running为false,循环将终止
if(input == -1) {
running = false;
}
else if(input > number) {
System.out.println("输入的数字太大了,退出输入 -1");
}
else if(input < number) {
System.out.println("输入的数字太小了,退出输入 -1");
}
else if(input == number){
System.out.println("您猜对了,您可以继续游戏;退出输入 -1");
guessed = true; //如果玩家没有输入-1则此变量设置为true,会继续产生随机数字
}
count++;//次数累加
}
}

/**
* 定义一个函数用于产生随机数
* @param max
* @return
*/
public static int getRandom(int max) {
return (int)(Math.random()*max) + 1;
}
}

简单的猜数字游戏,重要的是知道如何定义和使用程序运行过程中需要的要素(变量),以及程序的执行流程。