(声明:本文部分图片来自网络,如有侵权请联系,将第一时间删除或更换图片)

本文目录

  • 1、前言
  • 2、规格说明
  • 3、源代码
  • 4、运行结果
  • 5、感想

1、前言

我在自己的博客里上传了一些本科时编过、最近又改良了一遍的C语言程序,已有些时日了。好家伙,要是再不搞点Java,莫不要真以为我的主方向是C语言吧!
于是乎,今天就带来一个Java编写的项目,是一个我小时候(大概2007年左右)玩过的,小灵通里自带的猜数字游戏。
说到猜数字,同志们最先想到什么?是系统生成一个随机数,让用户来猜,然后系统再告诉你“大了”、“小了”这样的猜数字游戏?拜托,这样子的未免也太简单了吧!除了用来启发二分查找(binary search)思维,对于逻辑推理能力的锻炼可以说毫无卵用。
而我此篇带来的猜数字,并非此类,请各位看官放心食用。这个猜数字对于高手以下的一般人来说还是有点难度的。它也会给提示,但它不会提示你大了小了,它只会告诉你你的正确程度如何。什么意思呢?规格解说里见。总之,我小时候特别喜欢玩这个猜数字。主要是因为它的界面上有一只非常可爱的小青蛙,每次玩的时候总能让我想起更小的时候在小霸王游戏机上面玩的大眼蛙大冒险。大多数时候我都猜不到数字,偶尔我能猜准。而猜对的话小青蛙就会开心地蹦蹦跳跳,说你“聪明绝顶”。
而在这次编程中,我也尽量去还原了童年手机游戏的原貌,包括提示的格式与猜对时的标语。只要是我能记得的,都努力去还原,以此来致敬经典。

2、规格说明

【外部规格】
系统随机生成一个不重复的四位数字,用户也猜一个不重复的四位数字。
系统会比较自己想的数字和用户猜的数字,并告诉用户正确的情况如何。如果用户有一位数字,既猜对了数值,又猜对了位置,则将这位数字计数为A。而如果用户猜对了数字却没有猜对位置,则计数为B。用户总计有10次机会,每猜一次,系统就会告诉用户有几A几B。一直猜到4A0B,或者10次机会全部耗尽为止,系统会公布答案。

运行示例
(系统生成的数字是:1295)←当然,程序实际运行时不会显示这句
我已经想了一个数字,你猜它是几?1234
2A0B
我已经想了一个数字,你猜它是几?5678
0A1B
我已经想了一个数字,你猜它是几?1278
2A0B
我已经想了一个数字,你猜它是几?1250
2A1B
我已经想了一个数字,你猜它是几?1259
2A2B
我已经想了一个数字,你猜它是几?1295
4A0B♬聪明☆绝顶♪

【内部规格】
开发所用语言:Java
类文件数:2个
代码总行数:Test类71行+Rule类29行=100行
方法总数:Test类1个(main方法)+Rule类7个=8个

3、源代码

Rule.java

public class Rule{private int digit;public Rule(int digit){this.digit = digit;}public int hitCounter(int[] num, int[] guess){int hit = 0;for(int i = 0; i < this.digit; i++)if(num[i] == guess[i]) hit++;return hit;}public int blowCounter(int[] num, int[] guess){int blow = 0;for(int i = 0; i < this.digit; i++)for(int j = 0; j < this.digit; j++)if(guess[i]==num[j] && i!=j) blow++;return blow;}public int getThousands(int num){return num / 1000;}public int getHundreds(int num){return num / 100 % 10;}public int getTens(int num){return num / 10 % 10;}public int getOnes(int num){return num % 10;}}

Test.java

import java.util.*;
public class Test{static final int DIGIT = 4;public static void main(String[] args){Random rand = new Random();Scanner input = new Scanner(System.in);Rule judge = new Rule(DIGIT);int[] number = new int[DIGIT];int[] guess = new int[DIGIT];int i = 0, j;int chance = 10, userInput = 0;int hit, blow;boolean isSame = false;//生成四位不重复的数字do{isSame = false;number[i] = rand.nextInt(10);for(j = 0; j < i; j++){if(number[i] == number[j]){isSame = true;break;}}if(isSame) continue;else i++;}while(i<DIGIT);while(true){System.out.print("我已经想了一个数字,你猜它是几?");userInput = input.nextInt();if(userInput > 9999){System.out.println("数位不对!应该输入四位数。");continue;}guess[0] = judge.getThousands(userInput);guess[1] = judge.getHundreds(userInput);guess[2] = judge.getTens(userInput);guess[3] = judge.getOnes(userInput);isSame = false;for(i = 0; i < DIGIT; i++){for(j = 0; j < i; j++){if(guess[i] == guess[j]){System.out.println("不可以输入重复的数字!请重新输入。");isSame = true;break;}}if(isSame) break;}if(isSame) continue;else chance--;hit = judge.hitCounter(number, guess);blow = judge.blowCounter(number, guess);System.out.printf("%dA%dB\n", hit, blow);if(hit == 4){System.out.println("♬聪明☆\n\t绝顶♪");break;}else{if(chance == 0){System.out.println("答案:"+number[0]+number[1]+number[2]+number[3]);System.exit(0);}}}}
}

4、运行结果

我已经想了一个数字,你猜它是几?1024
0A1B
我已经想了一个数字,你猜它是几?1234
0A0B
我已经想了一个数字,你猜它是几?5678
1A2B
我已经想了一个数字,你猜它是几?5670
1A2B
我已经想了一个数字,你猜它是几?5608
1A2B
我已经想了一个数字,你猜它是几?5078
0A3B
我已经想了一个数字,你猜它是几?0678
2A2B
我已经想了一个数字,你猜它是几?0687
4A0B
♬聪明☆绝顶♪

5、感想

没什么技术上的心得,那就来谈谈感想吧。纯属个人观点,仅供参考,请以你自己的观点为标准。
①有些机器好好保存,不要因为不再使用了就丢弃。因为现在技术发展飞快,也许再过几年你想怀个旧,你想怀旧的那种机器就早已被市场淘汰,不再那么容易入手了。
②多做点小项目来练Java OOP(面向对象)编程。最典型的例子就是像这样的小游戏啦,什么什么的管理系统啦(比如,图书馆、班级、饭店,等等)之类的。
今天的内容有点短,到此为止吧。小狐与你下次再见!

【项目展示】一个有点难度的猜数字小游戏(Java编写)相关推荐

  1. c语言生成随机数猜数字大小,产生一个随机数,进行猜数字小游戏

    产生随机数 Random:用于产生随机数 使用步骤: 1.导包 import java.util.Random; 2.创建对象 Random r = new Random(); 3.获取随机数 int ...

  2. 猜数字小游戏(JAVA)

    猜数字小游戏 题目描述 代码 运行效果 新增功能 思路 代码 运行效果 题目描述 猜数字(又称 Bulls and Cows )是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或 ...

  3. Python 小项目 猜数字小游戏

    欢迎来到<Python 小项目>专栏,这个专栏会不定时更新Python的小项目,大家可以订阅关注哦! 这次,我们要编写一个非常简单的猜数字小游戏! 先看看运行效果: 代码详细教学: 导入模 ...

  4. 《C语言初阶》 猜数字小游戏

    大家好,这篇文章主要教大家写个小游戏,学习编程的时候我们肯定都有一个梦想就是想写出属于自己的游戏.这次,我们就从0到1开始写一个非常简单的猜数字小游戏,当你写完时和你的朋友一起玩吧! 首先,我们制定一 ...

  5. 初识JAVA:猜数字小游戏案例---系统产生一个1-100之间的随机数,猜出这个数是多少?

    package com.pku.wuyu.io; import java.util.IllegalFormatCodePointException; import java.util.Random; ...

  6. html写一个猜数字游戏,JS实现网页端猜数字小游戏

    本文实例为大家分享了JS实现网页端猜数字游戏的具体代码,供大家参考,具体内容如下 题目描述 电脑产生一个0到100之间的随机数字,并且要求用户来猜,如果用户猜的数字比这个数字大,电脑会提示" ...

  7. 教你如何用C语言设计一个有趣的猜数字小游戏

    目录 前言 猜数字游戏 打印菜单 处理玩家选择的操作 编写猜数字游戏函数 游戏中要猜数字从哪来?(配置随机数生成器) 时间戳 开始生成随机数 game函数内部编写 完整代码 总结 前言 好久不见,今天 ...

  8. python编写一个简单的猜数字小游戏

    该脚本包含了python基础的部分内容,python初学者既可以学习借鉴,也可以向朋友去装13. 本次编写的内容需要导入一个第三方模块random,可获得规定范围的随机数. 首先打开pycharm中下 ...

  9. python实现简单小游戏_用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)...

    文章目录 用python开发一个有趣的猜数字小游戏 用于字符串的格式化,通过 {} 和 : 来代替以前的 % 1. python的GUI编程 1.1 pythonGUI常用库对比 Python 提供了 ...

最新文章

  1. Linux redhat 9.0 中挂载U盘的方法!
  2. 搭建网络及服务器系统,网络服务器搭建与管理
  3. 专家:大数据等新技术助力信息融合
  4. 纠正一个错误,分布式系统关注点第17篇
  5. Spring Boot————简介与Spring时代的承接
  6. JavaEE规范与系统结构
  7. 移动开发:给安卓软件开发初学者简单的教程
  8. sublime text3 快捷方式汇总
  9. Java实现图片上传
  10. C++中常引用的注意事项以及常引用和非常引用之间的转换
  11. 计算机设置定时关机win10,Win10电脑如何设置定时关机?Win10电脑设置定时关机命令...
  12. STM32F103红外遥控
  13. Python-GUI界面设计(tkinter)
  14. ROOT友华PT921G光猫
  15. 4针串口线接法图_​RS232串口线常见接法与引脚定义
  16. 59% 的程序员曾担心自己猝死!
  17. Msc.Marc模拟平板圆孔处应力集中:二维轴对称线弹性分析
  18. 为什么中国的大学,不搞单人宿舍?
  19. python 数据库表结构转为类_Python sql server和postgresql的表结构转换
  20. 云端服务器跑python代码,断开后台运行

热门文章

  1. 作为CTO,我为什么必须要求代码进行Code Review!
  2. Linux内核网络栈1.2.13-网卡设备的初始化流程
  3. 圆圈中最后剩下的数字
  4. 数字证书采用公钥体制进行加密和解密。每个用户有一个私钥,用它进行 (46)。。。
  5. python错误提示:TypeError: ‘builtin_function_or_method‘ object is not subscriptable
  6. NumPy库入门教程:基础知识总结
  7. 用python和opencv检测图像中的条形码
  8. MPASNET:用于视频场景中无监督深度人群分割的运动先验感知SIAMESE网络
  9. 爬虫不得不学之 JavaScript 函数对象篇
  10. 自动化部署脚本,给每一台主机装上JDK,且配好环境变量