我的编程空间,编程开发者的网络收藏夹
学习永远不晚

贪食蛇小游戏开发设计基础教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

贪食蛇小游戏开发设计基础教程

   贪吃蛇是家喻户晓的益智类小游戏,大家小时候应该都有玩过,编程学习网这里就不多介绍了,本教程将教你用MicrosoftVisualC++来制作它。

   要求如下:

  (1)应用MFC单文档制作

  (2)能够记录游戏时间,游戏成绩

  (3)可暂停/继续并在玩家不愿游戏时停止游戏

  (4)蛇的身体能够随着蛇的长度变色

  (5)能够显示英雄榜

  (6)有背景音乐和音效

  1、关于编译软件

  本程序采用MicrosoftVisualC++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。

  2、关于兼容性

  本程序经过调试,可以在XP系统下编译运行,也可以在Vista下运行,界面稍有不同,但不影响运行结果。

  3、程序结构

  根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,音乐音效的添加与控制,游戏帮助提示与英雄榜的显示等等。具体的程序结构如下面的图1-1所示。

贪食蛇小游戏开发设计基础教程_小游戏开发_游戏设计_游戏设计教程_编程学习网

  图2-1贪吃蛇结构图

  4、程序流程

  根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括:游戏开始,随机-2-

  出现食物;按下ToolBar中的暂停按钮或Space键可以实现暂停功能;按下帮助键或ToolBar中的“?”键可获得游戏帮助说明;可播放背景音乐和音效并可通过菜单以及ToolBar控制其播放或停止等等。

  图2-2贪吃蛇流程图

    5、变量函数及资源的声明

  根据程序的结构,将贪吃蛇需要实现的功能细化成为相应的函数。

  函数声明

 

  变量声明

  6、资源

  (1)对话框

  (2)音乐

  (3)位图

  (4)菜单/工具栏

  (5)头文件

  7、主要功能的实现

  (1)游戏界面

  贪吃蛇游戏的游戏界面包括背景图片、蛇身体的绘制、蛇移动范围的绘制等等。其中贪吃蛇的身体用什么方法绘制,才可以使得其在游戏过程中可以实现“吃”的功能是很重要的。因此在游戏界面的初始绘制时就必须考虑到游戏时可能遇到的问题。

  本程序采用点数组CArray<CPoint,CPoint>m_ysBody来存储贪吃蛇,点数组的功能很强大,可以添加点,同时可以获得蛇的长度,对于而后进行游戏中控制蛇的颜色以及音效的播放等都有很大的帮助。

  导入位图以及菜单工具条后,游戏未开始前(XP系统下)的界面显示如图3-1所示。

  图3-1游戏初始界面显示

  (2)初始化食物

  确定用点数组存储贪吃蛇以后,贪吃蛇的食物如何达到随机出现,并且能够按照网格式与蛇头无偏差相接就是一个亟待解决的问题。

  随机出现应采用rand()函数来实现,而食物与蛇头无偏差相接则利用坐标来解决。设置两个整型变量m_ysX,m_ysY作为食物出现的点的坐标,令m_ysX=rand()%30,,m_ysY=rand()%40即可。使随机出现的点能够整除最小网格,也就是使食物与蛇头无偏差相接。

  再由食物坐标(m_ysX,m_ysY)与蛇头坐标是否相同判断蛇是否“吃”到了食物,设置判断标签ysTag,如果吃到了,ysTag为1,则再出现下一个食物,反之,如果没吃到,则不出现食物直到标签为1为止。

  最后,再将(m_ysX,m_ysY)赋给m_ysFood作为食物坐标,以便在其他函数中调用。在下面的图3-2中,我们可以看到,蛇的身体是与出现的食物在一条直线上的,完全可以达到相接的目的。

  图3-2蛇与食物的相接

  (3)开始游戏

  开始游戏后的重点是如何用键盘来控制蛇的移动并传递到OnTimer(UINTnIDEvent)函数中去以及判断蛇是否死亡。首先说明键盘与蛇的响应,设置一个方向控制变量m_ysDirect,再添加OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)函数来实现键盘消息的传递,按下不同的键盘按键,m_ysDirect会相应的改变,再利用switch语句在OnTimer(UINTnIDEvent)函数中对坐标进行相应改变即可。如图3-3所示。

  

  图3-3键盘的上下左右键的效果

  其次来解释一下如何判断蛇的死亡,由于蛇的身体是由点坐标数组构成的,因此判断蛇是否死亡其本质就是判断蛇头的坐标是否与游戏边框相同或者蛇头坐标是否与蛇自己的身体相同。该过程也在OnTimer(UINTnIDEvent)函数中写入即可,设置一个判断死亡变量ysTag1,当按下向下键时,蛇纵坐标不断自加,此处仅以向下为例,具体程序如下:

  如果ysTag1为1,则说明蛇已经死亡,应当弹出对话框提示死亡,输出得分(如图3-4),同时还可以根据玩家的得分数相应的改变对话框中的话语(XP系统下)。

  

  图3-4贪吃蛇的死亡

 

  我们看到图3-4的蛇身体的颜色发生了变化,不再是初始状态的绿色,而是变为了蓝色,这是在OnDraw(CDC*pDC)函数中设置的,设置变量获取蛇身长度,随着长度的增加,蛇的颜色发生相应改变,最终会变为表示危险的红色。

  并且伴随着贪吃蛇挂掉,播放不同的音乐,如果高于70分,则放带有掌声鼓励的高分音乐的IDR_YS_HIGHSCORE,反之,则播放蛇被撞死的电子音乐IDR_YS_LOWSCORE。

  播放音乐的函数用包含在头文件mmsystem.h中的PlaySound函数。此外,游戏开始还需要计时、计分以及暂停等功能。这些功能都比较简单,游戏时间和分数分别用两个变量m_ysTime和m_ysScore来记录,应用pDC->TextOut函数来输出即可。至于暂停和继续的功能实现,只需要暂停和恢复计时器就可以了,实现暂停功能即KillTimer(1)并同时令控制暂停变量为m_yspausectrl为0即可。

  8、英雄榜

  很多游戏都有英雄榜这一个功能。贪吃蛇这个游戏也不例外,为了下一次开始新游戏的玩家也能够看到别人的成绩,所以采用文件来存储游戏记录。

  首先加入头文件fstream.h包含文件写入读出函数ifstream、ofstream。定义文件及变量存储成绩,将对话框中EditBox的变量设置成为对应类型。例如:

  上面所写的就是变量的传递,传递完毕后,对话框控件中就有了初值,可以正常显示分数。而后进行游戏相应等级的玩家成绩判断,如果玩家成绩与英雄榜成绩相同,则根据时间来判断,若游戏时间短,则进入英雄榜。判断条件如下:

  (m_ysScore>m_1bestscore||m_ysScore==m_1bestscore&&m_ysTime<m_1besttime)&&m_yslevelctrl==1本程序默认游戏结束即显示英雄榜,但玩家如果想在没有游戏时查看也可以点击菜单“帮助—〉英雄榜”查看。

  9、游戏设置

  这里的游戏设置主要是指游戏的等级以及音效音乐的播放控制。前面在变量声明中已经看到,关于这三个量,我们已经予以了定义,只需要在按下相应键盘或鼠标消息的时候,将变量值进行改变,再利用这些值控制相应功能的运行。以游戏音效为例,在按下菜单中的“游戏设置—〉音乐—〉音效开/关”后(即菜单消息voidCYuShuoView::OnYsEffect()),代码如下:

  其中在构造函数CYuShuoView::CYuShuoView()中已经将m_yseffectctrl的初值设置为1。m_yseffectctrl=1;//将音效控制变量改为1break;

  10、程序运行

  程序开始运行后会进入游戏界面,但是不会立即进行游戏,单击菜单的“开始”才会开始游戏。在游戏开始前,玩家可以根据自己的喜好,通过菜单或者工具栏设置游戏等级等。

  在游戏过程中,按下Space键就会暂停游戏,再按下Space键则会继续游戏。图4-1所显示的是XP系统下菜单的样式,以及单击菜单开始。

  (1)带有子菜单的菜单样式

  (2)单击开始菜单

  图4-1菜单样式及单击开始游戏

  开始游戏了,小蛇越来越长,颜色也有所不同了。颜色的改变预示着游戏的难度加大了,并且,不同的最终得分会产生不同的死亡评语。

  在前面的图3-4中显示了贪吃蛇死亡的样子,其中因为该局游戏得分比较低,因此得到的评语是“你才得了这么两分!”,而如果得分较高,就会得到更好的评语,最好的评语是“牛!”。

  图4-2所显示的是游戏开始后随着蛇长度的增加而变的颜色。

  (1)黄色

(2)红色

  图4-2蛇变颜色

  如果不太会玩贪吃蛇这款游戏,那么可以单击菜单“帮助—〉游戏说明”,或者单击工具条上的,寻求帮助。如图4-2所示。

  图4-3游戏说明

  如果你觉得自己实力很强想看看别人的成绩,那么可以单击英雄榜看看什么样。

  

  图4-4英雄榜样式

  11、错误调试与分析

  本程序由于经常调用Invalidate()函数重绘窗口,因此在游戏过程中频闪的非常严重。查阅了很多资料,双缓冲技术可以解决这个问题,但是如果采用双缓冲技术,暂时还不能克服背景的问题,因为在双缓冲技术的应用中,背景是被强制默认为颜色,而不是图片。

     以上是贪吃蛇小游戏设计的全过程,欢迎关注家家课“游戏开发”板块,还有更多的精彩教程。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

贪食蛇小游戏开发设计基础教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

贪食蛇小游戏开发设计基础教程

编程学习网: 贪吃蛇是家喻户晓的益智类小游戏,大家小时候应该都有玩过,编程学习网这里就不多介绍了,本教程将教你用MicrosoftVisualC++来制作它。
贪食蛇小游戏开发设计基础教程
2024-04-23

贪吃蛇游戏设计基础教程

编程学习网:“贪吃蛇”是一种很流行的电子游戏。游戏方法如下 :一条蛇在棋盘上爬行,由键盘控制其转弯;当蛇的头部撞到棋盘边界或碰到自己身体时,游戏结束。游戏结束时,蛇身体越长得分越高。那么这款游戏设计思路是怎样的呢?最终效果又是如何实现的呢?
贪吃蛇游戏设计基础教程
2024-04-23

贪吃蛇游戏设计具体教程全解析

编程学习网:贪吃蛇作为一款经典的小游戏很受大众喜爱,游戏制作的精细度和画面的质量也随着版本的提高而不断提高,那么贪吃蛇是怎么制作出来的呢,我们一起来探究一下。
贪吃蛇游戏设计具体教程全解析
2024-04-23

游戏设计基础教程 游戏设计类型概括

编程学习网:说起游戏开发,大家都知道这是由团队长期合作才能出成果的项目,而其中设计师便有多种类型。游戏设计师究竟是干什么的?这里既有所谓的插手所有设计元素,有时候甚至还参与美工和编程的“多面手”设计师。
游戏设计基础教程 游戏设计类型概括
2024-04-23

游戏道具设计基础教程

编程学习网:下面我们要学的是如何使用3dmax制作游戏道具——木桶,这则实例教程是基础的,希望能对刚入行的新手们有所帮助,废话不多说了,一起先看看效果图:
游戏道具设计基础教程
2024-04-23

游戏设计基础入门教程

编程学习网:游戏开发的主要过程是游戏设计或游戏策划,好的游戏设计是这样一个过程:创建能激起玩家通关热情的目标,以及玩家在追求这些目标时做出的有意义的决定需遵循的规则。
游戏设计基础入门教程
2024-04-23

游戏活动设计基础教程

编程学习网:有时候我会遇到一些总是希望将自己的工作做得更好的设计师,但事实上他们却未曾发生改进,或者觉得自己现在所拥有的技能水平远远不够。不断的迭代能够成就更出色的设计师,但并不是所有人都能从自己所从事的事中获得价值。
游戏活动设计基础教程
2024-04-23

游戏脚本设计基础教程

编程学习网:类游戏编程,特别是RPG脚本起着驱动整个游戏进程的作用。事件的运作建立在脚本的基础上,而脚本的设计建立在引擎的基础上,所以设计脚本之前因该想一想引擎,好的脚本对剧情的描述具有简单、准确的性质。
游戏脚本设计基础教程
2024-04-23

游戏设计基础的概念设计教程

编程学习网:USC游戏设计专业系主任,TracyFullerton教授,越深入自己内心的情感,往往越能打动更多人。对于开发游戏,我们往往不是从市场出发,而是从设计者的艺术诉求出发,为新游戏寻找方向,设计概念。
游戏设计基础的概念设计教程
2024-04-23

H5小游戏开发教程之基础项目搭建

我们开始搭建起项目。首先,在小游戏项目存放目录打开cmd,运行以下命令初始化一个vue3的项目,我使用的yarn,也推荐大家使用,我假定童鞋们都会使用npm或yarn。

游戏开发的取舍问题 游戏基础教程

编程学习网:游戏开发涉及到好几个范畴 :游戏规则及玩法、视觉艺术、编程、产品化、声效、编剧、游戏角色、道具、场景、界面以上的元素都是一个游戏设计专案所需要的。而游戏的设计,归根结底就是一连串的决策。
游戏开发的取舍问题 游戏基础教程
2024-04-23

游戏格斗动作设计基础教程

编程学习网:我们要学的是游戏格斗的动作设计,不需要多余的场景,不需要多余的噱头,把握主体才是王道!现在很多人都用着错误的方法在学习研究动作类动画,尽管你依然能从那错误的方法中得到进步,可是那对将来的发展是一种制约!
游戏格斗动作设计基础教程
2024-04-23

H5小游戏开发教程之页面基础布局的开发

本篇文章带给大家H5小游戏开发教程之页面基础布局的开发,希望能够帮助到你!

在Cocos2D-X游戏开发中多线程基础教程

编程学习网:应该又部分同学试过要将Cocos2D的项目转移到Cocos2D-X上吧,在Cocos2D的多线程项目跟Cocos2D-X的实现不一样哦,本篇教程将解读Cocos2D-X中的多线程。
在Cocos2D-X游戏开发中多线程基础教程
2024-04-23

游戏开发基础教程:Cocos2D-X之手势识别

编程学习网:我们在手机游戏中经常会看到类似于水果忍者等用手势操作的手机游戏,那么这些游戏是怎么识别手势的呢?本篇教程将带你深入了解Cocos2D-X中如何实现手势识别。
游戏开发基础教程:Cocos2D-X之手势识别
2024-04-23

C语言学小游戏开发 简易版扫雷设计教程

编程学习网: 扫雷最初的流行伴随着1992年发布的Windows3.1,之后迅速成为了各种操作系统中必不可少的一款游戏(包括windows的winmine,KDE桌面环境下的KMines,GNOME桌面环境下的gnomine等)。
C语言学小游戏开发 简易版扫雷设计教程
2024-04-23

新手教程:四个步骤实现游戏开发设计

编程学习网:关于“游戏开发”,狭义的理解是编程,即程序员所做的工作。而广义游戏开发,是整体的游戏产品化流程,包括最早的游戏立项阶段、到开发阶段的整体开发流程,到上线阶段的宣传推广、渠道配合、运营、生命周期管理,到最终游戏结束的一整套流程。
新手教程:四个步骤实现游戏开发设计
2024-04-23

编程热搜

  • 教你如何为你的Cocos2D-X资源加密解密
    编程学习网:我们平时在用Cocos2D-X时都不想让别人看到自己的文件,本篇教程将教你如何为你的Cocos2D-X资源加密解密。
    教你如何为你的Cocos2D-X资源加密解密
  • 教你如何用Cocos2D实现3d效果
    编程学习网:经过了之前几篇教程,相信各位同学已经对Cocos2D不陌生了,本篇教程将教你如何用Cocos2D实现3d效果。
    教你如何用Cocos2D实现3d效果
  • 零基础学习之教你如何用Cocos2D实现画中画效果
    编程学习网:没学过Cocos2D?没关系,多看看我们的教程,一步步成为游戏开发大神。本篇教程将教你如何用Cocos2D实现画中画效果。
    零基础学习之教你如何用Cocos2D实现画中画效果
  • 解析安卓Cocos2D-X2转移项目到Cocos2D-X3过程
    编程学习网:相信有一部分同学都经历过将项目从Cocos2D-X2转到Cocos2D-X3的麻烦,本篇教程将解析将项目从Cocos2D-X2转到Cocos2D-X3的过程。
    解析安卓Cocos2D-X2转移项目到Cocos2D-X3过程
  • 游戏脚本设计基础教程
    编程学习网:类游戏编程,特别是RPG脚本起着驱动整个游戏进程的作用。事件的运作建立在脚本的基础上,而脚本的设计建立在引擎的基础上,所以设计脚本之前因该想一想引擎,好的脚本对剧情的描述具有简单、准确的性质。
    游戏脚本设计基础教程
  • 成为游戏设计师必须具备的条件
    编程学习网:很多人喜欢玩游戏,他们总在不停感叹:这款游戏实在太精彩了,我要是能设计出这样的游戏就!而在他们行动之前,还有许多需要解答的问题罗列在前,我要如何成为游戏设计师?我需要具备哪些技能和素质?游戏设计师究竟在做什么工作?那么,游戏设计师有哪些任务呢?我们将讨论这个问题。
    成为游戏设计师必须具备的条件
  • 贪食蛇小游戏开发设计基础教程
    编程学习网: 贪吃蛇是家喻户晓的益智类小游戏,大家小时候应该都有玩过,编程学习网这里就不多介绍了,本教程将教你用MicrosoftVisualC++来制作它。
    贪食蛇小游戏开发设计基础教程
  • 成为优秀的Cocos2D程序员需要的十个品质
    编程学习网:相信各位同学都在为了成为优秀的Cocos2D程序员而奋斗着,那么一个优秀的Cocos2D程序员需要具备什么品质呢?本篇教程为你揭秘成为一个优秀的Cocos2D程序员所需要的十个品质。
    成为优秀的Cocos2D程序员需要的十个品质
  • Unity3d脚本基础
    最好用游戏引擎开发游戏,推荐Unity3D引擎,该引擎学习更简单,更易上手。游戏引擎可以编辑你的游戏场景、角色和游戏需要的东西。还有,学习编写脚本。编写脚本实际上就是编程。例如,你要在游戏中按键盘方向键来控制角色行走,这必须通过编写脚本。因此,脚本是游戏的逻辑。小编推荐你去学C编程,Unity3D通常是用C语言编写的。
    Unity3d脚本基础
  • 实例教程解析制作flash小游戏
    编程学习网:flash小游戏在游戏开发中是属于比较简单的类型,本例为FlashAS3.0实例教程,介绍射击类游戏的制作,主要分游戏界面的制作和类的编写两部分,从简单的开始做起,跟着教程动手做做看吧。
    实例教程解析制作flash小游戏

目录