当前位置:网站首页>SGDP(1)——猜数字游戏
SGDP(1)——猜数字游戏
2022-08-02 03:26:00 【copcin】
SGDP,Small Game Development Practice(小游戏开发实战),不要以为这个缩写很高级,写它纯粹是为了能让标题短一点~
这是一个为了Java学习实战而做的小专辑,里面的游戏材料大部分都是我把Python书里的游戏项目
俗话说,万事开头难,这个系列的第一个项目总是要来点“难”的
废话少说,如下是这个“难”项目的Java实现
---------------------------正文----------------------------
Java实现
想直接看到运行效果的可以直接复制粘贴(但不建议)
package guess;
import java.util.Random;
import java.util.Scanner;
/**
* 猜数字
* @author Copcin
*/
public class GuessNumber {
//定义类变量number
public static int number=0;
//上限
public static final int maxNum=100;
/**
* 生成随机数
* @return 随机的小于100的整数
*/
public static int gengerateRandint() {
Random random=new Random();
return random.nextInt(maxNum);
}
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("欢迎来到猜数字游戏!");
System.out.println("在任何时候,输入-404即可退出。");
game:
while (true){
// 次数计数器
int count=0;
number=gengerateRandint();
System.out.println("数字已初始化完成");
guess:
while (true) {
System.out.print(String.format("输入一个大于等于0小于%s的整数:",maxNum));
Scanner scanner=new Scanner(System.in);
int input=scanner.nextInt();
count++;
if (input==-404) {
System.out.println("谢谢您的游玩!");
break game;
}
if (input==number) {
System.out.println("恭喜你,猜对了!");
break guess;
} else if (input>number) {
System.out.println("再小些");
} else if (input<number) {
System.out.println("再大些");
}
}
System.out.println("恭喜!你猜了"+count+"次!\n");
}
}
}
运行效果:
欢迎来到猜数字游戏!
在任何时候,输入-404即可退出。
数字已初始化完成
输入一个大于等于0小于100的整数:13
再大些
输入一个大于等于0小于100的整数:70
再大些
输入一个大于等于0小于100的整数:90
再大些
输入一个大于等于0小于100的整数:99
再小些
输入一个大于等于0小于100的整数:95
再小些
输入一个大于等于0小于100的整数:92
再小些
输入一个大于等于0小于100的整数:91
恭喜你,猜对了!
恭喜!你猜了7次!
数字已初始化完成
输入一个大于等于0小于100的整数:-404
谢谢您的游玩!
接下来进行逐行分解(=-=)
第1~10行:包声明,引入Random类与Scanner类。第一行声明文件在guess包中(Eclipse会自动为你生成),第3~4行引入了Random类和Scanner类,这两个类后面会用到,第5~8行是注释文档;
第11~15行:声明类与全局常/变量。第11行声明了GuessNumber类,12~13行定义了一个数字,它就是后面我们要猜的数字,后面会为它赋随机值,14~15行定义了我们要猜的数字的最大值maxNum,它是一个全局常量,它决定了随机生成的数字最大是多少,如果想让游戏变得难一点,可以加大maxNum,反之亦然;
第16~25行:gengerateRandint方法。第17~20行是注释文档,标识了方法作用与返回值,第21~24行是方法主体,22行创建了一个Random的实例对象,23行使用random.nextInt(maxNum)生成了一个大于等于0的小于100(即maxNum)的随机数,并返回它;
第26~58行:程序主体。在这里将其分段:
第26~29行:定义main方法。第26行是因为强迫症想抑制警告才写的,可要可不要,第27行定义了main函数,第28~29行打印了欢迎语句(有没有注意到一个彩蛋,-404退出程序);
第30~35行:主循环开始。第30行给外层循环贴了标签game(后面会用到),第31行主循环开始,第33行定义了count变量,用来给猜数记录次数,第34行用到了刚刚写的gengerateRandint方法,将随机数赋值给全局变量number,第35行在屏幕上打印“数字已初始化完成”,打印它的原因主要是因为在第2次及之后的游玩中,直接提示输入数字会很突兀(当然不想要的也可以删~);
第36~41行:内部循环开始。第36行给内层循环贴了标签guess,第37行内部循环开始,第38行用System.out.print()方法打印提示信息,这里简述一下System.out.print()与System.out.println()的区别:
System.out.println("Hello");
System.out.println("World");输出是:
Hello
World而
System.out.print("Hello");
System.out.print("World");输出是:
HelloWorld发现区别了吗?System.out.println()方法会在打印文本的时候自动打印换行符,而System.out.print()方法则不会(忽然感觉这一句这么好理解的话用了一页篇幅来说明好浪费纸张)
第39~40行读取了用户输入并把它转为int数值,保存在input变量中,这里用到了Scanner.nextInt()方法,第41行将次数计数器count加一;
第42~54行:判断用户输入。第42~45行判断用户输入是不是-404(小彩蛋),如果是在打印“谢谢您的游玩!”就退出程序,这里用到了我们刚才贴的标签game,在贴了标签后就可以很方便地用如下形式continue/break 循环:
continue/break 标签;第46~54行的意思只要不是学Java时间不超过3天的童鞋应该都能看懂,童鞋自行理解~;
第55~58行:打印猜数次数。第55行打印猜数次数,即次数计数器count,末尾的\n换行符是为了先空一行再运行第二次。
边栏推荐
猜你喜欢

清理c盘爆满告急,C盘清理

The CTF introduction of PHP file contains

账务处理程序、记账凭证账务处理程序、汇总记账凭证账务处理程序、科目汇总表账务处理程序、会计信息化概述、信息化环境下会计账务处理的基本要求(此章出1道小题)

xxe of CTF

GreenOptic: 1 vulnhub walkthrough

超级云APP,陪伴您一起成长的软件

The first time to tear the code by hand, how to solve the problem of full arrangement

会计账簿、会计账簿概述、会计账簿的启用与登记要求、会计账簿的格式和登记方法

记账凭证的种类、记账凭证的基本内容、记账凭证的填制要求、记账凭证的审核

ES6 array extension methods map, filter, reduce, fill and array traversal for…in for…of arr.forEach
随机推荐
(7) superficial "crawlers" process (concept + practice)
Command Execution Vulnerability
学IT,找工作——移除链表元素
一个网络安全小白鼠的学习之路—nmap高级用法之脚本使用
GreenOptic: 1 vulnhub walkthrough
账务处理程序、记账凭证账务处理程序、汇总记账凭证账务处理程序、科目汇总表账务处理程序、会计信息化概述、信息化环境下会计账务处理的基本要求(此章出1道小题)
超级云APP,陪伴您一起成长的软件
不懂“赚钱逻辑”,你永远都是社会最底层(广告电商)
file contains vulnerabilities
管理会计(对内)指引、管理会计要素及其具体内容(可能考,考前记一下,推荐记一下四个大点即可)、
CTF introductory notes ping
c语言用栈实现计算中缀表达式
File upload vulnerability
Introduction to PHP (self-study notes)
解密:链动2+1的商业模式
【一句话攻略】彻底理解JS中的回调(Callback)函数
Shuriken: 1 vulnhub walkthrough
Uniapp | compatibility problems in the development of (to be continued)
The learning path of a network security mouse - the basic use of nmap
英语每日打卡