【Java】24点扑克牌游戏
【Charloe原创】
【前言】
这是学Java以来写的第一个比较有意思的东西——GUI界面的24点扑克牌游戏。大概是这个样子:
【功能介绍】
一、随机生成四张扑克牌,按下Refresh按钮可以刷新牌
二、按下Verify按钮,可以检测用户输入的24点表达式是否合法,答案是否正确
三、按下Find A Solution按钮,为当前的四张扑克牌找出24点的计算方法,如果无解则显示无解
【实现分析】
这里逐步分析每个功能的实现思路。
【功能一】
工具:54张扑克牌的图片包。(大、小王用不上)
这个比较好实现。定义一个int类型名为card的含4个元素的数组,生成四个不同的随机数存在数组里面。根据随机数,然后在GUI界面上显示出来。
【功能二】
这里需要判断表达式的三个方面:
1、用户输入的表达式是否合法,即是否符合数学表达式的规范,如括号是否匹配、运算符是否合法等等
表达式的计算应该有挺多方法,我本是打算用栈的数据结构来实现,但后来在网上找到一个非常巧妙的递归算法,就用了这个,没有自己写一个。
2、用户输入的表达式中所用到数值是否与扑克牌一一对应,即一张牌只能用一次、所有牌必须用上等等
先分割字符串,将表达式中的数字分离出来,然后在判断是否一一对应。我是用链表来判断一一对应的,每找到一个相同元素,就从链表中删除它。
3、表达式的答案是否为24
这个直接判断1中的结果就可以了。
【功能三】
根据当前的扑克牌,找到一个表达式,计算出的值为24.
说实话,这个功能我是用一种很笨但有效的方法实现的:遍历。
这里共有四个数值、三个运算符,那这个形式可以列出所有的表达式:(((num op num)op num)op num)。四个数值都是card数组里面的值,三个运算符是四个基本运算符{+ - * /}之三。这里我用了七层for循环嵌套,实际上就是七个符号的全排列。
用这种方法,找到一个表达式就不困难了。
这里肯定有更好的方法,欢迎大家一起来讨论。
【源码奉上】
这里直接放IntelliJ IDEA的工程包,如果不是用IDEA作为IDE的网友也可以在src目录下找到.java源代码。
(初学Java,代码风格很烂请多多包容)
百度网盘:https://pan.baidu.com/s/1-LZ5Rv4Vuvpin92KAz18Bw
提取码:tp22
【总结】
小小的自我总结一下吧。
1、Java学到现在,什么样的代码风格是好,什么样的代码风格是不好还不是很清楚。书上的例子,一会儿是这个风格,一会儿是那个风格,所以我就稀里糊涂,感觉找不到标准。
2、虽然说Java有些方面和Qt很像,但还是有很多方面是不一样的。我在学Java时,总会以Qt的思维去思考,这经常给我造成困扰,我要以Java的思维去写代码。
3、Java里有些东西使用起来很灵活。这就造成,我知道这个东西,但我不知道怎么使用,或者说使用起来很僵硬很拘谨。比如Lambda表达式、内部类、匿名类等,我还不很懂什么时候应该使用它们,什么时候最好不要使用他们。
4、要想精通Java,还有很长的路要走。
在学习过程中,我感觉很充实。越努力越幸运。
【Java】24点扑克牌游戏相关推荐
- 扑克牌用java实现_用java开发的扑克牌游戏程序源代码
[实例简介] 主是一用java开发的扑克牌游戏项目的代码及相关资源,具有很大的参考价值.欢迎真正需要的人下载. [实例截图] [核心代码] ec940834-2821-4124-9822-7ceb14 ...
- Java实现简单扑克牌游戏
扑克牌小游戏: 游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张,牌的类型有四种:♥,♣,♠,♦.牌的大小为从1~13.(此处为了简单,只取1 -5) ...
- Java实现梭哈扑克牌游戏
源码链接:https://github.com/zhangdididi/CardGame <赌神>相信很多人都看过,也都见过电影中各种花里胡哨的搓牌发牌的经典场面,这种赌博的玩法就叫做梭哈 ...
- Java实现简易扑克牌游戏
功能描述 1.创建扑克牌.包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王. 2.创建两个玩家.包括玩家id.姓名.手牌等集合,手牌为扑克牌的集合. 3.洗牌. ...
- java编写简易扑克牌游戏
游戏功能描述 创建一副扑克牌: 包括四种花色:黑桃,红桃,梅花,方片 包括十三种点数:2-10,J,Q,K,A 创建两名玩家(or多名) 玩家至少要有ID,姓名,手牌等属性,手牌为扑克牌的集合 将创建 ...
- Java实现扑克牌游戏(简易炸金花)
本篇将实现Java版的扑克牌游戏 目录 一.创建扑克牌Poker 二.游戏玩法创建 2.1买牌 2.2洗牌 2.3揭牌 三.测试游戏代码 一.创建扑克牌Poker 在游戏开始之前要创建扑克牌,其中扑克 ...
- java打印扑克牌_java实现简单扑克牌游戏
本文实例为大家分享了java实现简单扑克牌游戏的具体代码,供大家参考,具体内容如下 扑克牌小游戏: 游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张, ...
- 计算机游戏纸牌技巧,扑克牌游戏“算24”的程序解法
一种有趣的扑克牌游戏–算24 众多的扑克牌游戏中,算24是一种不错的锻炼反应力和计算能力的智力游戏,游戏规则大致是这样:从去掉大小王的一副扑克中任意抽取四张,读取上面的数字(其中A算1,2-10就是2 ...
- JAVA小游戏——扑克牌游戏
游戏简介 一共两位玩家,发两轮牌,最后比较每个人手中最大的牌,较大的玩家获胜. 同花色中2最小,A最大.不同花色的排序为:方片<梅花<红桃<黑桃 (游戏无图形页面) 游戏源码 主类: ...
最新文章
- 原创:去繁存简,回归本源:微信小程序公开课信息分析《一》
- R语言包_knitr
- rocketmq中consumer设计与实现
- 【译】How Microsoft Lost the API War
- 如何为Apache JMeter开发插件(一)
- MySQL的join类型
- wxpython菜单栏嵌套窗口_如何在wxpython中使嵌套的Panel和Sizer工作
- 关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)
- 使用xampp和tiki搭建内网wiki
- EXT3-fs error和EXT4-fs error小总结
- 金田变频器说明书_金田BH386系列变频器使用手册.pdf
- WPS Office JS宏实现文件和数据的上传及下载
- 目前三大前端主流框架
- ZOJ 3204 Connect them
- javascript 中时区知识的整理 UTC GMT
- 汉语词性对照表[北大标准/中科院标准]
- 1032: 员工薪水 Python
- Postman团队协作开发
- BI神器Power Query(2)-- PQ数据源
- 阿里云ACP普尔文考试注意事项