这里是Java系列文章,主要介绍有Java的使用及Java相关的,如Java语言本身以及Java等级考试
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
因此,为了更好的使用Java,加油学习吧!
关于作者:
· 小白(Libra),计算机兴趣爱好者,Java,python,C,Hadoop
· Email:717560136@qq.com
· GitHub:https://github.com/Regel-zack
转载请注明出处
前言
Java可以实现一些独特的小游戏,例如说飞机大战,五子棋等,或者就如本篇博客所讲的猜数游戏。
目录
正文
第一版可以看过往文章,这一次优化了说明,增加了次数限制,增加了新的语音播报
让整个游戏显得更加的欢乐
以下为游戏内试玩截图
这是刚进游戏的时候截图
这是第一次猜错之后的游戏截图
这是最后一次将机会用尽之后的截图
可以看到比第一代优化的还是可以的,但是代码内部还是比较的,乱
import java.util.*;
public class Excel {
public static void main(String[] args) {
// 欢迎语
System.out.println("Welcome to play!");
System.out.println("正在生成随机数中,请稍后……");
// 开始制作随机数
int [] a = new int[4];
a = random_num();
int num = 0;
for (int j = 0;j<a.length;j++){
num = num*10+a[j];
}
// 打印输出随机数
//System.out.println(num);
System.out.println("已经生成了四位随机数,没有重复,你的输入也不能重复哦,开始愉快的游戏吧!");
int count = 10;
// 用户输入自己的答案
while (true){
int sum = 0,side = 0,score = 0;
System.out.println("你认为的答案是:");
Scanner admin_input = new Scanner(System.in);
int admin_num = admin_input.nextInt();
int [] admin_num_arrays = new int[4];
admin_num_arrays[0] = (int) admin_num / 1000;
admin_num_arrays[1] = (int) (admin_num - admin_num_arrays[0] * 1000) / 100;
admin_num_arrays[2] = (int) ((admin_num - admin_num_arrays[0] * 1000) - admin_num_arrays[1] * 100) / 10;
admin_num_arrays[3] = (int) ((admin_num - admin_num_arrays[0] * 1000) - admin_num_arrays[1] * 100) - admin_num_arrays[2] * 10;
boolean admin_repeat = true;
for (int i = 0;i < 4;i++){
switch (i){
case 0:
break;
case 1:
if (admin_num_arrays[i] == admin_num_arrays[i-1]){
admin_repeat = false;
}
break;
case 2:
if (admin_num_arrays[i] == admin_num_arrays[i-1]){
admin_repeat = false;
}
if (admin_num_arrays[i] == admin_num_arrays[i-2]){
admin_repeat = false;
}
break;
case 3:
if (admin_num_arrays[i] == admin_num_arrays[i-1]){
admin_repeat = false;
}
if (admin_num_arrays[i] == admin_num_arrays[i-2]){
admin_repeat = false;
}
if (admin_num_arrays[i] == admin_num_arrays[i-3]){
admin_repeat = false;
}
break;
}
}
if (admin_repeat == false){
System.out.println("你输入的数字有重复的,不可以重复哦!");
continue;
}
for (int i = 0;i < 4;i++){
for (int j = 0;j <4;j++){
score = Judge_num_0(admin_num_arrays[i],a[j]);
if (i == j && score == 1)
{
side++;
sum++;
continue;
} else if (score == 1)
{
sum++;
continue;
}
}
}
System.out.println("正确的数字位置个数是:" + side);
System.out.println("正确的数字个数是:" + sum);
if (sum > side){
System.out.println("只是数字位置错了一些,再思考一下吧!");
}
if (side == 4){
System.out.println(num);
break;
} else {count--;}
if (count < 1){
System.out.println("啊哦,你错误次数到十次了,游戏结束了,正确的数字是" + num + ",下一次就会猜出来啦!");
break;
} else {
System.out.println("你的机会还剩下" + count + "次");
}
}
}
public static int[] random_num(){
int max = 9,min = 0;
int [] num = new int[4];
boolean repeat = false;
for (int i = 0;i < num.length;i++){
num[i] = (int) (Math.random() * (max-min)+min);
switch (i){
case 0 :
break;
case 1 :
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
break;
case 2 :
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-2]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-2]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-2]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-2]){
num[i] = (int) (Math.random() * (max-min)+min);
}
break;
case 3 :
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-2]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-3]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-2]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-3]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-2]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-3]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-1]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-2]){
num[i] = (int) (Math.random() * (max-min)+min);
}
if (num[i] == num[i-3]){
num[i] = (int) (Math.random() * (max-min)+min);
}
break;
}
}
return num;
}
public static int Judge_num_0(int num,int a){
if (num == a) {return 1;} else return 0;
}
}
小结
至此,我们就做出了一个比上一个版本更加好用的猜数游戏了。
结语
我是Libra,一位永远追求公平的学习者。