猜数字小游戏(Java GUI)

又到了学期末,又到了交各种各样作业的时间。悉听闻面向对象的小作业,诶,课程设计四选一,还没写,得嘞,得写了。

找一天,开始写,放正文

游戏规则

游戏规则,顾名思义,游戏的规则, 该项课程设计,要求我们自行设计游戏规则,那么,规则如下:

开始游戏后,产生一个没有重复数字的4位随机数,用户每猜一个数字,显示出“完全猜中的数字个数”和“猜中数字但位置错误的数字个数”,用户根据游戏提示的信息继续猜,直到猜中为止。一次猜对得100分,多一次扣十分,多于五次得50分。

核心代码

在本游戏中我们采用面向对象的思维,将游戏的各个组件模块化,我们先来看看游戏的核心代码逻辑:

import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;public class Game {int num = 0;private Set<Integer> numOfSet = new HashSet<Integer>();private int a = 0;private int b = 0;public Game(){Set<Integer> set = new HashSet<Integer>();set = makeNumber();numOfSet = set;Iterator<Integer> it = set.iterator();int t = 0;while (it.hasNext()){t = t*10+it.next();}num = t;System.out.println(num);}public void clear(){a=0;b=0;}public boolean mark(int num){int numSet1[] = new int[4];for (int i=0;i<4;i++) {int x = num%10;num = num/10;numSet1[3-i] = x;}Iterator<Integer> iterator = numOfSet.iterator();int numSet2[] = new int[4];for(int i=0;i<4&iterator.hasNext();i++){numSet2[i] = iterator.next();}for(int i=0;i<4;i++){if(numSet2[i]==numSet1[i]){a++;}}for (int i=0;i<4;i++){for(int j=0;j<4;j++){if(i != j&numSet1[i]==numSet2[j]){b++;}}}if(a==4){return true;}else {return false;}}public Set<Integer> makeNumber(){//生成随机数Set<Integer> set = new HashSet<Integer>();Random random = new Random();while (set.size()<4){int num = random.nextInt(10);if(num == 0){continue;}else {set.add(num);}}return set;}public int getA() {return a;}public void setA(int a) {this.a = a;}public int getB() {return b;}public void setB(int b) {this.b = b;}
}

makeNumber()方法用来生成需要猜的数字,mark(int num) 方法用来进行对本局游戏的得分分析,clear() 方法用于重开游戏时对分数数据进行初始化。

封装性

作为面向对象的设计(虽然学艺不精),对用户类进行了封装,如下:

public class User {private String User_id;private String name;private String password;private int score;public int getScore() {return score;}public String getUser_id() {return User_id;}public void setUser_id(String user_id) {User_id = user_id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public void setScore(int score) {this.score = score;}
}

除此之外,也有上一个小标里对游戏类的封装。

对JDBC操作的封装:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class SQL {static Connection conn = null;static {conn = SQLConnector.getConnection();//操作前获取连接}//定义更新操作的方法public static int executeUpdate(String sql) {int rows = 0;try {Statement stmt = conn.createStatement();//获取操作数据库对象rows = stmt.executeUpdate(sql);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("更新数据库操作发生异常");}return rows;}//使用预编译语句更新方法public static int executeUpdate(String sql,Object[]params) {int rows = 0;try {PreparedStatement pstmt = conn.prepareStatement(sql);for(int i = 0;i<params.length;i++) {pstmt.setObject(i+1, params[i]);}rows = pstmt.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("使用预编译语句更新数据库操作发生异常");}return rows;}//查询数据方法public static ResultSet executeQuery(String sql) {ResultSet rs = null;try {Statement stmt = conn.createStatement();rs = stmt.executeQuery(sql);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("查询数据操作发生异常");}return rs;}public static ResultSet executeQuery(String sql,Object[]params) {ResultSet rs = null;try {PreparedStatement pstmt = conn.prepareStatement(sql);for(int i = 0;i<params.length;i++) {pstmt.setObject(i+1, params[i]);}rs = pstmt.executeQuery();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("使用预编译语句查询数据操作发生异常");}return rs;}}

数据库设计

由于需要对用户成绩进行排序等,我们需要用到数据库这一技术,对数据库进行设计如下:

细枝末节

其次还有一些细枝末节的功能等,例如登录,注册,排序,游戏说明等一些无关紧要的功能,再次也就不赘述了,诶,如果是山东大学软件学院的兄弟姐妹的话,请参考大一下学期Java课设的相关功能,毕竟,咱也别重复造轮子(我单纯是因为懒

UI设计

好了,既然说到这了,那么来看看上边那堆代码套上UI是啥子样子吧, 上大图

开始界面

排行榜

登录界面

注册界面

游戏界面


总结

好了,由于课业比较烦人(选课一时爽,期末火葬场),课设论文一大堆,这个到这里就不多赘述了,这里,把该项目的源代码放到了Github中, 请各位大佬多多指教(如果大佬们不满意,轻点喷

Github链接:https://github.com/Firstpeople00/Record

斗胆请各位大佬点赞,关注

小玩意:猜数字小游戏(Java GUI)相关推荐

  1. 猜数字小游戏(JAVA)

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

  2. Java基于GUI完成的猜数字小游戏

    猜数字小游戏 不废话想看看效果吧! 当我们答对后就会出现: 如果你实在急着想知道答案: 简要说明: 所猜测的数字为1~1000: 只能通过按确定输出答案,未设置Enter键直接输入的监控. 退出请直接 ...

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

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

  4. 第三次学JAVA再学不好就吃翔(part28)--猜数字小游戏

    学习笔记,仅供参考 面向对象 猜数字小游戏 随机生成一个1 ~ 100之间的数,我来猜是几: import java.util.Scanner;class GuessNumTest {public s ...

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

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

  6. Python四行代码实现的猜数字小游戏,基于thinker,带GUI界面

    Python四行代码实现的猜数字小游戏,基于thinker,带GUI界面 from tkinter import * from tkinter import messagebox 导入提示框 from ...

  7. Java版 猜数字小游戏

    猜数字小游戏是一定是大家学习C语言编程的第一个或者是前几个小小项目了吧,今天,我们使用Java进行猜数字小游戏的实现 有对猜数字小游戏的基本思想不清楚的可以看这篇博客,里面是用C语言进行的实现以及相关 ...

  8. Java实现简单的猜数字小游戏

    一. 题目 猜数字小游戏规则: 系统自动生成一个随机整数然后由用户输入一个猜测的数字,如果输入数字比生成数大,则提示"猜大了":如果输入数字比生成数小,则提示"猜小了&q ...

  9. JAVA猜数字小游戏(随机数Random类)

    快乐JAVA,通过不断的摸索,从C到PHP再到Python,Python再到Java-终于被我找到了属于我的本命编程语言(泪目).学起来很开心,很快乐,这种感觉就像和初恋谈恋爱一样,编程不再是写代码, ...

最新文章

  1. 调整分区后盘符丢失的资料怎么寻回
  2. 计组-数据通路的功能和基本结构
  3. 记录一次svn报错:[Previous operation has not finished; run 'cleanup' if it was interrupted] 的排错过程
  4. ​热议 | 90%的程序员输在这点上!CTO:这份路线教你成为高手
  5. android源码国内镜像,Fuchsia OS 源代码国内镜像上线
  6. linux v4l2 示例程序,linux驱动由浅入深系列:camera驱动之二(基于高通平台的V4L2结构及代码分析)...
  7. 大数据有哪些基本特征
  8. logback日志pattern_Logback 配置文件这么写,TPS提高10倍
  9. Kolmogorov复杂性简介(转)
  10. 一种基于HBase韵海量图片存储技术
  11. 怎么设置电脑的固定IP地址?
  12. 【Dynamics365】创建报表
  13. 出国常用必备英语口语
  14. mysql中的查找算法_7种查找算法解析
  15. 微信自动跳转领支付宝红包JS实践
  16. 解决:whm搬站出现的mysql error message:Can't find any matching row in the user table
  17. 九度 1420 Jobdu MM分水果 -- 动态规划、深度优先搜索
  18. 飞檐走壁已经不是成龙甄子丹们的特技了,TA也可以做到!
  19. 寿险核心业务系统哪家强
  20. 液晶显示屏行业信息汇总

热门文章

  1. php gmtime,gmtime_s - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  2. WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码
  3. 【雕虫小技第4篇】Scratch中更多模块功能怎么使用?
  4. PHP资产管理系统源码可自由设计资产卡片
  5. php禁止直接访问网页,动态网页中不让直接访问PHP程序文件
  6. QT中创建条形统计图的方法
  7. 如何防止c++爆内存
  8. word字体放大后只显示一半_word 文档里的文字为什么只显示一半呢?
  9. mysql查询各科成绩前三名的记录,sql查询各科成绩前三名----详述过程,思路清晰不烧脑...
  10. 搜狗浏览器扩展帮你提升工作效率