文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学的各位小编整理了VC与C++类别-基于VC的24点游戏的开发和实现的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
1.7 完美的24点游戏程序和网络版的研究 一个完美的纸牌游戏当然需要有完美的界面和简易的操作控制。要达到这两个要求这必须实现纸牌的选取和拖放技术。人们对于一个用通过打字输入表达式和一个通过拖牌来生成表达式的界面,当然都会选取后者。毕竟,游戏要得到娱乐和休闲的功能,人们不会烦琐的去输入表达式来玩这个游戏。由于本人能力的限制和时间上的困难,暂时只能做成前者模式。但对于选取牌面和拖放技术的一些想法,就此陈述于下。在windows系统下实现纸牌的拖放技术,用到的基本上是API工具。当鼠标点中并移动的时候,我们使用刷新界面句柄,计算出鼠标移动的坐标,并通过坐标定位将其纸牌重新画于界面上。这就实现了纸牌的拖放过程。而要完成纸牌的拖动来行成表达式,这就需要对纸牌移动到的范围进行严格的计算,比如牌的长和宽要控制的很好,什么范围内是一张牌的范围,什么范围是一个运算符号图形标志的范围,要精确的定位。只有这样,才能利用图形文件来转换成数字运算。 为了增加游戏的趣味性和挑战性,一个完美的的纸牌游戏应该具备积分榜功能和记分以及难度的区分功能。其实,记分和排名是一个过程。只要有了记分,就需要排行榜功能,否则游戏就缺少了挑战性。我们想象下,假如游戏中单有记分而缺少排行。这就缺少了人与人之间的对比,使得自己的智力没有了一个比较。俗话说:只有比较才能见高低。因此光顾积分而没排行,这是没有任何意义的。要实现积分和排行功能,首先我们要确定排行要排到第几位。一般游戏,都排到差不多前10名。因此,要记录每个玩家游戏后的两个信息,一是玩家的名称,二是游戏的积分。要记录这两个信息,我们可以新建一个文本文件,将其写入文件中。文件的写入和输出我们就需要用到c++中调用文件的函数,其中有执行文件输入函数ofstream,以及打开文件函数ifstream函数。积分功能和难度设置是相对应的,可以如下实现,每次游戏开始的时候,选择难度(其中分为高,低2种),假如在要求时间内算出24点,成功则加10分,若未能算出则扣除10分,最后在游戏退出的时候显示总分。对于象比如:5 5 5 1和1 2 3 4等难度的区分,我们可以对其中如下设置。我们判别在生成24点算法的时候,在对每个中间过程进行判断,假如中间结果和一个整数相减范围在(0-1)之间,则说明中间过程运用到了小数,则将其设置为高级难度。否则就设置为低等难度。假如分数比前10名中的至少一个要高,则提示其输入名字,并对排行榜进行修改并进行排序。最后显示玩家排名表,包括名字,分数和排名。积分功能和排行功能使得这个游戏有了挑战性和内容的不枯燥。 1.7.3 24点游戏网络版的研究 当今网络游戏在中国大陆已经在大范围的蔓延,暂且不论这样的一种趋势会带来什么样的游戏产业趋势。在此我仅将网络游戏制作的一些技术和24点游戏网络版的构思做如下的研究。24点游戏要做成类似于其他网络上的一些纸牌游戏(双克,升级,斗地主等),其趣味性肯定没有后者强。毕竟,它的实现简单,过程简介,只要脑子转的快就可以获的胜利。因此网络版24点游戏是考验人们智力和反应力的一种游戏,可能它需要神经的相对集中。因为我们都知道狭路相逢勇者胜的道理。因此要在游戏中取的胜利,你必须具备很好的精神状态和高度集中的反应能力。24点游戏毕竟是一种益智游戏,我们不能将其改成一个带有强烈功利的游戏,这就失去了其游戏的内在意义,更不能将其更改成带有赌博性质的游戏。现今,有许多纸牌游戏多趋向与赌博方向发展,这是一个不好的兆头。因此,要将24点游戏改成网络版,其需要好好的构思。你既要使它带有轻微的挑战性,但更多的是要具备娱乐性。因此我建议网络版24点应该按如下方案开发。游戏中,给发到牌的每4个人一人一次机会,如果轮到的人算不出来,则可以另其他玩家帮助解答,如果答对了两人各加一半的分数。而不是谁算的快谁就能得到最高分。这样就使得游戏有了平衡性,并不是只有智力好,反应快的人才能赢。毕竟,游戏是为大家的游戏,不光是为少数几个人设计的游戏。因此网络版的开发,其适用性很重要。我们知道一个好的游戏是需要大家的支持的,是为大家而设计的。接下来我们来研究要实现一个网络版的游戏需要哪些技术要求。 首先解释一下协议的概念,协议大家都了解是一种通信规则,例如:TCP/IP,UDP等等,这些是我们在网络通信过程中所处理使用的协议。而我们这里的协议是我们的游戏服务器和客户端的通信规则。简而言之,也就是客户端发送到服务器的数据包和服务器发送的数据包双方解释规则。要实现一个网络游戏,最基础的就是网络层协议层的实现。然后我们考虑服务器技术,其中服务器技术中一个重要的技术就是线程池技术。首先 介绍我们为什么要使用线程池技术呢?大家都知道我们的游戏服务器端要处理大量的用户请求,同时需要发送大量的游戏数据到客户端,从而来驱动客户端程序的执行和维持游戏的进行。那我们的服务器端是如何进行处理的呢?其实在这里我们就充分用到了线程池技术。大家都了解在我们服务器整个运行过程中,我们将整个运行时间分成很多个时间片。而对于这些已经分成的各个微小的时间片而言,在各个不同时间片中要处理的用户请求和需要发送到用户端的游戏数据量也将是不一样的。而处理用户的请求和发送数据到客户端的工作都是由一系列的线程来执行的。因此线程技术对服务器的构建非常重要。另外一项主要技术:内存分配处理技术也可以称为内存池处理技术。在C中我们一般用malloc(….)函数来进行申请,而对应销毁已经申请的内存使用free(…)函数。在C++我们一般使用new操作符和delete操作符进行处理申请和销毁。大家都知道,我们的服务器要频繁的响应客户端的消息同时要将消息发送到客户端,并且还要处理服务器后台游戏World的运行。这样我们就必须要大量的使用内存,并且要进行大量的内存操作(申请和销毁)。因此很好的处理好内存池处理技术是非常重要的。以上是我对开发一个24点网络版游戏的所需要的一些主要技术的研究。 2.实施心得 经过近两个月的紧张忙碌,我的毕业设计也渐渐进入尾声了。在这两个月里,我深深的体会到了设计和开发一个游戏系统所需经历的酸甜苦辣,在其中,我碰到了设计方面的许许多多的问题,但这一切都通过我的思考和仔细翻阅有关资料后逐步的得到了解决,在这个过程中,我培养了如何去思考及解决问题的能力,并使我学到了许多在课堂上学不到的东西,为我在今后的生活及工作中提供了一定的帮助。 开发一个游戏系统可以采用多种方法或各方法之间相互结合,我在开发系统时则是采用了生命周期法,需要经过系统分析、系统设计、系统实施、系统运行和维护等五个阶段,而系统的设计和分析在其中占有很重要的地位。系统分析要求从总体上了解被系统实施对象的运行机制等情况,然后应游戏系统的分析方法和思想,把复杂的对象分解成较概括的、抽象的系统实体等。找出这些东西的基本的属性和彼此间的关系。这个阶段的重点是对上一个阶段游戏系统的设计进行整理、分析,提炼出其中的核心的东西。系统要实现的功能都要在这个阶段中确定下来。倘若分析作的不够深入,急急忙忙就进入程序设计阶段,往往会引起一定的麻烦,俗话说:“欲速则不达”,我想这应该是对其最好的写照了。我就因为系统分析过于草率而匆忙进入程序代码设计阶段而引起了很大的麻烦,导致了程序代码的执行效率大大降低。后经指导老师的提点才认识到这个不足之处总之,在这个阶段中我做了很多的无用功,既浪费了时间又浪费了精力,真是有百害而无一利。因此,准备工作一定要做足,做精、做细,要仔细考虑到每一个角落,每一个问题。对作到对每一个步骤都要了然于胸,理顺自己的思路。 总的来说,系统的开发过程是较为枯燥和辛苦的,但你一旦成功地设计出一个能顺利运行的,且切合实际有使用价值的游戏系统,并得到别人的肯定时,这种快乐是无法言表的,这也将会是对我们所付出的努力的最好的回报。
|
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |