欢迎来到天天文库
浏览记录
ID:62465092
大小:175.07 KB
页数:25页
时间:2021-05-08
《[精选]vc可视化课程设计mfc贪吃蛇--资料(20210125125148).docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程名称可视化编程(VC)学院计算机科学与技术学院专业软件工程专业班级姓名指导教师2012——2013学年第2学期目录1、课程设计要求22、系统功能实现与操作23、系统设计概述23.1添加结构体说明23.2模块说明33.3主要功能函数代码及注释34、调试过程114.1添加功能说明114.2错误及解决方案115、程序运行结果12附:主要类Cview的成员函数代码151、课程设计要求题目:基于MFC的贪吃蛇游戏设计与实现。要求:1.游戏界面设计2.食物的初始化3.游戏开始以及具体实现2、系统功能实现与操作本系统运用API函数的相关功能进行界
2、面设计和功能实现。通过Rectangle()函数绘制操作区域及障碍物。通过连续的小矩形实现蛇身的绘制。通过srand0函数和rand()函数生成随机数,完成生成食物功能的实现。综合运用多种if条件判断和for循环的嵌套使用的算法完成各种条件判断。该系统功能简单,操作简易。打开程序后,点击菜单栏的游戏按钮,点击开始游戏,系统弹出对话框,提示还有3秒开始。游戏开始后,贪吃蛇开始移动,通过操作键盘上的上下左右方向键控制蛇的移动,躲避障碍物并吃掉食物。当吃掉的食物累计到达一定数量后,蛇行速度加快。直至撞到边界或障碍物或撞到自身,游戏结束。此时弹
3、出对话框,提示所得分数。游戏中途可通过暂停和继续按钮执行相应操作。3、系统设计概述3.1添加结构体说明structSnake{intx,y;intlen;intdirect;}Snake[50];structFood{intx;inty;intfood;}Food;Snake结构体数组用于存放贪吃蛇的相关数据,其中x,y存放当前节点矩形左上角的坐标,(Snake[0]为蛇头),len存放当前蛇身的长度,direct存放蛇的行进方向,可在1~4取值。Food结构体用于存放食物的位置信息。其中x,y存放食物小矩形左上角左标,food存放食物
4、存在的布尔判断值。3.2模块说明系统代码部分主要分为三个模块,界面控制模块、初始化模块和功能模块。界面控制模块包括函数:OnStart(),OnPause()OnContinue(),OnExit()初始化模块包括函数:OnlnitialUpdate(),OnDraw(),oninit()功能模块包括函数:OnKeyDown(),OnTimer()3.3主要功能函数代码及注释①OnStart()voidCSnakeView::OnStart(){//TODO:AddyourcommandhandlercodehereSetTimer(1
5、,3000,NULL);AfxMessageBox("还有3秒开始~~!");}点击开始游戏触发,设置定时器控制三秒后开始游戏。②OnPause()voidCSnakeView::OnPause(){//TODO:AddyourcommandhandlercodehereKillTimer(1);AfxMessageBox("不要让人家等太久");}关闭定时器,暂停游戏③OnContinue()voidCSnakeView::OnContinue(){//TODO:AddyourcommandhandlercodehereSetTime
6、r(1,10,NULL);}重启定时器,恢复游戏④OnExit()voidCSnakeView::OnExit(){//TODO:AddyourcommandhandlercodehereAfxMessageBox("欢迎下次再来!");exit(0);}弹出对话框提示退出。①OnlnitialUpdate()voidCSnakeView::OnlnitialUpdate(){CView::OnlnitialUpdate();//TODO:Addyourspecializedcodehereand/orcallthebaseclassS
7、nake[0].x=10;Snake[0].y=10;Snake[1].x=10;Snake[1].y=10;Snake[2].x=10;Snake[2].y=10;Snake[0].direct=2;Snake[0].len=3;Food.food=1;〃初始化蛇的长度和位置}用这个函数进行蛇的初始化工作。初始化贪吃蛇起初有3个节点,长度为3,起始坐标存入数组,食物为1无0有。②OnDraw()voidCSnakeView::OnDraw(CDC*pDC){CSnakeDoc*pDoc=GetDocument();ASSERT_VAL
8、ID(pDoc);//TODO:adddrawcodefornativedatahereCBrushbackBrush(RGB(111,111,111));CBrush*pOldBrush=pDC->Sel
此文档下载收益归作者所有