贪吃蛇C++设计报告

合集下载

c语言贪吃蛇课程设计报告

c语言贪吃蛇课程设计报告

C语言贪吃蛇课程设计报告摘要本报告介绍了一个基于C语言的贪吃蛇游戏的课程设计项目。

报告首先介绍了贪吃蛇游戏的背景和目标,然后详细说明了设计和实现过程中使用的数据结构、算法和关键技术。

最后,报告讨论了项目的测试结果和改进思路。

1. 引言贪吃蛇是一款经典的电子游戏,它的目标是控制一条蛇在有限空间内移动,吃掉食物并尽可能长大。

贪吃蛇游戏不仅有趣,而且对于初学者来说是一个很好的训练编程技巧的项目。

因此,在本课程设计中选择了贪吃蛇游戏作为项目的主题。

2. 设计目标本课程设计项目的主要目标是设计并实现一个使用C语言开发的贪吃蛇游戏。

具体目标包括: - 实现一个可用键盘控制的贪吃蛇游戏界面; - 设计合适的数据结构来表示贪吃蛇的状态; - 实现贪吃蛇的移动、吃食物、增长等基本功能; - 设计和实现合适的算法来检测和处理蛇与边界、蛇与自身以及蛇与食物的碰撞。

3. 设计与实现为了实现贪吃蛇游戏,我们使用了C语言作为开发语言,并采用了以下关键技术和数据结构:3.1 数据结构为了表示贪吃蛇的状态,我们设计了以下数据结构: - Point结构体用于表示二维坐标点,包括x和y坐标; - SnakeNode结构体用于表示贪吃蛇的每个节点,包括一个Point和指向下一个节点的指针; - Snake结构体用于表示整条贪吃蛇,包括一个指向头节点的指针和当前蛇的长度。

3.2 算法和关键技术为了实现贪吃蛇的移动、吃食物、碰撞等功能,我们采用了以下算法和关键技术: - 使用循环链表数据结构来表示贪吃蛇,使得贪吃蛇的移动和增长操作更高效;- 使用键盘输入来控制贪吃蛇的移动方向; - 使用随机数生成食物的位置; - 使用递归算法检测贪吃蛇与边界、自身以及食物之间的碰撞。

4. 测试与结果分析为了测试贪吃蛇游戏的功能和性能,我们设计了多个测试用例并进行了测试。

测试的结果表明我们的游戏实现了预期的功能,并且在性能方面表现良好。

然而,我们也发现了一些问题和改进的空间: - 贪吃蛇的移动速度过快,导致游戏难度较高; - 游戏界面设计简单,缺乏可玩性。

C语言课程设计报告(贪吃蛇)

C语言课程设计报告(贪吃蛇)

C语言课程设计报告(项目:贪吃蛇)学号:姓名:课程设计题目:贪吃蛇游戏专业班级:核工程与核技术4班报告人姓名:学号:同组组长:同组其他成员:课程教师:实验地点:95101实验室完成起止日期:2011年3月7日至2011年3 月15日一、课程设计概述(目的、任务、开发环境、参考资料)课程目的:1.熟悉二维数组的应用2.图形库文件中图形函数的使用3.通过游戏程序增加编程兴趣,提高编程水平课程任务:1.数组元素为结构体的数组应用2.全局变量应用3.按键处理4.数组元素与蛇食物对应关系5.图形方式开发环境:turbo C参考资料:《C语言课程设计案例精编》郭翠英等编著中国水利水电出版社二、项目的可行性研究项目流程图三、项目设计的基本原理和采用的主要方法与技术1.项目流程图2.graphics.h库函数中的矩形函数rectangle()等图形函数的应用3.二维数组的应用4.按键控制5.全局变量四、本人实现项目的过程与步骤1.画出项目流程图(如上图)2.写出主函数的整个运行过程3.整理函数运行过程中所需要的函数及定义如:(1).矩形图形函数rectangle()(2).定义蛇和实物的二维数组结构体struct Snake{int x[N]; int y[N]; int node; int direction;int life;}snake;(3).按键定义#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b4.定义各函数,分配功能void Init(void);图形驱动void Close(void);图形结束void DrawK(void);开始画面void GameOver(void);游戏结束void GamePlay(void);游戏过程void PrScore(void);输出成绩5.各函数的编辑开始画面函数(画围墙)游戏过程函数(蛇移动的算法蛇吃食物的算法按键算法等)游戏结束及成绩输出函数6.定义与各函数的整合嵌入7.编译调试8.对程序的扩展功能的调整9.完成实验报告五、个人遇到的困难与获得的主要成果(一)遇到的主要主要困难1.程序结构的理解由于长时间对C语言与数据结构没有接触,使我们对这些有一些相对陌生,主要是二维数组的引用以及循环的控制方面,如:(1) for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}(2)for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/ {if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]) {GameOver();/*显示失败*/snake.life=1;break;}}2.graphics.h图形库函数的陌生第一次接触graphics.h库函数,对其一无所知通过查阅资料找到graphics.h库函数中几个关键函数的功能及用法。

c贪吃蛇课程设计

c贪吃蛇课程设计

c 贪吃蛇课程设计一、课程目标知识目标:1. 学生能够理解“贪吃蛇”游戏的编程原理,掌握相关的编程知识和技能。

2. 学生能够运用所学的编程语言,独立编写出具有基本功能的“贪吃蛇”游戏。

3. 学生了解游戏设计的基本流程,掌握游戏设计中常用的数据结构和算法。

技能目标:1. 学生通过编写“贪吃蛇”游戏,提高逻辑思维和问题解决能力。

2. 学生能够运用编程技巧,优化游戏性能,使游戏更加流畅。

3. 学生掌握调试程序的方法,能够独立解决编程过程中遇到的问题。

情感态度价值观目标:1. 学生对编程产生兴趣,培养主动学习和探究的精神。

2. 学生在团队协作中,学会沟通、分享和合作,增强团队意识。

3. 学生通过游戏设计,培养创新意识和审美观念。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术学科,以实践操作为主,理论联系实际。

2. 学生特点:五年级学生对新鲜事物充满好奇,具备一定的逻辑思维能力和动手能力,但注意力容易分散,需要激发学习兴趣。

3. 教学要求:注重理论与实践相结合,以学生为主体,教师为主导,鼓励学生动手实践,培养创新精神和团队协作能力。

二、教学内容1. 理论知识:- 编程语言基础:变量、数据类型、运算符、条件语句、循环语句等。

- 游戏设计基本原理:游戏循环、用户输入、游戏状态更新、画面渲染等。

- 数据结构:数组、链表等。

- 算法:移动、转向算法,食物随机生成算法等。

2. 实践操作:- 使用编程软件进行“贪吃蛇”游戏编写,实现基本功能:如蛇的移动、吃到食物后身体增长、撞墙或撞到自己时游戏结束等。

- 游戏性能优化:提高游戏运行速度,优化用户体验。

- 界面设计:学习使用绘图函数,设计美观的游戏界面。

3. 教学大纲:- 第一课时:导入“贪吃蛇”游戏,介绍编程语言基础,让学生了解游戏设计的基本原理。

- 第二课时:学习数据结构及算法,编写游戏核心功能。

- 第三课时:实践操作,编写并优化“贪吃蛇”游戏,进行界面设计。

贪吃蛇的实训报告

贪吃蛇的实训报告

一、实训目的本次实训旨在通过设计并实现贪吃蛇游戏,巩固和加深学生对C语言程序设计的基本知识,提高学生的编程能力和实际动手操作能力。

通过实训,使学生能够熟练掌握C语言编程技巧,理解程序设计的基本思想和流程,同时培养学生的团队协作和问题解决能力。

二、实训内容1. 游戏规则贪吃蛇是一款经典的电脑游戏,玩家通过键盘控制蛇在游戏区域中移动,吃掉随机出现的食物。

蛇在吃掉食物后,长度会增加,得分增加。

如果蛇头撞到墙壁或自己的身体,游戏结束。

2. 游戏界面游戏界面由一个矩形区域组成,代表游戏区域。

蛇用一系列方块表示,食物用不同的颜色表示。

游戏开始时,蛇的长度为3,随机生成食物。

游戏过程中,蛇会根据玩家的输入移动。

3. 游戏逻辑(1)初始化:设置游戏区域大小、蛇的初始位置和方向、食物的初始位置等。

(2)游戏循环:不断检测玩家输入,更新蛇的位置,判断蛇是否吃到食物、撞到墙壁或自己的身体。

(3)游戏结束:当蛇撞到墙壁或自己的身体时,游戏结束。

4. 程序设计(1)数据结构:定义蛇、食物和游戏区域的数据结构。

(2)函数设计:设计初始化函数、移动函数、判断是否吃到食物函数、判断是否撞到墙壁或自己的身体函数等。

(3)主函数:调用相关函数,实现游戏循环。

三、实训过程1. 设计阶段首先,根据游戏规则和界面设计,确定游戏的数据结构和函数。

然后,编写程序代码,实现游戏的基本功能。

2. 编码阶段根据设计阶段的设计,使用C语言编写程序代码。

在编写过程中,注意代码的可读性和可维护性。

3. 调试阶段在编写代码过程中,不断调试程序,修复出现的错误。

调试过程中,注意观察程序运行情况,分析问题原因,并找出解决方案。

4. 测试阶段完成程序编写后,进行测试,确保程序能够正常运行。

测试过程中,注意观察游戏效果,确保游戏规则和界面设计符合预期。

四、实训成果通过本次实训,成功设计并实现了贪吃蛇游戏。

游戏运行稳定,功能完整,达到了实训目的。

五、实训心得1. 理解程序设计的基本思想和流程,掌握C语言编程技巧。

c贪吃蛇课程设计

c贪吃蛇课程设计

c 贪吃蛇课程设计一、课程目标知识目标:1. 让学生掌握贪吃蛇游戏的规则及基本编程逻辑。

2. 学习运用方向键控制蛇的移动,理解坐标概念。

3. 理解并运用循环、条件语句等编程结构。

技能目标:1. 培养学生运用编程解决问题的能力,提高逻辑思维。

2. 培养学生团队协作能力,通过小组讨论、合作完成游戏设计。

3. 提高学生的创新意识,鼓励对游戏进行改进和优化。

情感态度价值观目标:1. 培养学生积极的学习态度,对编程产生兴趣。

2. 培养学生的耐心和细心,面对编程过程中的困难能够持续调试和优化。

3. 培养学生遵守游戏规则,树立公平竞争的价值观。

课程性质:本课程为信息技术课程,结合实际操作,培养学生编程兴趣和能力。

学生特点:六年级学生,具备一定的信息技术基础,好奇心强,喜欢动手实践。

教学要求:注重理论与实践相结合,关注学生个体差异,鼓励学生积极参与,充分调动学生的主观能动性。

通过课程学习,使学生达到预定的学习成果,为后续学习打下坚实基础。

根据课程目标,教学内容主要包括以下几部分:1. 游戏规则介绍:讲解贪吃蛇游戏的基本规则,引导学生了解游戏设计的基本概念。

- 教材章节:第一章 游戏设计基础2. 编程逻辑:学习运用Python编程语言,掌握贪吃蛇游戏的编程逻辑。

- 教材章节:第二章 Python基础、第三章 控制结构3. 坐标系统与移动控制:理解坐标概念,运用方向键控制蛇的移动。

- 教材章节:第四章 图形与动画4. 游戏编程实践:分组进行贪吃蛇游戏的编程实践,巩固所学知识。

- 教材章节:第五章 游戏编程实例5. 游戏优化与拓展:鼓励学生对游戏进行优化和拓展,提高游戏的趣味性和挑战性。

- 教材章节:第六章 游戏优化与拓展教学进度安排:1. 第一周:介绍游戏规则,学习Python基础。

2. 第二周:学习控制结构,理解坐标系统。

3. 第三周:学习图形与动画,编写贪吃蛇移动控制代码。

4. 第四周:分组进行游戏编程实践,进行作品展示。

C语言课程设计报告——贪吃蛇源程序

C语言课程设计报告——贪吃蛇源程序

C 语言课程设计(小游戏贪吃蛇得程序设计报告)设计人:班级:201年月号目录一:概述1:研究背景及意义2:设计得任务与需要知识点3:具体完成设计内容二:需求分析1:功能需求2:操作方法三:总体设计1:模块划分2:数据结构设计四:详细设计1:主空摸块设计2:绘制游戏界面3:游戏得具体过程4:游戏得结束处理5:显示排行榜信息模块五:程序得调试与测试1:动画与音乐同步2:蛇得运行3:终止程序六:结论七::结束语八:程序清单九:参考文献一. 概述本课程设计以软件工程方法为指导,采用了结构化,模块化得程序设计方法,以C语言技术为基础,使用TurboC++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统得实现与测试。

1、1 研究得背景及意义随着社会得发展,人们生活得节奏日益加快,越来越多得人加入了全球化得世界。

人们不再拘泥与一小块天地,加班,出差成了现代人不可避免得公务。

而此时一款可以随时随地娱乐得游戏成为了人们得需要。

此次课程设计完成得贪吃蛇小游戏,正就是为了满足上述需求而设计出来得。

贪吃蛇游戏虽小,却设计诸多得知识点。

通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程得与那个发,技术与工具开发软件得过程,进一步掌握结构化,模块化得程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构得使用方法,掌握图形,声音,随机数等多种库函数得使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程得学习与将来实际软件开发打下坚实得基础。

1、2设计得任务与需要得知识点1、2、1 课程设计主要完成得任务1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计得思想,培养解决实际问题得能力。

2)有同步播放动画,声音效果。

3)设计好数组元素与蛇,食物得对应关系。

c贪吃蛇游戏课程设计

c贪吃蛇游戏课程设计

c 贪吃蛇游戏课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言的基本语法和编程逻辑。

2. 学生能运用C语言编写简单的贪吃蛇游戏,包括游戏界面显示、蛇的移动、食物的生成和得分功能。

3. 学生了解并掌握结构体、数组、函数等C语言核心概念在游戏编程中的应用。

技能目标:1. 学生通过编写贪吃蛇游戏,提高逻辑思维和问题解决能力。

2. 学生能够运用C语言进行程序设计和调试,培养编程实践能力。

3. 学生能够自主查找并利用相关资料,提高信息检索和自主学习能力。

情感态度价值观目标:1. 学生在编程过程中,培养耐心和细心的品质,增强面对困难的勇气和毅力。

2. 学生通过团队协作,培养沟通和合作意识,提高团队协作能力。

3. 学生在完成游戏项目的过程中,激发对编程和计算机科学的兴趣,树立学习信心。

课程性质:本课程为C语言编程实践课,以贪吃蛇游戏为载体,让学生在实际编程过程中掌握C语言的基本知识和技能。

学生特点:学生处于初中阶段,对计算机编程有一定的好奇心,但编程基础薄弱,需要通过具体实例来激发学习兴趣。

教学要求:教师需关注学生的个体差异,提供个性化的指导,帮助学生掌握C 语言编程技能,并注重培养学生的学习兴趣和情感态度。

在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。

二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、控制结构(循环和条件语句)。

2. 函数:介绍函数定义、调用、参数传递和返回值,强调模块化编程的重要性。

3. 结构体:讲解结构体的定义和使用,以及如何用结构体表示贪吃蛇和食物。

4. 数组:介绍数组的概念和应用,特别是在贪吃蛇游戏中存储和操作蛇的移动。

5. 图形显示:利用C语言图形库(如curses或SDL)实现贪吃蛇游戏的图形界面。

6. 游戏逻辑:编写蛇的移动、食物的随机生成、吃到食物后的身体增长和得分逻辑。

7. 键盘输入:处理玩家的键盘输入,实现蛇的方向控制。

8. 游戏循环:构建游戏循环,使游戏能够在用户输入下不断运行和更新状态。

c贪吃蛇课程设计

c贪吃蛇课程设计

c 贪吃蛇 课程设计一、课程目标知识目标:1. 学生能理解并掌握贪吃蛇游戏的基本规则和编程原理。

2. 学生能够运用所学的编程知识,独立设计并编写简单的贪吃蛇游戏。

3. 学生能够理解坐标系在贪吃蛇游戏中的应用,并运用坐标进行游戏元素的定位。

技能目标:1. 学生能够运用编程语言(如Python)实现贪吃蛇游戏的基本功能,包括蛇的移动、食物的生成和得分统计。

2. 学生能够通过调试程序,解决贪吃蛇游戏中可能遇到的问题,提高问题解决能力。

3. 学生能够通过团队合作,共同完成一个完整的贪吃蛇游戏项目,提升团队协作能力。

情感态度价值观目标:1. 学生通过学习贪吃蛇游戏编程,培养对计算机编程的兴趣和热情,增强学习动力。

2. 学生在游戏设计和编程过程中,培养创新思维和动手能力,提高自信心。

3. 学生在团队合作中,学会相互尊重、沟通协作,培养良好的团队精神和人际交往能力。

课程性质:本课程为信息技术学科的教学内容,结合编程知识与实际操作,培养学生编程思维和动手能力。

学生特点:五年级学生对新鲜事物充满好奇,具备一定的逻辑思维能力和动手操作能力,但编程基础薄弱,需要通过实践操作逐步提高。

教学要求:结合学生特点,课程设计注重实践操作,以学生为主体,激发学生学习兴趣,培养编程思维和团队协作能力。

通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高问题解决能力和创新能力。

二、教学内容1. 引言:介绍贪吃蛇游戏的起源和发展,引发学生对编程游戏的兴趣。

- 游戏历史简介- 游戏在信息技术领域的重要性2. 编程基础:- Python编程语言简介- 编程环境搭建(如:安装Python解释器和IDE)- 基本语法和逻辑结构(变量、循环、条件判断等)3. 贪吃蛇游戏原理:- 游戏规则及玩法介绍- 坐标系的应用- 蛇的移动逻辑- 食物的生成与得分机制4. 编程实践:- 设计并编写贪吃蛇游戏的基本框架- 实现蛇的移动、食物的生成和得分统计功能- 调试程序,优化游戏体验5. 进阶拓展:- 添加游戏音效和动画效果- 设计不同难度级别的游戏- 探讨贪吃蛇游戏的其他玩法和变种6. 团队项目:- 学生分组,进行团队协作- 每组设计并完成一个具有创意的贪吃蛇游戏- 分享项目成果,互相学习和评价教学进度安排:- 引言:1课时- 编程基础:4课时- 贪吃蛇游戏原理:2课时- 编程实践:4课时- 进阶拓展:2课时- 团队项目:4课时教学内容与课本关联性:本教学内容以课本中编程基础知识和实践操作为依据,结合贪吃蛇游戏案例,使学生能够将理论知识应用于实际项目中,提高编程能力和创新能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Snake[2].y=10;
Snake[0].direct=3;
Snake[0].len=3;
Food.isfood=1;
// TODO: Add your specialized code here and/or call the base class
}
代码说明:
初始化贪吃蛇起初有3个节点,长度为3,起始坐标;
AfxMessageBox("退出游戏...");
exit 0;
}
void CSNAKEView::OnContinue()
{
// TODO: Add your command handler code here
SetTimer(1,10,NULL);
}
Step 6对OnDraw()的添加代码
OnDraw()函数众所周知视图类中的输出.视图类的输出基本上都是在视图类的OnDraw函数中处理的,系统会准备好入参,然后调用OnDraw函数
4 数组
5游戏图形的实现用CDC类实现。
关键字:CViewShake MFC 函数
1.贪吃蛇开发设计思想
1 定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇的行走方向。食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。
2 用数组初始化长度为3的贪吃蛇,并且默认食物未出现
所以我们要用这个函数来进行贪吃蛇的初始化工作。
再者还要添加一个成员函数oninit()进行贪吃蛇外观的初始化
控件的设计
再者是设计游戏的一些控件来控制“游戏开始”“游戏结束”和“游戏暂停”。
我们可以点击“工作空间”的“ResourceView”进行控件的具体设计,这里我们在Menu文件夹中把“IDR_MAINFRAME”中默认的控件全部删除
case VK_RIGHT:if(Snake[0].direct!=3)Snake[0].direct=4;break; }
CView::OnKeyDown(nChaΒιβλιοθήκη , nRepCnt, nFlags);
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
代码说明:
{
int x;
int y;
int isfood;
}Food;
再者
void CSNAKEView::OnInitialUpdate()
{
CView::OnInitialUpdate();
Snake[0].x=10;
Snake[0].y=10;
Snake[1].x=11;
Snake[1].y=10;
Snake[2].x=12;
Step 3对OnRButtonDown()具体添加代码
void CSNAKEView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// TODO: Add your message handler code here and/or call default
{
// TODO: Add your command handler code here
KillTimer(1);
AfxMessageBox("暂停游戏...");
}
void CSNAKEView::OnExit()
{
// TODO: Add your command handler code here
Snake[0]代表的是蛇头,我们对蛇头的方向Snake[0].direct进行判断。
case VK_UP:if(Snake[0].direct!=2)Snake[0].direct=1;break;
意思就是当Snake[0].direct的方向此时并不等于“下”的时候,才能做出“上”的操作动作,否则则忽略用户“向上”的操作按键效果
if(Snake[0].len==9)SetTimer(1,100,NULL);
soure.Format("得分:%d!",(Snake[0].len-3)*10);
//撞界判断
if(Snake[0].x*20<=37||Snake[0].y*20<=37||Snake[0].x*20>=462||Snake[0].y*20>=462)
OnInitialUpdate()的功能如下:
视图窗口完全建立后第一个被框架调用的函数。框架在第一次调用OnDraw前会调用OnInitialUpdate,因此OnInitialUpdate是设置滚动视图的逻辑尺寸和映射模式的最合适的地方。
时间上,两者先后顺序不同,构造函数生成本类的对象,但没有产生窗口,OnCreate后窗口产生,然后才是视图的OnInitialUpDate,一般在这里对视图的显示做初始化。简单点,就是ONCREATE只是产生VIEW的基本结构和变量而在OnInitialUpDate()中,主要初始化视图中控件等。对各个变量进行初始化操作
{
KillTimer(1);
AfxMessageBox(soure);
// s=0;
}
//蛇身相撞判断
if(Snake[0].len>3)
for(int sn=Snake[0].len-1;sn>0;sn--)
{
if(Snake[0].x*20==Snake[sn].x*20&&Snake[0].y*20==Snake[sn].y*20)
pDC->SelectObject(pOldBrush);
pDC->Rectangle(19,19,501,501);
oninit();
}
Step 7对OnTime()的添加代码
void CSNAKEView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect);
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),PATCOPY);
for(int i=0;i<=snake[0].l-1;i++)
pDC->Rectangle(snake[i].x*20,snake[i].y*20,(snake[i].x+1)*20,(snake[i].y+1)*20);
pDC->SelectObject(DrawBrush);
}
代码说明:
利用Windows给我们提供的CDC类来进行画图,我们首先用一个指向CDC类的指针去接受与该窗口相关联的DC句柄,然后用定义画刷一个DrawBrush对象,并且用RGB(100,100,100)来给画刷初始化颜色。并且用SelectObject(&DrawBrush);函数把对象画刷选入到设备描述表中,用for循环依次把贪吃蛇的3个节点画出来。
此处控件的设计是“可见即可得”的控件操作
成功设置ID之后我们分别右键
各项属性进行消息响应处理函数的生成
第二部分
具体实现游戏、
Step 1
首先我们在文件开头处分别定义蛇和食物的全局变量
struct Snake
{
int x,y;
int len;
int direct;
}Snake[50];
struct Food
{
KillTimer(1);
AfxMessageBox(soure);
// s=0;
}
}
///////////////////////////////////////////////////////////////////////////
pDC->SelectStockObject(WHITE_PEN);
中南大学
本科生课程设计(实践)任务书、设计报告
(C++程序设计)
题 目
贪吃蛇
学生姓名
张华强
指导教师
曹岳辉
学 院
土木工程学院
专业班级
土建1221
学生学号
1208122119
计算机基础教学实验中心
2013年7月1日
贪吃蛇
内容:
1CView类中的消息响应
2 控件的消息响应
3 基于CView类内的具体游戏实现
3 在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏
4 具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中还包括根据蛇的长度来进行游戏难度的改变。
5 具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作。
switch(nChar)
{
case VK_UP:if(Snake[0].direct!=2)Snake[0].direct=1;break;
case VK_DOWN:if(Snake[0].direct!=1)Snake[0].direct=2;break;
case VK_LEFT:if(Snake[0].direct!=4)Snake[0].direct=3;break;
相关文档
最新文档