java实现实现24点游戏点游戏
每次取出4张牌,使用加减乘除,第一个能得出24者为赢,这篇文章主要就为大家详细介绍了java实现24点游戏,具有一定的参考价值,感兴趣
的小伙伴们可以参考一下
游戏规则游戏规则
从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。
基本要求基本要求
随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式
列出表达式无重复
用户初始生命值为一给定值(比如3),初始分数为0。随机生成4个代表扑克牌牌面的数字或字母,由用户输入包含这4个数字或字母的运算表达式(可包含
括号),如果表达式计算结果为24则代表用户赢了此局。
使用计时器要求用户在规定时间内输入表达式,如果规定时间内运算正确则加分,超时或运算错误则进入下一题并减少生命值(不扣分)。
所有成绩均可记录在TopList.txt文件中。
解表达式基本思路解表达式基本思路
采用穷举法列举每一种存在的可能,接着判断是否值为24,如果等于24,则将表达式存入Set集合,最终遍历Set集合即可得到所有表达式。具体思路如下:
1.采用随机数生成4个符合要求的数据,假设四个数据为n1,n2,n3,n4 。
2.把数据相互组合可以得到如下组合:n1和n2 ,n1和n3,n1和n4,n2和n3,n2和n4,n3和n4
3.将上面的组合进行各种可能的运算例如:n1+n2,n1-n2,n2-n1,n1*n2,n1/n2,n2/n1等等。
4.把上面组合计算出来的结果存入进对应的数组中例如:组合相加的结果存入add数组,相减的结果存入sub数组……最终将这些数组存入一个list集合中,目的是
为了方便通过循环遍历出每一种组合。
5.通过循环去遍历每一种组合,把这些组合在一起进行相加,相减等运算,记录结果为24的表达式。在这里需要注意的是,因为数组得值为两个数字的运算结果,
所以需要根据当前循环变量的值和list集合以及数组存入数据的顺序去把表达式格式化成四个数字组成的表达式,否则表达式只有两个数字。
需要注意的是:在遍历集合的过程中,由于集合中存入的数组的数据为两个数据组合的形式,所以遍历是只需要控制好下标,使的每一个表达式中只有
n1,n2,n3,n4这四个数据,而不会出现类似于n1,n2,n1,n3 这种组合的方式。
具体的流程图入下图所示: