会员注册 | 登录 | 微信快捷登录 支付宝快捷登录 QQ登录 微博登录 | 帮助中心 人人文库renrendoc.com美如初恋!
站内搜索 百度文库

热门搜索: 直缝焊接机 矿井提升机 循环球式转向器图纸 机器人手爪发展史 管道机器人dwg 动平衡试验台设计

   首页 人人文库网 > 资源分类 > DOC文档下载

24点游戏的开发和实现.doc

  • 资源星级:
  • 资源大小:4.96MB   全文页数:30页
  • 资源格式: DOC        下载权限:注册会员/VIP会员
您还没有登陆,请先登录。登陆后即可下载此文档。
  合作网站登录: 微信快捷登录 支付宝快捷登录   QQ登录   微博登录
友情提示
2:本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3:本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

24点游戏的开发和实现.doc

124点游戏的开发和实现摘要近年来,随着经济的日益发展,人们的生活水平不断提高,生活质量也在渐渐的改善。适当的娱乐游戏对人们的业余生活是不可必缺的。说到娱乐游戏,人们可能会想到网络上许许多多让人迷恋的网络游戏,比如说,传奇,奇迹,cs等等。是的,的确这些游戏给人们的业余生活添加了很多乐趣。借鉴网上的边锋游戏,我用vc开发设计了24点游戏的实现算法,并在windows图形环境下设计出一个人机交互的游戏系统(类似于纸牌游戏)。关键词穷举法栈递归函数Thedevelopmentandrealizationof24piontsgameAbstractRecently,withthedevelopmentofeconomic,thepeopleslifebecomesbetterandbetter,lifeconditionalsoisimprovingmoreandmore.Properrecreationisindispensableinthepeoplespasttimelife.Mentionedtothegame,peoplemayassociatemanyfascinatedonlinegames,suchasLegend,MU,CSandsoon.Certainly,thesegamesenrichpeopleslifewithmoreandmorejoys.Usingthewinggameforreference,Idevelopedanddesignedtherealizationarithmeticof24pointsgame.NextIdesignedahumancomputeralternantgamesystemsimilartocardgame.Keywordenumeratingmethodstackrecursivefunction2124点游戏算法实现1.124点游戏简介要开发一个游戏不是那么容易的,哪怕是简单的算术游戏。要是没有一定的专业知识,没有一定的思维能力是不行的。24点游戏是一个传统的算术游戏,其游戏之精髓就是考验人脑的反应能力。所谓24点游戏,就是通过加,减,乘,除4则运算,将给定的4个整数算出24。当然,传统的纸牌游戏其数字是有限定范围的,一般是从1到13。经统计,当算的目标数把24改为2的时候,独立解数更多,就是解的形式趣于集中化,大多数最后一步用减法(如2835)。游戏时会感到单调。由于24的因数多,解的形式就丰富,能充分发掘游戏者数学发散思维能力。要做好一个简单的24点游戏要具备很多知识。其中最主要的思想就是,24点的表达式要怎样行成,这是此游戏的关键。而要做一个完美的24点纸牌游戏,则需要的知识将会更多。现今,网络上的纸牌游戏数不甚数,比较出名的有联众游戏,边锋游戏,qq游戏。当然,他们的开发队伍庞大之极不是我们个人可以比及的。因此要一个人做好一个比较完美的游戏,是需要一定的游戏天分。以下我就开发24点游戏的几个关键算法和分析做详细的剖析。1.224点游戏的算法1.2.124点算法(1)24点游戏的算法,其中最主要的思想就是穷举法。所谓穷举法就是列出4个数字加减乘除的各种可能性,包括括号的算法。我们可以将表达式分成以下几种首先我们将4个数设为a,b,c,d,,其中算术符号有,,,/,(,)。其中有效的表达式有abc/b,abcd,等等。列出所有有效的表达式。其中我们用枚举类型将符号定义成数字常量,比如用1表示,2表示等。如下是我对穷举法的一种编程语言。在编程的头部要对变量做下定义。其中a,b,c,d的范围是1到13。因为传统的24点游戏是纸牌游戏,而纸牌游戏的数字就是从1到13,其中a是1,K是13,Q是12,J是11,其他的就是牌面的数字。这就需要在定义变量的时候要有限制。在vc中的MFC编程中,在定义控件的变量范围可以直接填写变量的最大和最小,在此编程中的最大是13,最小是1。这就给编程写语句带3来了方便(因为其自动会生成语句)。下面我介绍下穷举法的主要实现,我们知道要实现24点的算法,就是通过4个数字,4个运算符号和2对括号(最多为2对),通过各种组合判断其结果是否为24。我们用a,b,c,d代替4个数字。考虑每种可能,总的算法就有7种可能。分别为1,没括号的(形如abcd)2有括号的(形如abcd)3有括号的(形如abcd)4有括号的(形如abcd)5有括号的(形如abcd)6有括号的(形如abcd)7有括号的(形如abcd)。接下来就是对每一种进行分析判断。我们拿2种情况做为例子,一种是没括号的,一种有括号的。先拿没括号的分析。我们知道没括号的式子包括其运算符和数字总共为7个(3个运算符,4个数字),于是我们定义一个数组,用于存放运算符和数字。运算符我们可以用枚举变量来定义,首先我们通过循环语句形成一个表达式子(但这个表达式的运算循序是乱的)。表达式子有很多种情况,利用循环语句我们可以一一将其写出,例如(abcd,abcd,abcd,abc/d.等等)生成表达式子的后,接着就是判别运算顺序。在没有括号存在的情况下,我们令其先运算,/。这个顺序的选择很轻松,我们可以定义一个bool类型的函数,我们对数组进行扫描,当扫描到/,,其返回真值,就直接进行运算。依次照样进行扫描,当所有的/,运算都进行为止,接着将/,运算生成的结果合并栈(即将运算的结果放在一个变量中),接着就对其与下一个数字进行运算,直到所有的值都计算出来了,最后将最后运算结果放于一个变量中。我们将这个变量的值和24相减,假如其值是在1E6之外,则说明此运算式能计算出24。接下来我们来做第2种有括号的算法,有括号的算法和没括号的算法就是在判断运算循序的时候有所差别。我们知道,括号就是用来改变运算顺序而添加的。判断括号的先后顺序,我们同样可以用一个bool类型的函数来判别,在生成表达式要判断其运算顺序时,我们首先扫描表达式存放的数组,假如扫描到左括号,则将先对左括号后面的式子进行运算,接着在是对/,的优先级进行计算。在第2种(形如abcd)的情况下,我们先将a,b先进行运算,生成其值,并将结果存放与另一个变量中,接着将得到的初步结果和c和d进行运算,最后得到总的结果。将其总结果和24相减,若其值小于1E6则说明此表达式能算出24。接下来几种有括号的算法和第2种情况类似,我们不做详细的说明。以上就是穷举法的基本实现算法。41.2.224点游戏算法(2)24点游戏的算法各种各样,各有千秋,现在让我们来讨论另一种24点游戏算法。此算法是在dos下实现的,但其思想明确,语句简短。其主要思想是简化算法,他将24点的算法排序分成如下几种,如下我们用a,b来代替变量。他将其分成如下6种情况,分别是ab,ab,ba,ab,a/b,b/a这6种情况,我们知道ab和ba是一样的,ab和ba是一样的。这样就可以省去2种算法。提高系统的使用效率,内存占用量小。还有其第2个思想是在判别24点正确与否的时候,采用了与24点相减绝对直在1E6之外则判别其为正确,这就给运算带来了精确度,就如5551等的数字也可以轻松算出,不会略过了。如下我们通过一段程序来看看其主程序段。boolSearchintn{ifn1{iffabsnumber0NUMBER_TO_CALPRECISION{coutexpression0endlreturntrue}else{returnfalse}}forinti0ini{forintji1jnj{doublea,bstringexpa,expbanumberibnumberjnumberjnumbern1expaexpressioniexpbexpressionjexpressionjexpressionn1expressioniexpaexpbnumberiabifSearchn1returntrueexpressioniexpaexpbnumberiabifSearchn1returntrueexpressioniexpbexpa

注意事项

本文(24点游戏的开发和实现.doc)为本站会员(网游小王子)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网([email protected]),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

copyright@ 2015-2017 人人文库网网站版权所有
苏ICP备12009002号-5