【作品】多人贪吃蛇
【下载地址】稍后上传
【以下内容摘自试验报告,可能狗屁不通,尽情谅解】
一. 需求分析:
贪吃蛇是众所周知的益智类小游戏,但是传统的贪吃蛇通常是一个人玩的,不仅枯燥,而且玩多了就觉得没有乐趣。这也是我开发“多人贪吃蛇的目的之一”,本游戏可以选择单人模式,也可以选择多人模式,最多支持4个人同时游戏,这样不仅享受到了游戏本身的乐趣,还能增加同学间的友谊。在繁忙的学习生活中做到劳逸结合。
本游戏的设计考虑了美观,趣味等多方面的因素,在界面上本人查了一些计算机绘图相关的书籍,运用了GDI+梯度对象绘制各种蛇身,食物等图形对象,并且用户还可根据需要选择自己喜欢的颜色,即做到了良好的视觉效果。
在趣味性方面,单人游戏模式为了使游戏更有可玩性,指定了规定的时间,若在该时间内没有出现“蛇头与自身相碰”,“蛇头撞墙”等现象,则算过关,在以后的各关内,游戏时间则是前一次时间的难度,同样的若能熬过规定时间则进入下一关,因此增加了各关的难度。每吃到一个食物会加10分,每一关结束和蛇死亡时显示得分情况。
多人模式时的规则略有不同,首先要给玩家设定一个昵称,如果不设定则使用默认的名字。进入游戏后每条蛇初始状态按顺时针方向运动,判断死亡以及获取积分的方法同单人模式,所不同的是活到最后的玩家才是赢家。另外,多人模式下无时间限制。其中所有的按键设置可在游戏主界面的“游戏设定”中进行设定。
二. 设计分析
面向对象是进几年编程领域高举的旗帜,加上C#又是一门完全面向对象的语言。因此,设计游戏时运用面向对象的思想也是自然的,同时可以减轻工作量,提高程序的可读性。
在本游戏的设计中,我将一些常用的数据(包括蛇的位置,运动状态,角色得分,行为)等信息都封装成独立的类,在主程序中通过动态的生成对象数组的方法配合foreach语句对每一个对象进行操作,控制。
在食物信息方面同样的将食物的位置信息以及食物的添加等行为封装成一个类。在每次蛇移动的时候只需调用对象的EatFood方法即可实现蛇身体的增长,食物的消失,分数的累加等信息。
主程序中动态的生成了两个定时器,一个控制蛇的移动,另一个控制食物的添加。在每次移动时,自动判断是否应终止游戏,若是则终止本次游戏(多人模式下为死亡者留下尸体,其他蛇碰到了该尸体则算游戏失败)。
暂停功能:本游戏特别设置了一个暂停功能。可以通过菜单选择暂停/继续,也可以直接按回车,当再次按下回车或是菜单中选择继续游戏可恢复游戏。
三.具体设计
1.主要界面及其说明:
图一:主菜单
图一为主菜单,当用户将鼠标移动到指定的文本上时字体颜色会发生变化,当移开鼠标时字体又会变回原来的样式。在主菜单中可以选择游戏的模式(单人模式,多人模式),还可以进行游戏的设定(按键的设置)。在主界面上还有一个还原信息,在主菜单上显示”Welcome!!!”,在游戏时显示玩家的得分(多人模式下显示所有玩家的最高得分)。
图二:单人模式下的游戏场景。
图二为单人模式下的游戏场景,玩家(贪吃蛇)必须在游戏区内活动,撞到墙壁,或者蛇头碰到自身都算输,每隔一段时间会出现食物,每吃掉一个食物蛇身会增长一节,同时得分也会有所变化。并且游戏时按回车键或者选择菜单中的暂停可暂停当前游戏,再按回车键或者选择菜单中的继续可恢复游戏。
图三:游戏结束(单人模式)。 图四:过关
图三为单人模式下游戏结束显示的界面,当用户蛇头撞墙或蛇头碰到自身时,终止游戏并显示游戏结束界面。按空格键可返回主界面。图四为在指定时间内不失败则显示该界面,下一关的游戏时间为当前游戏时间限制的2倍。
图五:选择玩家及其颜色
在主菜单中选择了多人模式时将会提示用户选择玩家并可设置一些参数比如玩家颜色,玩家姓名等信息。其中所设的昵称将在最后得分信息或胜负情况中。
图六:多人模式下的贪吃蛇
图六为多人模式时的游戏场景,图中角色的颜色是在进入游戏前选择的,然后同单人模式一样蛇的每个节点是用GDI+的梯度对象绘制出来的,进入游戏时四个玩家的运动状态是按顺时针方向。游戏规则同单人模式。
图七:游戏菜单
图七为游戏中所有的菜单,暂停/继续游戏可让游戏在暂停和游戏状态进行切换。“返回主菜单”可以停止当前游戏,并显示主菜单。“退出”为退出本程序。“游戏配置”显示图八界面。“玩家设置”显示图五界面。
图八:游戏按键设置
四.实验中遇到的问题与解决方法
在此游戏的设计中遇到了一些问题,比如处理蛇方向时光标键在配置时要找一种规定,本来是想让用户输入箭头,但这样比较麻烦最后决定光标的设置用中文‘上’‘下’‘左’‘右’以代表光标键。在处理时对光标键左单独处理,通过比较字符相等的方法来达到目的。另外GDI+的绘图也是遇到了不少难题,因为习惯了WIN 32下GDI绘图,在.NET下这些函数都封装到GRAPHICS类中,通过上网搜索了一些资料,最后决定用梯度对象绘制蛇身。
五.总结与特色
本游戏突破传统“贪吃蛇”只能一个人玩的局限,让玩家享受多人游戏的乐趣。在主场景中,我采用了GDI+的梯度对象进行绘图,使界面游戏更有立体感。暂停功能更可谓人性化设计
posted on 2011-04-17 23:35 Eason Jiang 阅读(802) 评论(0) 编辑 收藏 举报