首页 > 范文大全 > 正文

基于VS2010的双人贪吃蛇设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于VS2010的双人贪吃蛇设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:VS2010应用程序的构成包括多个对象和相应文件。构成应用程序的文件有各类由AppWizard所生成的头文件,还有其所生成的实现文件两大部分。本文在简单介绍VS2010应用程序结构的基础上,较为详细描述了游戏的基本原理、逻辑功能设计、具体物理实现及其测试。测试结果表明,本款游戏软件具有一定的实用价值。

关键词:VS2010 贪吃蛇游戏 功能设计 物理实现

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2015)04-0164-01

1 VS2010应用程序结构简介

Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境[1]。VS2010应用程序的构成包括多个对象和相应文件。构成应用程序的文件有各类由AppWizard所生成的头文件,还有其所生成的实现文件两大部分。基于此研发的数字竞猜游戏能丰富人们的生活,具有一定的实用价值[2-4]。

2 双人贪吃蛇游戏的简介

2.1 游戏模式

本游戏提供双人控制模式。两条蛇用红色与绿色块状表示。上下左右四个控制键和w-s-a-d四个字母键分别控制绿红蛇的移动方向。红、蓝和黄三色点分值不同的食物。每条蛇吃掉一个食物就增一格。绿蛇在不碰到红蛇及其四周墙壁,且不吃掉本身时,尽量获得高分。红蛇在碰到墙壁或吃到自身时停止不动,并失去控制,成为一个障碍物。在游戏中可对绿蛇予以控制,直到绿蛇碰到障碍或者自己导致游戏结束。

2.2 得分记录

游戏中若得分达到指定的阶段后,系统会自动提升蛇的移动速度,同时增加整体游戏的难度。

2.3 游戏奖惩

吃掉红色食物积分加一;吃掉蓝色食物积分加二;吃掉黄色食物积分加三。惩罚就是蛇失去移动的能力,成为障碍物。

3 双人贪吃蛇游戏设计分析及功能模块

3.1 设计分析

对象蛇可将蛇看作一组动态变化的一维数组,游戏框架是一维数组在二维数组中移动以及改变长度大小。对象由游戏背景、蛇的绘画和附加功能等组成。将蛇看作一个长度可变的一维数组,使用顺序表储存。初始化蛇,画蛇,移动,吃食物,判断游戏是否结束等对象处理。用一个新类用于描述单个蛇的属性。

3.2 功能模块

游戏控制:初始化两条蛇,控制蛇的移动方向,显示食物以及隐藏食物;当蛇碰到障碍后改变游戏控制方法或者结束游戏。积分模块:即时显示用户的得分情况,根据游戏中是否填入用户的姓名来决定是否记录用户每一局的游戏得分。调节难度:分为手动调节难度和自动调节难度,从手动调节难度来说可以通过游戏界面上的两个按键来完成对游戏难度的手动调整,从自动调节难度来说是以用户在游戏中得到的分数达到一定的程度来决定的。背景音乐播放:可以打开用户指定的音频文件,同时具有播放和暂停文件的功能。

4 双人贪吃蛇游戏系统实现

本游戏基于顺序表,实现游戏控制,积分模块,难度调节模块,背景音乐播放模块。使用C++/CLI 在vs2010平台上实现,用户界面是.Net架构下的Windows Form窗体界面。主要模块实现及其结果如下。

4.1 类的设定

本游戏需设计两个Form窗体类:Form1和ScoreSave。在这些窗体类中需要用到ListView,PictureBpx、Button等控件。另外添加两个类,一个蛇的类,一个分数的类。

两个类的实现代码:

初始化蛇:

number=6;

snakebody[0]=System::Drawing::Point(sx0,sy0);

for(int i=1;iK+1,snakebode[i-1]->Y);

还有控制绘蛇的颜色、移动蛇。分数类定义:

Private:

String^ NAME;

System::Int32 score;

Public:

ListViewItem^ dataItem;

4.2 主要模块实现

游戏控制:本模块是用户可即时控制的交互部分,主要使用到了Form1窗体,该模块在Form1中有两个部分,一个部分是游戏区域,在本区域中仅存在一个picturebox控件,但是同时使用了Timer控件来确保蛇的移动,另一个部分是控制游戏进程的三个button按钮,分别提供了游戏的开始暂停,游戏帮助以及退出功能。

积分模块:本模块是显示并且储存用户实时得分情况的部分。本模块中,Form1窗体中,使用到了label、button和textbox三种空间,在本模块中需要用到记录分数的Int32变量,同时本模块定义了一个新的窗体,在该窗体中使用到了listview,button模块,在该窗体中用来显示历史用户的得分记录。

难度调节:本模块位于Form1窗体,需要label和button两种控件,通过主动或者自动调节系统时间Timer的快慢来改变蛇移动的速度。

背景音播放:本模块位于Form1窗体中,使用到了picturebox和button控件,调用了windows系统中DirectShow插件,通过对插件的控制来改变对音频文件的控制。

参考文献

[1]任哲,等编著.MFC Windows应用程序设计[M].清华大学出版社,2013年.

[2]杨国富编.Visual C++ 程序开发 案例解析[M].清华大学出版社,2013年.

[3](美)Mark Allen Weiss,冯舜玺.数据结构与算法(计算机科学丛书)[M].机械工业出版社,2009年.

[4]李嘉诚.基于安卓的聊天系统研发[J].软件导刊,2014(11).