逆波兰式是使用了栈的思想。我们将a,b,c,d四个字符依次推入栈中。若在c后面遇到了*号,则将与*号相邻的两个数值相乘,得到一个结果。然后合并b,c栈来存放结果。接着推入b,d,若在d后又出现了*号,则将与*号相邻的两个变量相乘并合并栈,将结果存于栈中。这样的话就可以实现语句a:=b*c+b*d。因此可以轻松得判断输入的表达式是否有误。我们对输入的字符进行判别,如果遇到的字符是除了1—13,+,-,*,/,(,)外的话,则说明输入错误,此算法可以判别是否有语法错误。然后是判断输入的数字是否与系统给的值相符,我们比较一下推入栈的数字和系统的数字,若有不同则报错。需要判断括号匹配的话,我们定义一个整形数组变量a[]和2个整形变量count1,count2,令其初始值为0,当遇到左括号字符则变量a[0]++,并且count1++;遇到第2个左括号则a[1]++,并且count1++,其中数组的序号值由count控制(若count1=1则序号值为1),同理所有的左括号都这么表示。接下来若碰到的第一个右括号,我们令a[0]--,count2++,以下步骤与上文类似。最后,只要在数组中的所有数字的绝对值的总和可以被确定的括号匹配,如果值为0,说明该支架匹配。通过逆波兰式的思想,我们可以轻松判别24点游戏的表达式。

4。3 纸牌游戏界面的算法

4。3。1 获得纸牌界面的算法

要做纸牌游戏就必须要有纸牌的图片。首先截取一副扑克牌的52张牌面,将其加入到我们所做的Java project的image文件夹中。并且系统化命名这52张牌面。例如,可以用a作前缀来表示红桃,b作前缀来表示黑桃,c作前缀来表示草花,d作前缀来表示方片。于是52张牌就能表示清晰。将52张牌的截图命名好后就是要发牌。发牌算法也是需要着重考虑的一个方面。我们用random函数产生四个随机数后,再使用Math。random()*13+1以及Math。random() *4控制这四个随机数的数值与花色,以达到预期的效果。

4。3。2不发重复牌的算法

在设计完成游戏界面之后需要考虑的一个问题是:怎么样才能确保每次发牌的时候不会发相同的牌呢?这是游戏开发中的一个重点,也是程序能否成功的关键所在。事实上,要实现此功能也比较简单。来:自[优.尔]论,文-网www.youerw.com +QQ752018766-

在这里,我们可以定义一个卡类,然后再定义2个私有属性——数量number和种类variety,这是用来表示卡的颜色和数值,再通过面向对象的思想将牌存储到Card类中。

4。3。3重新发牌的算法

游戏中一定会使用到“重新开始”的功能的,因为游戏中你不可能只让玩家算一次就结束,这样就失去了本软件的实际意义了。所以,重新发牌也是一个重要的算法。在API的编程中,我们可以通过刷新函数的技术既可使原来的界面撤销,然后再次绘制界面。

以上是完成一个简单24点游戏必要的算法分析。

上一篇:asp.net+sqlserver在线电子书借阅管理系统的设计
下一篇:Android淮安公交查询系统的设计与实现

基于Apriori算法的电影推荐

PHP+IOS的会议管理系统的设计+ER图

数据挖掘在电子商务中的应用

数据挖掘的主题标绘数据获取技术与实现

基于PageRank算法的网络数据分析

基于神经网络的验证码识别算法

基于网络的通用试题库系...

互联网教育”变革路径研究进展【7972字】

麦秸秆还田和沼液灌溉对...

张洁小说《无字》中的女性意识

老年2型糖尿病患者运动疗...

新課改下小學语文洧效阅...

安康汉江网讯

LiMn1-xFexPO4正极材料合成及充放电性能研究

我国风险投资的发展现状问题及对策分析

ASP.net+sqlserver企业设备管理系统设计与开发

网络语言“XX体”研究