贪吃蛇MFC的VC编辑毕业设计论文

上传人:夏** 文档编号:467744788 上传时间:2023-07-25 格式:DOC 页数:14 大小:158KB
返回 下载 相关 举报
贪吃蛇MFC的VC编辑毕业设计论文_第1页
第1页 / 共14页
贪吃蛇MFC的VC编辑毕业设计论文_第2页
第2页 / 共14页
贪吃蛇MFC的VC编辑毕业设计论文_第3页
第3页 / 共14页
贪吃蛇MFC的VC编辑毕业设计论文_第4页
第4页 / 共14页
贪吃蛇MFC的VC编辑毕业设计论文_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《贪吃蛇MFC的VC编辑毕业设计论文》由会员分享,可在线阅读,更多相关《贪吃蛇MFC的VC编辑毕业设计论文(14页珍藏版)》请在金锄头文库上搜索。

1、目录第1章 需求分析2第2章 游戏设计32.1 游戏介绍32.2 游戏结构32.2.1控制面板结构52.2.2贪吃蛇行动指令系统逻辑流程设计5第3章 游戏详细设计与实现103.1.定义蛇和食物3.2蛇形和食物绘制3.3.开始游戏 暂停游戏 继续游戏 退出游戏3.4.初始化界面3.5.蛇在行走的运动,蛇头方向,吃食物判定,蛇身变长,游戏结束等判定第4章 编码与调试22第5章 系统使用手册23第6章 总结23第1章 需求分析贪吃蛇是一款老少皆宜的益智类竞技游戏,操作简单广受大众喜爱,因程序简易模式多样支持多平台而被我们选为本次课设题目,我们将基于MFC的VC+编辑。第2章 游戏设计2.1 游戏介绍

2、本游戏讲述了一只可怜的像素蛇snake,被两个可怕的猥琐怪蜀黍囚禁在一个凄凉的幽闭空间中不停追逐像素果子的故事。在幽闭空间中每当snake碰撞到像素果子时就会伸长而且移动速度会随之变快,当snake碰触到自己身体或四壁时game over。1. 控制面板功能(1)开始游戏;(2)暂停游戏;(3)继续游戏;(4)退出游戏;2. 游戏功能(1)snake初始位置,初始移动;(2)方向移动snake;(3)果子随机出现;(4)snake吃掉像素果子后伸长;(5)果子再生;(6)snake碰撞四壁以及身体后死亡;2.2 游戏结构整个软件根据游戏需求分析,可得出系统控制面板结构图和snake程序整体调用

3、关系流程图。2.2.1 控制面板结构有操作需制作控制板结构来控制游戏控制面板结构图如下所示控制面板退出游戏继续游戏暂停游戏开始游戏图2.1 控制面板结构图2.2.2 贪吃蛇行动指令系统逻辑流程设计分析贪吃蛇游戏功能以及操作后得出贪吃蛇行动逻辑方案,按照方案编写程序函数以及构造程序逻辑流程图主要运行函数以及逻辑流程图如下:void CSNAKEView:OnDraw(CDC* pDC)绘制蛇与食物void CSNAKEView:OnContinue()继续菜单void CSNAKEView:OnExit() 退出菜单void CSNAKEView:OnStart() 开始菜单void CSNAK

4、EView:OnStop() 暂停菜单void CSNAKEView:OnInitialUpdate()初始界面void CSNAKEView:OnTimer(UINT nIDEvent) 蛇身行动判定表2.2 主要函数表 图2.3 贪吃蛇行动逻辑流程图第3章 游戏细设计与实现我们将游戏的制作重点放在实现snake的各种行动指令以及实现snake的伸长和果实的随机出现3.1游戏运行中的设计与实现1.定义蛇和食物开始定义游戏中的蛇与食物两个单位struct Snake int x,y; int len; int direct;Snake50;struct Food int x; int y; i

5、nt isfood;Food;2蛇形和食物绘制void CSNAKEView:OnDraw(CDC* pDC)CSNAKEDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here CBrush backBrush(RGB(100,100,0); CBrush* pOldBrush = pDC-SelectObject(&backBrush); CRect rect; pDC-GetClipBox(&rect); pDC-PatBlt(rect.left, rect.top, r

6、ect.Width(), rect.Height(),PATCOPY); pDC-SelectObject(pOldBrush); 3.开始游戏 暂停游戏 继续游戏 退出游戏游戏中的各菜单功能的设计与实现(1)Continue菜单void CSNAKEView:OnContinue() / TODO: Add your command handler code hereSetTimer(1,10,NULL);(2)Exit菜单void CSNAKEView:OnExit() / TODO: Add your command handler code hereAfxMessageBox(退出游戏

7、.);(3)Start菜单void CSNAKEView:OnStart() / TODO: Add your command handler code hereSetTimer(1,3000,NULL);AfxMessageBox(3秒后开始游戏!);OnInitialUpdate();(4)Stop菜单void CSNAKEView:OnStop() / TODO: Add your command handler code here KillTimer(1); AfxMessageBox(暂停游戏.);4.初始化界面void CSNAKEView:OnInitialUpdate() CV

8、iew:OnInitialUpdate(); Snake0.x=10; Snake0.y=10; Snake1.x=11; Snake1.y=10; Snake2.x=12; Snake2.y=10; Snake0.direct=3; Snake0.len=3; Food.isfood=1;/ TODO: Add your specialized code here and/or call the base class5.蛇在行走的运动,蛇头方向,吃食物判定,蛇身变长,游戏结束等判定我们将蛇的一系列运动写在一个函数中,此函数用来实现蛇的各种行动以及各种判定void CSNAKEView:OnT

9、imer(UINT nIDEvent) / TODO: Add your message handler code here and/or call default CDC *pDC=GetDC(); CString soure; if(Snake0.len=2)SetTimer(1,370,NULL); if(Snake0.len=3)SetTimer(1,270,NULL); if(Snake0.len=6)SetTimer(1,200,NULL); if(Snake0.len=9)SetTimer(1,100,NULL); soure.Format(得分:%d!,(Snake0.len-

10、3)*10); /撞界判断 if(Snake0.x*20=37|Snake0.y*20=462|Snake0.y*20=462) KillTimer(1); AfxMessageBox(soure); / s=0; /蛇身相撞判断 if(Snake0.len3) for(int sn=Snake0.len-1;sn0;sn-) if(Snake0.x*20=Snakesn.x*20&Snake0.y*20=Snakesn.y*20) KillTimer(1); AfxMessageBox(soure); / s=0; / pDC-SelectStockObject(WHITE_PEN); pD

11、C-Rectangle(SnakeSnake0.len-1.x*20,SnakeSnake0.len-1.y*20,(SnakeSnake0.len-1.x+1)*20,(SnakeSnake0.len-1.y+1)*20); for(int i=Snake0.len-1;i0;i-) Snakei.x=Snakei-1.x; Snakei.y=Snakei-1.y; /行走方向判断 if(Snake0.direct=1)Snake0.y-; if(Snake0.direct=2)Snake0.y+; if(Snake0.direct=3)Snake0.x-; if(Snake0.direct

12、=4)Snake0.x+; pDC-SelectStockObject(BLACK_PEN); CBrush DrawBrush=(RGB(100,100,100); CBrush *Drawbrush=pDC-SelectObject(&DrawBrush); pDC-Rectangle(Snake0.x*20,Snake0.y*20,(Snake0.x+1)*20,(Snake0.y+1)*20); pDC-SelectObject(DrawBrush); /判断吃豆的条件,撞到就吃 if(Snake0.x*20=Food.x*20&Snake0.y*20=Food.y*20) Snake

13、0.len+; Food.isfood=1; SnakeSnake0.len-1.x=SnakeSnake0.len-2.x; SnakeSnake0.len-1.y=SnakeSnake0.len-2.y; /如果食物被吃了 就生成 if(Food.isfood=1) srand(unsigned)time(NULL); do for(int isfo=Snake0.len-1;isfo=0;isfo-) if(Snake0.x*20=Snakeisfo.x*20&Snake0.y*20=Snakeisfo.y*20) Food.x=rand()%25; Food.y=rand()%25; while(Food.x*2070|Food.y*20430|Food.y*20430

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号