C课程设计论文俄罗斯方块游戏设计.doc
二级实践课题设计任务书姓 名 专业 班题 目 俄罗斯方块设计任务俄罗斯方块设计的设计任务是采用MFC AppWizard应用程序的SDI程序框架,设计该游戏,实现方块预览、方块控制、显示更新、游戏记分、游戏等级、游戏帮助等功能。方块控制,直接由玩家通过键盘控制,游戏区域的方块部件根据玩家具体键盘的操作左右移动、旋转、加速下落。游戏地图即“矩形容器”根据具体数据,通过载入位图为游戏创建背景。 开发工具:VisualC+6.0、Photoshop 时间进度第17周(2010-06-282010-07-02):做游戏前的设计构思,参考相关资料,封面的设计。第18周(2010-07-052010-07-09):着手进行游戏的编程和附加功能的添加。第19周(2010-07-122010-07-16):对游戏进行测试以及文档的书写。原主始 要资 参料 考与 文献01王明福 主编.Visual C+ 程序设计.北京:高等教育出版社,200302王鹏生.VC+游戏编程: 汕头大学. 2001.1203谭浩强 编著.C+程序设计.北京:清华大学出版社,200404罗建军等 编著.大学Visual C+程序设计案例教程.北京:高等教育出版社,200405孙鑫,余安萍 著.VC+深入详解.北京:电子工业出版社.200606古万荣 著.Visual C+ 完全自学手册.北京:机械工业出版社,2009指导教师签字: 年 月 日俄罗斯方块摘 要 在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。 本文描述了我所学习过的游戏设计的几个方面,也是游戏设计中最常用的技术。首先对游戏的概念及其发展过程做了整体的描述;接着介绍了游戏设计的基本思路、架构与规划、游戏剧情等游戏策划方面的内容;随后对贴图、动画、物理动作模拟、消息管理、人工智能等方面以Visual C+为例做了一些描述;还以“俄罗斯方块”游戏为例,具体讨论了实现游戏编程的方法,如游戏界面框架的创建、背景显示、方块的控制和显示、成绩等,最后是总结。 此次设计在Microsoft Windows XP系统下,以C+为开发语言,在Visual C+开发平台上进行电子游戏的设计与实践。 这款游戏看似简单却变化无穷,通过该游戏设计,达到以下目的:1、 了解Visual C+ 6.0下可视化编程的特点,熟悉其相应的各种操作和技巧。2、 了解随机函数的使用、动态存储空间的分配和回收、位图资源的引入和操作。3、 掌握MFC类家族中,键盘消息、菜单、工具栏、定时器。4、 掌握俄罗斯方块游戏开发的基本原理,强化基本编程能力和游戏开发技巧。关键词: 电子游戏;游戏设计;俄罗斯方块;Visual C+6.0;Photoshop 36目 录摘 要I第1章 绪论41.1 电子游戏机及其分类41.2 电子游戏发展现状41.2.1 电子游戏在国外的发展现状41.2.2 电子游戏在国内的发展现状61.3 俄罗斯方块简介71.4 设计工具简介8第2章 游戏设计概述92.1 为什么使用VISUAL C+来设计游戏92.2 游戏架构与规划102.3 游戏剧本的规划和设计12第3章 俄罗斯方块的实现153.1 资源编辑153.2 变量函数153.3 具体实现183.3.1 构造函数183.3.2 画图函数183.3.3 界面函数183.3.4 信息函数183.3.5 菜单开始函数193.3.6 开始函数193.3.7 预备方块203.3.8 计时器函数203.3.9 键盘操作203.3.10 移动函数203.3.11 消行函数203.3.12 过界或重叠213.3.13 变换函数213.3.14 暂停和热键213.3.15 改变窗口大小和添加背景音乐21第4章 游戏操作及测试26第5章 附加功能275.1 日历275.2 计算器:28第6章 课程设计心得与体会32参考文献34指导教师评语35附录:附加图:36第1章 绪论通过绪论能够让我们了解到如今游戏的发展现状和前景,让我们清楚游戏的种类,游戏在今后人们的生活中所扮演的重要角色。1.1 电子游戏机及其分类电子游戏,也就是运行在家用电脑、家用电子游戏机或是掌中宝游戏机及街机上的电子游戏程序。电子游戏是一种结合剧情故事、美术、音乐、动画、程序等技术于一身的互动型娱乐软件,涉及到多个行业1。从电子游戏的分类来看,有着多种分类方式2。传统的游戏分类是按照游戏类型,将其分为即时战略游戏、第一人称射击游戏、角色扮演游戏、策略型游戏等类别。根据游戏运行平台的不同,可将电子游戏分为游戏机游戏、单机版PC 游戏、互动电视游戏、在线游戏和手机游戏。此外,韩国政府将电子游戏业分为家用游戏机游戏、单机版PC 游戏、网络游戏和街机游戏四大类。考虑到中韩游戏业比较接近,论文采用韩国的分类标准。“网络游戏”也就是人们一般所指的“在线游戏”,是指通过互联网进行的电脑游戏,通过人与人之间的互动达到交流、娱乐和休闲的目的。在互联网(局域网)技术出现之前,电子游戏都可以归于单机版游戏,即“人机对战”游戏,或最多是双人对战游戏。而随着互联网技术的出现,通过连接游戏服务器,上百、上千、乃至上万的游戏玩家同时连线娱乐成为了现实,这就大大增加了游戏的互动性、真实性,丰富了电子游戏的内涵。从网络游戏的分类来看,目前业界还没有一个比较统一规范的分类。随着计算机设备和网络技术的发展,电子游戏在全球得到了迅猛的发展,取得了巨大的成功,已成为当今世界上不可缺少的精神粮食。1.2 电子游戏发展现状由于国内外的计算机发展水平不一样,我国的游戏发展水平和国外的游戏发展水平也不一样。1.2.1 电子游戏在国外的发展现状电子游戏是最初产生于美国,1971年,一个还在MIT就读的学生设计了世界上第一个业务用游戏机,这个街机游戏的名字叫电脑空间。可以说时至今日,电子游戏仍然是外国的天下。美国至今仍是世界第一大游戏市场,它遵循的是以发行商为主的产业开发链模式,根据美国市场调查公司NPD Group调查统计,美国2004年游戏总销售金额(包括家用、掌上型主机及软件)为99亿美元,占了全球游戏市场的45%。其中游戏软件销售的具体数字是:视频游戏软件的销售额达52亿美元(1.6亿套),PC游戏软件销售额达11亿美元(4500万套),掌机游戏销售额达10亿美元(4230万套)。2004年一共大约有2.48亿套游戏售出。据估计,美国每个家庭平均购买过2部游戏。日本近20年来疯狂赚电子游戏的钱。从上世纪60年代初的街机,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机,日本经过30多年的耕耘,终于把电子游戏这棵“摇钱树”,培育成第一时尚娱乐产业,垄断全球业界长达10余年。对于日本来说,电玩业已是国家经济的重要支柱之一,在GDP中占有1/5的举足轻重地位。日本游戏业在最辉煌的1998年,曾经占领全球电子游戏市场硬件90%以上,软件50以上。韩国号称世界上网络游戏产业最发达国家之一。迄今为止,国内网络游戏市场有超过60%的产品来自韩国游戏软件开发商,韩国网络游戏使国内很多游戏运营公司在游戏营销市场或股票资本市场上获得了巨大的成功。韩国游戏市场的发展不是偶然,韩国政府不仅给游戏产业以正确的定位和引导,更是将其和本国经济发展紧密地联系到一起,做了很多市场培育方面的工作。韩国政府认识到,靠重型工业来支撑全国经济的做法是片面的,于是将、娱乐产业视为新的经济增长点,开始大力扶持。从那时起,科技含量极高而能源消耗极低的游戏制作及相关产业担负起了“富国兴邦”的重担。由文化观光部出面组建韩国游戏支援中心,向韩国游戏产业提供从资金到技术上的多方面支援;成立游戏投资联盟,政府每年向游戏产业投入的资金多达亿韩元,并为游戏企业提供长期的低息贷款;设立信息化基金和文化产业基金,为游戏产业服务;对指定的风险企业实行各种税制优惠政策,减少甚至免除游戏企业的税务负担;建设游戏产业基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。在韩国,从制作到运营,一个网络游戏公司起步门槛较低,主要得益于政府实行的援助计划。此外,在有利的政策形势下,韩国出现了众多的游戏院校,一些原本不涉足此领域的大学也开设了游戏相关专业课程,以大力培养游戏专业人才,从而为游戏生产提供了基础保障。1.2.2 电子游戏在国内的发展现状与电子游戏发达的国家相比,我国在电子游戏方面还存在比较大的差距。目前,我国游戏市场正处于发展阶段,但市场上的游戏软件主要来自日本、美国、韩国等地,但由本土游戏制作人开发创作的游戏正在高速增加,国产原创的游戏即将成为游戏的主流。中国的游戏产业经过80年代初期台湾厂商的探索至90年代,开始了自己的研发、发行的历程,直至网络游戏的风行,让中国的网络游戏开始有了飞速的发展。 1983年,智冠科技有限公司在中国台湾成立,为全球第一家签订授权重制中文版产品代理销售合约的公司,2000年智冠在台湾股票上市, 2002年其控股的中华网龙在台湾上市。1996年底,UBI SOFT上海分公司暨上海育碧电脑软件有限公司成立。同年,全球游戏软件领军企业EA在中国上海成立办事处。1997年,由尚洋公司制作的血狮正式上市。 1997年,北京新天地互动多媒体技术有限公司成立,该公司引进了古墓丽影III(TombRaider III)、盟军敢死队等著名欧美游戏,并在1999年在中国率先掀起“游戏软件价格革命”,全面推行50元的价格体系,从此正版游戏价格开始贴近大众消费者。 1999年,业内估算中国电脑游戏市场(正版)约1.5亿元人民币。 2000年,大陆华彩软件代理发行第一款中文MMORPG万王之王正式推出,该游戏于1999年在台湾发行,由台湾雷爵资讯(Lager)开发。也在2000年,继万王之王、石器时代、网络三国在台湾上市之后,游戏桔子推出了天堂,游戏桔子成立于1995年,1999年以便利店在台湾奠定了地位。天堂这款由韩国著名游戏公司Ncsoft研发的网络游戏不但在本国大获成功,也在台湾再次夺冠。 2001年初,北京华义在中国大陆地区正式推出了石器时代,华义国际股份有限公司于1993年在台北成立,2001年在台湾股票上市。石器时代成为大陆当时最流行的网络游戏。2001年,天人互动软件技术有限公司在北京成立。当年与SEGA结成PC游戏业务的战略合作关系,发行了樱花大战文明无冬之夜等经典游戏,2002年,引进在欧美网络游戏魔剑(Shadow Bane),这是首款在中国测试的欧美网络游戏。 2001年5月,“联众世界”经过3年多的迅速成长,以同时在线17万人、注册用户约1800万的规模,成为当时世界用户数量第一的在线游戏网站。2005年1月21日,中央电视台报道:我国网络游戏产业当年增加了50%,今后几年都将以50%以上的速度增长;第一届中国网络游戏年会报道:中国国内网络游戏2004年规模达24.7亿元,2009年规模将达到109.6亿元。1.3 俄罗斯方块简介俄罗斯方块原本是前苏联科学家阿列克谢·帕基特诺夫所开发的教育用软件,之后开始提供授权给各个游戏公司,造成各平台上软件大量发行的现象。Game Boy版的俄罗斯方块在日本卖出424万套,是Game Boy史上卖最好的游戏。海湾战争时,也是前线美军最常拿消磨时间的游戏之一。由于俄罗斯方块具有的数学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。俄罗斯方块曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。俄罗斯方块上手极其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。作为家喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。俄罗斯方块的基本规则: 1、一个用于摆放小型正方形的平面虚拟场地,其标准大小:行宽为10,列高为20,以每个小正方形为单位;做为装饰的俄罗斯方块。2、一组由4个小型正方形组成的规则图形,英文称为Tetromino,中文通称为方块共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名; 3、通过设计者预先设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中。每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。4、如果未被消除的方块堆放的高度超过场地所规定的最大高度(并不一定是20或者玩家所能见到的高度),则游戏结束。具体到每一款不同的游戏,其中的细节规则都可能有千差万别,但是以上的基本规则是相同的。1. 按游戏界面的"开始"按钮或者F2键来开始游戏,自己使用右边的窗口,对手使用左边的窗口。2. 键盘操作:系统缺省设置使用右边的窗口,用光标操作,""左移一格;""右移一格;""旋转方块; 方块丢下(方块下落到底),"End"健可以一格格的下落,用户还可以自定义习惯的按键来操作游戏。3. 计分牌显示的内容: “分数”为本局的分数,计分标准一次消一行1分、2行3分、3行6分、4行10分。当分数达到一定的值,等级就会提升、速度加快。1.4 设计工具简介本次设计以Visual C+和Photoshop为设计工具进行。C语言是一种高效率的计算机程序设计语言,而Visual C+则是在C语言基础的基础上开发从出的一套功能强大的程序设计工具6。C+是一种通用的程序设计语言,其设计就是为了使认真的程序员工作的更愉快。除了一些小细节之外,C+是C程序设计语言的一个超类。 C+里的最关键概念是类。一个类就是一个用户定义类型。类提供了对数据的隐藏,数据的初始化保证,用户定义类型的隐式类型转换,动态类型识别,用户控制的存储管理,以及重载运算符的机制等。对于追求速度与表现效果的游戏程序,Visual C+可以说是最佳的开发工具。在目前的商业游戏程序设计领域中,大多是使用Visual C+作为开发工具。因为Visual C+有优异的运行速度,还可以直接访问内存。刚开始形成的是C语言,那些想建立更快更有效的代码的程序员非常欣赏C语言,有一位名叫Bjarne Stroustrup的人却不满足于仅仅是生产快速代码,他想创建面向对象的C语言编程。他开始对C语言的内核进行必要的修改,使其能满足面向对象模型的要求。C+从此产生。Bjarne Stroustrup是C+的最初设计者和实现者。它自诞生以来,经过开发和扩充已成一种完全成熟的编程语言。现在C+已由ANSI、BSI、DIN、其他几个国家标准机构和ISO定为标准。ISO标准于1997年11月4日经投票正式通过。C+标准演变了许多年。C+模板是近几年来对此语言的一种扩展,模板是根据类型参数来产生函数和类的机制,有时也称模板为“参数化的类型”。使用模板,可以设计一个对许多类型的数据进行操作的类,而不需要为每个类型的数据建立一个单独的类。标准模板库(Standard Tempalte Library,STL )和微软的活动模板库(Active Tempalte Library,ATL )都基于这个C+语言扩展。Photoshop作为一个图形处理软件,有较强的美化图形功能,游戏设计中,它也是一种必备的游戏软件。第2章 游戏设计概述在游戏所创造初的虚幻世界里,我们可以进行一趟惊心动魄的冒险行动,或者是与众多武功高手对决,或者是为了保卫地球与外星入侵者打场星际大战等等。本文将揭开游戏程序设计的序幕。2.1 为什么使用Visual C+来设计游戏C语言是一种高效率的计算机程序设计语言,而Visual C+是在C语言的基础上开发出的一套功能强大的程序设计工具。对于追求运行速度与表现效果的游戏程序,Visual C+可以说是最佳的开发工具。在目前的商业游戏程序设计领域中,都是使用Visual C+作为开发工具,下面就来说明Visual C+在游戏程序开发上所具备的优点:1优异的运行速度如果您使用过Visual Basic,那么当您在刚开始使用Visual C+来编写程序的时候,可能会不知从何下手,因为Visual C+没有像Visual Basic一样有许多现成的对象函数可以使用。Visual Basic中的现成对象和函数,都是为了让Visual Basic程序员们能够更轻松地开发程序而实现准备的,但这些功能完整的对象函数在执行时会占用很多计算机资源,降低程序运行效率。而Visual C+因为没有这些通用的对象和函数,所以开发出的程序运行速度非常快。在后面的章节中,您将发现即使时需要进行复杂的计算机的图形处理程序,在运行时仍然非常流畅。2直接访问内存在C语言中可以直接用指针来读写计算机内存,而且还提供了许多有关内存处理的函数,直接读写内存的最大好处就是速度快。因为任何程序都必须读取内存,只不过其他程序设计语言都为了防止发生内存读写不当而使用间接管理内存的方式,这样虽然安全,但却比较耗费时间。Visual Basic程序 直接读写内存 ,直接读写内存的方式可以说是一把双刃剑,使用的当将大大提升程序的运行速度,但若是使用不当,将会造成程序运行出错或者计算机死机。3MFC函数库MFC函数库(Microsoft Foundation Class)是Visual C+中的一套完整的函数库,使用MFC可以让程序员很轻松地构建应用程序框架,降低使用Windows API开发应用程序的难度,非常适合初学Visual C+或者游戏程序设计的人。4使用Windows API在Visual C+中使用Windows API是相当容易的,只要在项目中设定所要使用的函数库并引用正确的头文件,就可以使用Windows API的函数与数据类型。有关设定项目链接的函数库以及引用头文件的方法,将在后面介绍。在Visual C+开发环境之下,可以用具有完整面向对象属性的C语言作为程序设计的主体,而且可以很容易地使用MFC、Windows API,甚至整合其他技术(如DirectX和OpenGL)来开发游戏程序。因此,在未来的一段时间之内,Visual C+仍然会是开发程序的最佳工具。游戏舞台的坐标系统在开始设计游戏时,就要先确定游戏中各对象的位置,这都是通过确定其坐标来完成的,所以在编写游戏程序之前,先说一下有关程序中的窗口区域与坐标系统的概念。1屏幕区、窗口区与客户区任何一个游戏程序,不论是使用全屏幕模式还是窗口模式,都要建立一个窗口。当窗口建立之后,对程序而言,显示屏幕被划分为三个区域:屏幕区(Screen)、窗口区(Window)、客户区(Client)。2坐标点与坐标转换以屏幕左上角为原点,屏幕上的任何位置皆可以用一个坐标来表示,称它为屏幕坐标。当程序中调用某些以坐标点为实参的函数时,都要传递相应的屏幕坐标。如果只知道该点在客户区中的位置,则必须先将它转换为屏幕坐标。转换客户坐标的方法实调用ClientToScreen函数。此外,还可以调用ScreenToClient函数将某一屏幕坐标点转换为其在客户区中的坐标。2.2 游戏架构与规划在开发游戏之前,先介绍一下一个成功的游戏应该具备的基本要素。与现在的游戏相比,早期的游戏不论在画面的表现上,或是剧情安排上,都显得比较粗糙。在创造一个游戏的时候,为了使游戏尽善尽美,首先要确定下列六项重要的基本要素:游戏主题的确立、剧情的发展过程、主要人物的突出、悬念的安排、节奏的快慢、风格的呈现。下面详细介绍上述几个要素:1. 游戏主题的确立在开始制作一款游戏时,首先要确定游戏的主题。一般而言,可以针对不同文化群的玩家来对游戏主题进行分类,例如以格斗的呈现方式为主题,或者以团队合作一起攻击对方为主题等等。明确的主题可以引起玩家的共鸣,使游戏受到玩家的喜爱。游戏主题可以分为两个部分,一种使以旧题材来带动新观念,另一种是以新题材来牵引旧题材。2. 剧情的发展过程电影中,可以看到两个极为重要的要素:障碍和解决,正是这两种要素推动整个电影故事情节的发展。将这两种要素具体地表现在游戏中时,“障碍”就是游戏过程中,玩家必须解决的难题,而“解决”就是让玩家在排除游戏中的障碍时,根据玩家目前游戏角色的能力情况,来寻求一些有效的解决方法。简单的说,“障碍”就是游戏中的迷题系统,而“解决”就是游戏中的解题系统。在游戏中,可以适当地加入这些要素,为游戏设置障碍和冲突,他们将成为玩家在游戏中不断克服困难前进的动力,因而带动游戏中故事情节向前发展。3. 主要人物的突出游戏中的主人翁时一套游戏里的主要灵魂所在。只有出色的主人翁,才能演绎出动人的剧情故事,使玩家一直流连忘返在游戏故事的剧情中。当成功地设定一名出色的主人翁时,游戏就向成功迈进了一大步。这里有一点需要注意,设计主人翁的时候,不需要将他的特点太脸谱化、流俗化、原形化。简单地说,就是不要将主人翁设定成大众化的人物。游戏里的主人翁如果没有自己独特的个性与形象,就很容易使玩家感到非常无趣和乏味。4. 悬念的安排悬念可为游戏带来紧张和不确定性,其目的是让玩家无法轻易地猜出游戏下一步将会发生什么事情,而且适当地加入悬念可以让游戏更加吸引人。通常悬念的成分会放在游戏故事发展前的内容上。一般而言,会先告诉玩家事情发生后的后果,就好比在一般的侦探小说里,侦探已经知道事情发生的结果了,自己的生命也可能会受到威胁。这一切的安排,就是为了增加读者对故事的紧张气氛。5. 节奏的快慢在制作一款游戏的时候,首先就应该明确地指出游戏的时间观念与现实生活中的时间观念的差别。在游戏中,它的时间是由定时器所控制的,而定时器有两种,分别为事件定时器与真实时间定时器。6. 风格的呈现在一款游戏中,应该从头到尾都保持一致的风格,这非常重要。游戏风格的一致性包括人物与背景的属性,游戏风格的定位等。在一般的游戏中,如果不是为了满足游戏剧情的特殊需要,都会尽量不让游戏中的人物说出超越当时历史时代的语言,尤其是时代的特征。2.3 游戏剧本的规划和设计在开始设计一款游戏的细节时,应遵循一下几项特定的细则:界面的设计、道具的设计、真实与虚构、游戏的死角、游戏的交互性、游戏中的奖励、游戏中的对话。下面详细介绍这几点细则:1. 界面的设计在游戏中,可以把玩家所操作的建模设计成简单明了的文字或图标,这样玩家就比较容易理解与使用,而且玩家会对这些界面感到相当体贴和使用。可以采用符号或图像的界面来表达游戏指令的输入,并且尽量少采用单调呆板的文字菜单方式。如果非要使用文字的化,也不一定要使用菜单来表现,可以使用更为新潮的图形界面来表达。2. 道具的设计游戏中道具的属性是最单纯的,因为道具没有个性与情绪上的变化,将它设定成什么样,它就是怎么样,例如补血道具,它只是为主角补血而已。一次在设计道具的时候,只要去注意道具的合理性就可以了。另外,在设计道具的时候,也要考虑到对象的全面性。例如在游戏中,玩家需要使用弓去打猎。诸如此类,道具设计最困难的地方就是在于它的全面性。3. 现实与虚构当玩家在玩游戏的时候,主要是希望可以从游戏中体验到不同的虚幻生活经历,并且希望从游戏中得到一些心理上的解放。所以游戏的世界观可以是虚构的,不必在乎它的合理性与真实性,而在游戏中所设定的人物、感情或道具等因素则可以是真实的。简单地说,如果游戏的本质核心与现实生活的步调比较接近,这类游戏就比较容易让玩家所接受。4. 游戏的死角在游戏的设计规划中,很容易犯下两种错误,那就是让玩家的主角造成“游走”和“死路”的情况。游走指的是玩家在广阔的地图上任意移动时,他们很难发现游戏下一步的发展线索和途径。因为游戏中的地图太过于宽广,并且游戏中的提示又不是很明显,玩家就很容易在游戏中随意地游走,游戏也就很难再继续进行下去,这不仅会使玩家感到困扰,而且会大大地减少游戏的娱乐性。要避免产生这种游走现象的方法就是在故事发展到一定程度的时候,把游戏世界的范围缩小,让玩家可以到达的地方减少,并且使游戏的发展线索更加明显地显示出来,让玩家可以从中得到更多的提示,这样玩家就能够轻松地找到故事发展目标。死路是指玩家在游戏进行到一定程度后,突然发现自己进入了游戏的死路,而且没有任何可以继续进行下去的线索与场景了,这时候游戏便会卡住。如果遇到的是那些那些需要到储存点才能储存的游戏,玩家可能真的会欲哭无泪,活活给气死。通常出现这种情况的原因是游戏设计者没有做到游戏的全面性,而且没有将游戏中所有可能的流程全部计算处理,这时如果玩家没有按照游戏设计者所规定的路线前进时,玩家就会很容易造成游戏过程中出现死路。5. 游戏的交互性交互性指的是游戏剧情或人物对玩家在游戏中所做的动作或选择产生某些特定的反应。,举个例子来说,当主角在一个洞穴中遇到一个世外高人,在游戏早期时,这个世外高人对主角的态度是不屑一顾,所以每次主角与他对话的时候,他总是爱理不理。知道有人告诉主角说那个世外高人是因为与他所爱的人走散之后,他的个性就变得相当的奇怪。主角为了帮助这个世外高人寻找到他所爱的人,与怪物进行了一场厮杀,最后虽然找到了世外高人所爱的人,但主角也因此受了重伤。当这个世外高人得知消息之后,赶紧向主角答谢,并且帮助主角疗伤,甚至传授高强的魔法给主角。如上所述,当注脚解决了世外高人的难题之后,世外高人对于主角的态度则一百八十度的大转变,主角也因此而得到了室外高人高强的魔法,甚至还可从世外高人的口中得知进行游戏下一个任务的提示,这也就是游戏的交互性。6. 游戏中的奖励 在游戏中,当玩家进行到一定程度的时候,就要给玩家一些奖励,例如精彩的过场动画、漂亮的画面,甚至还可以让玩家所操控的主角得到一些有用的道具或一些可以提升能力的武器装备等。 在游戏中,奖励也可以包括隐藏的因子在内,例如隐藏关卡、隐藏人物,甚至于隐藏的过关密码等等。这些无厘头的设计非常有意思,这也是现在的游戏都会加上的功能,但值得注意的是这些设计不可以影响到游戏的正常运行,毕竟这些设计只是一个噱头而已。7. 游戏中的对话 游戏中故事剧情的主要表现方式就是对话,可以将游戏中的对话种类分成下列三种: (1)无剧情的游戏,如德军总部游戏。 (2)特定对话剧情的游戏,如角色扮演游戏对话游戏。一般而言,角色扮演游戏都会以特定的对话方式来表现游戏中的故事剧情发展,通常这种游戏的故事剧情是以单线的方式来进行的,其故事的交互性较低。 (3)选择性对话剧情游戏。在这类游戏中,对话的设计带有情绪性和选择性,玩家可以做出他想选择的对话内容。如果玩家选择其中一个对话,那么其他的话题就会消失,而以后的话题机会依据他第一次所选择的对话而引发。 在这里,要注意不要使对话对于单调和重复。一般而言,一款游戏中至少要出现60句以上无意义且常用的对话,而且它们之间又可以互相组合,这样玩家才不会觉得游戏中的对话过于单调无聊。还有也要尽量避免使用太过于简单的字眼,例如“唉!”“早!”等太过于平凡的对话,因为在玩家看来,显得过于草率,而且要尽量采用与目前游戏中情景有关的话题,以提升游戏的娱乐性与真实性。 游戏设计是一门非常特殊的学问,它不但是许多技术的组合,而且还包含电影、戏剧、历史、文化等重要的因素,所以如果想要好好地掌控游戏的规划与构架,不仅仅要有创造力、文学功底,甚至对于这些重要的因素都要有一定程度的认识与了解,这样才可能成为一名成功的游戏设计人员。 好了经过以上对游戏发展前景,发展过程,游戏的组成元件分析,相信大家对游戏都有了一个初步的了解,这里不再赘述了。下面就让我们做一个简单的小游戏吧,看看俄罗斯方块的编程原理,让我们对VC有个更清晰的了解吧!第3章 俄罗斯方块的实现俄罗斯方块是一款很好玩的游戏,也很具有代表性。在很小的时候,就已经接触过了俄罗斯方块,那时候,还只是玩玩而已,没想到今天自己要来实现它。游戏的具体内容是,在游戏界面中,不停的有游戏方块从窗口上方往下落。游戏者需要根据游戏方块的形状,操作控制键对方块进行移动、旋转,尽可能将一层铺满。当一层被铺满后,该层会消失,否则层会迭高。当层数迭高到不能落下游戏方块后,该游戏结束。首先新建一个单文档。3.1 资源编辑 游戏的核心并不是我们所看到的图形,反而是我们所看不到的,游戏的算法。那么,游戏的图形和核心之间是怎么联系的呢?例如我们怎么利用键盘的方向键来控制俄罗斯方块的移动和转变呢?这些都需要我们一来具体的操作来实现。游戏的图形和核心的联系是必然的。什么是游戏?游戏本来就是一种变化过程,它是无形的,是不依奈图形而存在的。但是,游戏中缺少了图形,就像是人只有一种表情,显得单调而无趣。所以我们首先为游戏选好一个封面和背景图片,将这些图形加入到游戏当中。我们可以利用PhotoShop工具对图片进行处理,达到我们利用的目的。来看一下具体实现吧!添加位图:封面: IDB_BITMAP1背景:IDB_BITMAP2方块:IDB_BITMAP3其次为游戏添加菜单:开始: ID_MENU_START暂停 ID_MENU_PAUSE退出 ID_APP_EXIT附图1所示。3.2 变量函数接着就是定义变量了,但是,由于这个游戏要添加的变量和函数太多了,我们要建一个新类。是否应该先添加应该类呢?最好是这样。因为新类将会涉及到变量。添加普通类CRussia。附图 2 所示。在View类和Russia类中添加以下变量和变量函数。/MyView.h :/俄罗斯类CRussia russia; /开始标志bool start; /封面CBitmap fenmian; /暂停BOOL m_bPause; 注意:以上变量可以在view类public中直接添加。 /开始菜单afx_msg void OnMenuStart(); /计时器afx_msg void OnTimer(UINT nIDEvent); /键盘操作afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);注意 :以上成员函数可以通过类向导进行添加。/ Russia.h:/游戏数组int Russia100100; / 当前图形int Now44; /上一图形int Will44; /变换后的图形int After44;/当前图形的左上角位置CPoint NowPosition;/当前可能出现的图形形状数,int Count;/游戏结束bool end; /级别int m_Level;/速度int m_Speed;/分数int m_Score; /行列数int m_RowCount,m_ColCount;/方块CBitmap fangkuai;/背景CBitmap jiemian; 注意 :以上变量可以在Russia类public中直接添加。 /显示分数等内容void DrawScore(CDC*pDC); /消行void LineDelete(); /方块移动void Move(int direction); /方块变化,即方向键上键操作bool Change(int a4,CPoint p,int b100); /是否与原来方块接触,或与边界接触bool Meet(int a4,int direction,CPoint p); /显示下一个方块void DrawWill(); /显示界面void DrawJiemian(CDC*pDC); /开始void Start();注意 :以上成员函数可以在通过右键在Russia类中添加,并将Change和Meet的函数值返回true。3.3 具体实现在以下的方法中包含了实现俄罗斯方块功能的各个函数,在实现游戏的过程中,需要解决很多问题,包括如何创建新的方块、如何显示方块、如何移动方块-左移、右移、下移、判断是否能移、如何旋转方块、放置方块与消除行以及游戏的逻辑判断等等诸多问题,需要一步一步有条理的进行解决。3.3.1 构造函数 首先要对View类和Russia类进行初始化。载入资源位图。3.3.2 画图函数 利用画图函数进行图片的显示。在void CMyView:OnDraw(CDC* pDC)函数中,开始时我们是设start为假,它就会在OnDraw()函数中画封面,而当我们开始游戏,start为真。3.3.3 界面函数 当有一些客户区生效(被挡住或最小化)时,它必须重画,而如果游戏只是玩了一半,它必然在重画时必须把原先已经出现的方块、分数等也显示出来,怎么办?就必须在画封面的同时也画出它们。当然,刚开始时它们是不会符合条件的。在下面函数中实现。void CRussia:DrawJiemian(CDC *pDC)3.3.4 信息函数 它是画分数、速度、难度的。 在这个函数中void CRussia:DrawScore(CDC*pDC)我们可以进行 设置字体 CFont font; if(0=font.CreatePointFont(300,"Comic Sans MS") AfxMessageBox("Can't Create Font"); pDC->SelectObje