【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点扑克牌游戏相关推荐

  1. 扑克牌用java实现_用java开发的扑克牌游戏程序源代码

    [实例简介] 主是一用java开发的扑克牌游戏项目的代码及相关资源,具有很大的参考价值.欢迎真正需要的人下载. [实例截图] [核心代码] ec940834-2821-4124-9822-7ceb14 ...

  2. Java实现简单扑克牌游戏

    扑克牌小游戏: 游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张,牌的类型有四种:♥,♣,♠,♦.牌的大小为从1~13.(此处为了简单,只取1 -5) ...

  3. Java实现梭哈扑克牌游戏

    源码链接:https://github.com/zhangdididi/CardGame <赌神>相信很多人都看过,也都见过电影中各种花里胡哨的搓牌发牌的经典场面,这种赌博的玩法就叫做梭哈 ...

  4. Java实现简易扑克牌游戏

    功能描述 1.创建扑克牌.包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王. 2.创建两个玩家.包括玩家id.姓名.手牌等集合,手牌为扑克牌的集合. 3.洗牌. ...

  5. java编写简易扑克牌游戏

    游戏功能描述 创建一副扑克牌: 包括四种花色:黑桃,红桃,梅花,方片 包括十三种点数:2-10,J,Q,K,A 创建两名玩家(or多名) 玩家至少要有ID,姓名,手牌等属性,手牌为扑克牌的集合 将创建 ...

  6. Java实现扑克牌游戏(简易炸金花)

    本篇将实现Java版的扑克牌游戏 目录 一.创建扑克牌Poker 二.游戏玩法创建 2.1买牌 2.2洗牌 2.3揭牌 三.测试游戏代码 一.创建扑克牌Poker 在游戏开始之前要创建扑克牌,其中扑克 ...

  7. java打印扑克牌_java实现简单扑克牌游戏

    本文实例为大家分享了java实现简单扑克牌游戏的具体代码,供大家参考,具体内容如下 扑克牌小游戏: 游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张, ...

  8. 计算机游戏纸牌技巧,扑克牌游戏“算24”的程序解法

    一种有趣的扑克牌游戏–算24 众多的扑克牌游戏中,算24是一种不错的锻炼反应力和计算能力的智力游戏,游戏规则大致是这样:从去掉大小王的一副扑克中任意抽取四张,读取上面的数字(其中A算1,2-10就是2 ...

  9. JAVA小游戏——扑克牌游戏

    游戏简介 一共两位玩家,发两轮牌,最后比较每个人手中最大的牌,较大的玩家获胜. 同花色中2最小,A最大.不同花色的排序为:方片<梅花<红桃<黑桃 (游戏无图形页面) 游戏源码 主类: ...

最新文章

  1. 原创:去繁存简,回归本源:微信小程序公开课信息分析《一》
  2. R语言包_knitr
  3. rocketmq中consumer设计与实现
  4. 【译】How Microsoft Lost the API War
  5. 如何为Apache JMeter开发插件(一)
  6. MySQL的join类型
  7. wxpython菜单栏嵌套窗口_如何在wxpython中使嵌套的Panel和Sizer工作
  8. 关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)
  9. 使用xampp和tiki搭建内网wiki
  10. EXT3-fs error和EXT4-fs error小总结
  11. 金田变频器说明书_金田BH386系列变频器使用手册.pdf
  12. WPS Office JS宏实现文件和数据的上传及下载
  13. 目前三大前端主流框架
  14. ZOJ 3204 Connect them
  15. javascript 中时区知识的整理 UTC GMT
  16. 汉语词性对照表[北大标准/中科院标准]
  17. 1032: 员工薪水 Python
  18. Postman团队协作开发
  19. BI神器Power Query(2)-- PQ数据源
  20. 阿里云ACP普尔文考试注意事项

热门文章

  1. 【狂神说笔记—— Java基础07-常用类】
  2. 哈工大计算机系统大作业-Hello的程序人生
  3. 2023考研一战浙大计算机专硕总分第15名经验贴
  4. 左耳朵耗子-左耳听风-技术专栏
  5. mysql函数更新字段随机数
  6. 景观生态学原理| 5 景观动态与模拟
  7. 手把手,嘴对嘴教你Spring Cloud 微服务实战 -- 初识Spring Cloud
  8. 关键词怎么布局,什么样的内容会参与排名【超越竞争对手】
  9. 防封号的原理是什么?怎样做到防封号?
  10. matlab-如何计算信噪比