利用Java语言实现24点游戏

一:题目要求:

1:题目描述:

从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。

2:基础要求:

随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式

3:提高要求:

用户初始生命值为一给定值(比如3),初始分数为0。随机生成4个代表扑克牌牌面的数字或字母,由用户输入包含这4个数字或字母的运算表达式(可包含括号),如果表达式计算结果为24则代表用户赢了此局

二:算法设计:

1:基础要求:

(1):思路:
基础要求中,我认为主要解决两个问题:数字的随机生成和对于生成四个数字的运算。首先用Random r = new Random语句随机生成四个数字后,将其存储在数组之中再进行运算;
其次我将运算过程主要分为三个部分:1:首先对于四个数字,先两两计算,分为三种情况:firstResult,midResult,tailResut;2:然后接着再与第三个数进行运算,得到firstMidResult,midFirstResult,firstTailResul,tailFirstResult,midTailResult和tailMidResult;3:最后,再将以上六种情况和剩下的一个数字进行运算。每进行完毕一次运算给数字加一次括号,所以最终表达式中应该有三个括号。
但是需要注意的是,在计算过程中要判断相同数字(分为1,2,3,4种数字的情况)。然后将相同数字的形式统一,比如都令其等于number[0]。然后再按上述三个步骤进行运算。

(2):具体实现:

1:首先判断有几个相同数字

一种相同数字:

利用Java语言实现24点游戏

两种不同数字:

利用Java语言实现24点游戏

三种不同数字:

利用Java语言实现24点游戏

四种不同数字:

利用Java语言实现24点游戏
2:提高要求:

(1):思路:

提高要求相对于基础要求的区别就在于:要求实现系统给定数值,用户输入表达式来根据结果进行计分,并将分数写入文件。
所以我定义了start() 函数负责程序的启动运行、answer() 函数负责判断用户输入结果是否正确并对生命值和分数进行加减、Savescore()
函数负责将分数写入文件、getNumber() 函数负责将程序随机生成的四个数字存入数组并返回到主函数中。

(2) : 具体实现:

getNumber() 函数:

利用Java语言实现24点游戏

answer() 函数:

利用Java语言实现24点游戏

answer() 函数:

利用Java语言实现24点游戏

三:调试及测试调屏:

1:调试截屏:

getNumber() 函数调试截屏:

利用Java语言实现24点游戏

calculation() 函数调试截屏

利用Java语言实现24点游戏

answer() 函数调试截屏:

利用Java语言实现24点游戏

2:测试截屏
功能一(输出所有可能的表达式):

利用Java语言实现24点游戏

功能二(对用户输入的表达式进行判断):

利用Java语言实现24点游戏

四:总结与归纳:
此次作业利用穷举法,难点在于如何对四个数字进行计算以及定时器的设置。优点在于思想比较简单,通俗易懂。但是代码量过大,代码风格不够简约。据同学经验,此题如果利用Java的栈构建简单计算器对随机生成的数字进行计算,然后通过多线程进行计时,会简单许多,代码量也会大大减少。
由于自己的能力一般和水平有限导致无法利用简单的方法解题,也使自己,浪费了许多时间,付出了代价。
因此,提前预习java知识是十分重要的,下次做作业时,尽量避免采用本方法,大胆启用新知识,运用新方法,这样即便付出了时间,自己也是有收获的。