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

收藏 分享

资源预览需要最新版本的Flash Player支持。
您尚未安装或版本过低,建议您

124点游戏的开发和实现摘要近年来,随着经济的日益发展,人们的生活水平不断提高,生活质量也在渐渐的改善。适当的娱乐游戏对人们的业余生活是不可必缺的。说到娱乐游戏,人们可能会想到网络上许许多多让人迷恋的网络游戏,比如说,传奇,奇迹,CS等等。是的,的确这些游戏给人们的业余生活添加了很多乐趣。借鉴网上的边锋游戏,我用VC开发设计了24点游戏的实现算法,并在WINDOWS图形环境下设计出一个人机交互的游戏系统(类似于纸牌游戏)。关键词穷举法栈递归函数THEDEVELOPMENTANDREALIZATIONOF24PIONTSGAMEABSTRACTRECENTLY,WITHTHEDEVELOPMENTOFECONOMIC,THEPEOPLE’SLIFEBECOMESBETTERANDBETTER,LIFECONDITIONALSOISIMPROVINGMOREANDMOREPROPERRECREATIONISINDISPENSABLEINTHEPEOPLE’SPASTTIMELIFEMENTIONEDTOTHEGAME,PEOPLEMAYASSOCIATEMANYFASCINATEDONLINEGAMES,SUCHASLEGEND,MU,CSANDSOONCERTAINLY,THESEGAMESENRICHPEOPLE’SLIFEWITHMOREANDMOREJOYSUSINGTHEWINGGAMEFORREFERENCE,IDEVELOPEDANDDESIGNEDTHEREALIZATIONARITHMETICOF24POINTSGAMENEXTIDESIGNEDAHUMANCOMPUTERALTERNANTGAMESYSTEMSIMILARTOCARDGAMEKEYWORDENUMERATINGMETHODSTACKRECURSIVEFUNCTION2124点游戏算法实现1124点游戏简介要开发一个游戏不是那么容易的,哪怕是简单的算术游戏。要是没有一定的专业知识,没有一定的思维能力是不行的。24点游戏是一个传统的算术游戏,其游戏之精髓就是考验人脑的反应能力。所谓24点游戏,就是通过加,减,乘,除4则运算,将给定的4个整数算出24。当然,传统的纸牌游戏其数字是有限定范围的,一般是从1到13。经统计,当算的目标数把24改为2的时候,独立解数更多,就是解的形式趣于集中化,大多数最后一步用减法(如2835)。游戏时会感到单调。由于24的因数多,解的形式就丰富,能充分发掘游戏者数学发散思维能力。要做好一个简单的24点游戏要具备很多知识。其中最主要的思想就是,24点的表达式要怎样行成,这是此游戏的关键。而要做一个完美的24点纸牌游戏,则需要的知识将会更多。现今,网络上的纸牌游戏数不甚数,比较出名的有联众游戏,边锋游戏,QQ游戏。当然,他们的开发队伍庞大之极不是我们个人可以比及的。因此要一个人做好一个比较完美的游戏,是需要一定的游戏天分。以下我就开发24点游戏的几个关键算法和分析做详细的剖析。1224点游戏的算法12124点算法(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种情况类似,我们不做详细的说明。以上就是穷举法的基本实现算法。412224点游戏算法(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{COUTEXPRESSION0ENDL;RETURNTRUE;}ELSE{RETURNFALSE;}}FORINTI0;IN;I{FORINTJI1;JN;J{DOUBLEA,B;STRINGEXPA,EXPB;ANUMBERI;BNUMBERJ;NUMBERJNUMBERN1;EXPAEXPRESSIONI;EXPBEXPRESSIONJ;EXPRESSIONJEXPRESSIONN1;EXPRESSIONIEXPAEXPB;NUMBERIAB;IFSEARCHN1RETURNTRUE;EXPRESSIONIEXPAEXPB;NUMBERIAB;IFSEARCHN1RETURNTRUE;EXPRESSIONIEXPBEXPA;
编号:201311181228100648    类型:共享资源    大小:4.96MB    格式:DOC    上传时间:2013-11-18
  
5
关 键 词:
专业文献 学术论文 精品文档 24点游戏
  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:24点游戏的开发和实现.doc
链接地址:http://www.renrendoc.com/p-100648.html

当前资源信息

4.0
 
(2人评价)
浏览:23次
网游小王子上传于2013-11-18

官方联系方式

客服手机:17625900360   
2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   

精品推荐

相关阅读

人人文库
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

网站客服QQ:2846424093    人人文库上传用户QQ群:460291265   

[email protected] 2016-2018  renrendoc.com 网站版权所有   南天在线技术支持

经营许可证编号:苏ICP备12009002号-5