贪吃蛇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课时教学内容与课本关联性:本教学内容以课本中编程基础知识和实践操作为依据,结合贪吃蛇游戏案例,使学生能够将理论知识应用于实际项目中,提高编程能力和创新能力。

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

c语言课程设计贪吃蛇设计
物或蛇身
Part Three
C语言基础知识
数据类型和变量
基本数据类型:int、float、char、double等 复合数据类型:数组、结构体、指针等 变量声明:使用关键字"int"、"float"等声明变量 变量赋值:使用"="为变量赋值 变量作用域:局部变量、全局变量等 变量生命周期:从声明到释放的过程
结构体和联合体:包括结构 体定义、结构体初始化、结 构体访问、联合体定义、联 合体初始化、联合体访问等
函数和数组
函数:C语言中的基本单元,用于实现特定功能
数组:C语言中的基本数据类型,用于存储一组相同类型 的数据
数组函数:如strlen()、strcpy()等,用于操作字符串
指针:C语言中的重要概念,用于指向内存地址
Part Four
贪吃蛇游戏设计
游戏逻辑设计
游戏结束:当蛇碰到边界或 自己时结束
游戏循环:不断更新蛇的位 置和方向
游戏开始:初始化蛇的位置 和方向
得分计算:根据吃到的食物 数量计算得分
游戏难度:根据得分调整游 戏难度,如增加蛇的速度或
改变食物的位置
游戏界面:设计游戏界面, 包括蛇、食物、边界等元素
Part Seven
总结和展望
课程设计收获和体会
掌握了C语言的基本语法和编 程技巧
学会了如何设计并实现一个完 整的游戏项目
提高了解决问题的能力和团队 协作能力
对游戏开发有了更深入的了解 和兴趣
C语言在游戏开发中的应用前景
游戏开发中,C语言具有高效、稳定的特点,适合开发大型游戏。 C语言具有广泛的应用领域,可以开发各种类型的游戏,如动作、冒险、策略等。 C语言具有强大的社区支持,可以找到大量的游戏开发资源和教程。 C语言在游戏开发中具有广泛的应用前景,可以开发出更多优秀的游戏作品。

贪吃蛇游戏C程序设计报告

贪吃蛇游戏C程序设计报告

目录一.设计要求 (2)二.设计的作用、目的 (2)三.课题分析 (2)1.贪吃蛇游戏功能分析 (2)2.游戏界面分析 (3)3.设计思路分析 (3)四.设计的具体实现 (3)1.系统组成模块结构及功能 (3)(1)函数定义 (3)(2)主函数main( ) (4)(3)画界面函数DrawK( ) (5)(4)游戏具体过程函数GamePlay() (6)(5)游戏结束函数GameOver() (9)2.系统程序结构及流程图 (10)3.重要函数介绍 (12)4.程序代码编写及注释 (14)5.软件调试问题分析及解决方法 (20)6.软件运行结果 (20)五.心得体会及建议 (22)六.参考文献 (23)贪吃蛇游戏C程序设计报告一.设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。

(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).深入分析各个小问题,列出大纲,编写各部分程序模块;(3).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(4).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(5).完成课程设计报告,并进行答辩。

二.设计的作用、目的C语言是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学生必修的科目。

作为当代的大学生要很好的利用它,学好一门设计语言,实现学以至用。

制作C程序报告,是为了巩固和加深对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。

通过游戏程序的设计训练和提高学生的基本技能,掌握字符串的表示方法和字符串函数的功能、Turbo C图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。

c 贪吃蛇实验报告

c 贪吃蛇实验报告

C 贪吃蛇实验报告1. 引言贪吃蛇是一款经典的游戏,玩家通过操纵蛇的移动,使其吃到食物并避免碰到自己的身体或墙壁。

本实验旨在通过编写一个贪吃蛇游戏的实现代码,展示基本的编程思路和方法。

2. 实验环境本实验使用Python编程语言进行实现,采用了以下工具和库: - Python 3.9.2 - Pygame 2.0.13. 实验步骤3.1 初始化游戏界面首先,我们需要创建一个窗口来显示游戏界面。

在Pygame中,可以使用pygame.display.set_mode()函数来创建一个窗口。

我们还需要定义一些常量,如窗口的大小、蛇的初始位置和速度等。

3.2 绘制蛇和食物在游戏界面中,蛇和食物是需要绘制出来的。

我们可以使用Pygame提供的绘图函数来实现。

具体步骤如下: 1. 创建一个蛇的列表,表示蛇的身体。

初始时,蛇只有一个方块。

2. 创建一个食物的坐标点,表示食物的位置。

3. 使用pygame.draw.rect()函数绘制蛇和食物的方块。

3.3 控制蛇的移动蛇的移动是通过改变蛇的身体坐标来实现的。

我们需要定义一个变量来表示蛇移动的方向,如上、下、左、右。

通过监听键盘事件,获取玩家的操作,然后改变蛇移动的方向。

3.4 更新蛇的位置蛇的位置需要不断更新,使其向当前移动方向移动一个方块的距离。

当蛇吃到食物时,蛇的身体长度增加一个方块。

具体步骤如下: 1. 根据当前移动方向,更新蛇头的坐标。

2. 将蛇头的坐标添加到蛇的身体列表中。

3. 如果蛇吃到了食物,生成一个新的食物坐标,并将蛇的身体长度增加一个方块。

3.5 判断游戏结束游戏结束的条件有两种情况:蛇碰到自己的身体或者蛇碰到墙壁。

我们需要在每次更新蛇的位置后,判断是否满足游戏结束的条件。

如果满足条件,游戏结束。

3.6 游戏循环完成以上步骤后,我们可以将整个游戏的逻辑放在一个循环中,不断更新蛇的位置、绘制游戏界面,并响应用户的操作。

直到游戏结束为止。

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

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

高级语言程序设计课程设计报告Experiment Designing reporter课程名称:高级语言程序设计英文名称 : C Program Experiment Designing专业:自动化 111学号: XXX姓名: XXX指导教师: XXX日期: 2012 年 6月 17日至 2011 年6 月 20 日山东工商学院信电学院山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“一:课程设计内容程序功能介绍贪吃蛇游戏是一个经典小游戏,深受众多玩家喜爱,其规则是:一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

此游戏不仅能锻炼人的思维敏捷性,而且还可以提高玩家的逻辑判断能力。

设计思路我们小组称设计本次课题——贪吃蛇的思路为“贪快速上手贪吃蛇三步曲”:第一步:寻找到一个真正可以运行的已用C编好的贪吃蛇。

因为我们毕竟从未看到过用C编游戏的程序,让我们两手一抹黑的开始编写是有一定的困难的,如果我们自己找一个已经设计好的程序,以此为跳板实现我们想要达到的效果,那么肯定是高效的。

所以我们组统一决定,去寻找一个可以运行的C编译的贪吃蛇。

第二步:运行游戏并了解游戏程序。

我们认为,只有你运行并了解一个游戏,才能知道游戏里需要什么样的改进和创新,如果你自己本身就没玩过这个游戏,那么你就是再有技术,你也永远改进和改编不了一个游戏,因为你根本不知道你在干什么。

同样重要的是了解游戏程序。

因为只有看懂了程序,才能实现对他的改编,才能游刃有余。

第三步:寻找模块并分类,而后进行改编。

寻找到你想要改变的游戏内容的控制模块,比如,我想要增加一堵墙,那第一页共十六页自动化 111么就应该找到void DrawK(void){setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);for(i=200;i<=500;i+=10)rectangle(i,200,i+10,209);}然后要找到:改变蛇初始长度、颜色、初始位置的模块,改变苹果出现位置的模块,让蛇见墙死的模块,让蛇吃苹果加长的模块……….并且进行分类,这样下次再想实现某个目标时,可以一目了然的进行改编。

C语言程序设计课程设计(论文)-贪吃蛇

C语言程序设计课程设计(论文)-贪吃蛇

C语言程序设计课程设计(论文)-贪吃蛇------------ 大学C语言程序设计课程设计(论文)题目: 贪吃蛇院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:课程设计(报告)任务及评语院(系): 教研室:学号学生姓名专业班级程序设计(报告)贪吃蛇题目程序设计的任务与要求:(1)掌握C语言编程的基础知识。

(2)较熟练地编写C语言应用程序。

(3)了解C语言的常用标准函数、编程技巧、异常处理。

程序(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。

设(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能计)力都有一个很大的提高。

报告(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素) 质的提高起一个积极的推动作用。

任务课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。

正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。

指导教师评语及成绩成绩: 指导教师签字:2011年 1 月 4 日辽宁工业大学 C 语言课程设计说明书(论文)目录第1章 C语言课程设计的实训目的与要求 (1)1.1 C语言课程设计目的 (1)1.2 C语言课程设计的实验环境 (1)1.3 C语言课程设计的预备知识 (1)1.4 C语言课程设计要求 .................................................. 1 第2章 C语言课程设计内容 .. (2)2.1程序功能介绍 (2)2.2程序整体设计说明 (2)2.2.1设计思路 ......................................................22.2.2数据结构设计及用法说明 ........................................32.2.4各模块的功能及程序说明 ........................................72.2.5程序结果 ......................................................82.3程序源代码及注释 (10)第3章 C语言课程设计总结 .................................................. 17 参考资料.. .................................................................20辽宁工业大学 C 语言课程设计说明书(论文)第1章 C语言课程设计的目的与要求 1.1 C语言课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。

C课程设计报告—贪吃蛇

C课程设计报告—贪吃蛇

程序设计基础课程设计贪吃蛇院系:计算机学院网络工程系班级: 12 – 2 班姓名:林扬博指导教师:鲁静轩2012 年 12 月 25 日程序设计基础课程设计任务书一、题目:贪吃蛇二、设计要求(1)XXX负责设计与实现。

(2)查阅相关资料,自学具体课题中涉及到的新知识。

(3)采用结构化、模块化程序设计方法,功能要完善,具有一定的创新。

(4)所设计的程序应有输入、输出。

(5)按要求写出课程设计报告,并于设计结束后1周内提交。

其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件总体设计、详细设计、软件的调试、总结、谢启、附录:带中文注释的程序清单、参考文献。

报告一律用A4纸打印,中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。

总体设计应配合软件总体模块结构图来说明软件应具有的功能。

详细设计应用传统或N-S流程图和屏幕抓图说明,调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。

三、课程设计工作量由于是设计小组团结协作完成设计任务,一般每人的程序量在200行有效程序行左右,不得抄袭。

四、课程设计工作计划2012年12月17日,指导教师讲课,学生根据题目准备资料;2012年12月18日,设计小组进行总体方案设计和任务分工;2012年12月19日~2010年12月21日,每人完成自己承担的程序模块并通过独立编译;2012年12月22日~2010年12月26日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;2012年12月27日,软件发布2012年12月28日,验收、撰写报告;2013年1月5日,交课程设计报告指导教师签章:教研室主任签章程序设计基础课程设计指导教师评语与成绩目录一概述(宋体,三号,加粗,居中) (5)二总体方案设计 (6)三详细设计 (8)四程序的调试与运行结果说明 (15)五课程设计总结 (18)六后记 (18)参考文献 (19)七附录 (20)一概述1.课程设计的目的⑴学生更深入地理解和掌握该课程中的基本概念,程序设计的思想、技术和方法。

程设计报告之贪吃蛇

程设计报告之贪吃蛇

gotoxy() help_info() show_food() judge() drow_snake () drow_wall() snake_auto _move(char temp) snake_move ()
中量 中量 中量
四天 四天 四天
四天 三天 三天
大量
五天
五天
大量 大量
五天 三天
五天 三天
音 乐 音 效
游 戏 说 明
游 戏 进 度
关 于
1.2 遇到困难 背景音乐的制作以及音乐循环,背景图片的添加,坐标定位,控 制蛇身移动。
/
4
1.3 程序流程
根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括: 游戏 开始,随机出现食物;按下 Space 键可以实现暂停功能 。
开始
初始化蛇 Snake
3.随机化食物位置
void show_food()//随机化食物位置 { LinkList p; srand(time(NULL));//初始化随机种子 while(1) { snake.front->x = rand() % (MAX__X-1) + 1; snake.front->y = rand() % (MAX__Y-1) + 1; p = snake.front->next; //防止食物出现在蛇内部 while(p) { if(snake.front->x == p->x && snake.front->y == p->y) break; } else { p = p->next; } } if( !p) { break; } } gotoxy(snake.front->x,snake.front->y); putchar('*');//食物 }

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

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

原创C语言贪吃蛇课程设计报告1. 引言贪吃蛇游戏是一款经典的电子游戏,它可以帮助玩家提高反应能力和思维敏捷性。

本文档旨在介绍一个基于C语言的贪吃蛇课程设计项目。

通过这个项目,我们可以学习C语言的基本语法、算法和程序设计方法。

2. 项目概述2.1 项目背景贪吃蛇游戏是一款非常受欢迎的经典游戏,现在几乎在所有平台都有相应的版本。

它的原理很简单:玩家控制一条蛇在屏幕上移动,蛇吃掉食物后身体长度增加,游戏结束条件为蛇撞到屏幕边缘或自己的身体。

通过这个项目的设计与实现,我们可以提高自己的编程能力,并加深对C语言的理解。

2.2 项目目标本项目的目标是设计并实现一个具有基本功能的贪吃蛇游戏。

主要功能包括:•蛇的移动控制:玩家可以通过键盘控制蛇的移动方向。

•食物的生成:在屏幕上随机生成食物,蛇吃掉食物后身体长度增加。

•碰撞检测:判断蛇是否撞到屏幕边缘或自己的身体,游戏在此情况下结束。

•分数统计:记录玩家的得分,并在游戏结束时显示最终得分。

3. 设计思路3.1 游戏界面设计游戏界面需要在控制台中实现,使用C语言的标准输入输出函数可以很方便地实现界面的绘制和更新。

我们可以使用二维数组来表示屏幕,每个元素代表一个方格,蛇和食物在屏幕上的位置可以通过修改二维数组的值来实现。

3.2 蛇的移动控制蛇的移动控制是游戏的核心功能之一。

我们可以使用一个链表数据结构来表示蛇的身体,每个节点代表一个蛇的身体节。

通过不断更新链表节点的位置,实现蛇的移动。

玩家可以通过键盘输入来控制蛇的移动方向。

3.3 食物的生成食物的生成是游戏的另一个重要功能。

我们可以随机生成一个二维数组的坐标,在该坐标上放置食物。

在蛇吃掉食物后,就可以在链表的末尾添加一个新的节点,使蛇的长度增加。

3.4 碰撞检测碰撞检测是判断蛇是否与屏幕边缘或自身的身体相撞的过程。

我们需要判断蛇的头节点是否与屏幕边缘或其他身体节点的位置重叠,如果重叠则游戏结束。

3.5 分数统计分数统计是记录玩家得分的功能。

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

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

贪吃蛇游戏设计姓名:**学号: ********完成日期:月日一、设计目的贪吃蛇游戏程序功能的实现主要是建立在二维数组和图形界面的应用上,通过编写游戏程序能够熟悉掌握相关数组和图形函数的运用,提高编程水平,增加编程的兴趣二、总体设计主函数↓图形驱动Init 画界面DrawK 游戏具体过程GamePlay 图形结束Close↓游戏结束GameOver 输出成绩PrScore三、详细设计(项目成员及分工、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)①主函数main():定义使用的常数,全局变量及函数原型说明,并调用Init()函数初始化图形系统;然后调用DrawK()函数画界面,调用GamePlay()函数实现游戏的具体过程,游戏结束后调用Close()函数关闭图形系统结束程序。

②画界面函数DrawK():主界面是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,设置成淡青色,背景颜色为黑色。

③游戏具体过程函数GamePlay():算法过程:a.设置初始值。

为防止食物出现在一个位置上,要设置随机数发生器,真正产生随机数。

初始时,蛇只有蛇头,设定一个开始方向;b.循环执行,直到按Esc键退出;c.没有按键的情况下,循环执行。

如果没有食物,随机出现食物;食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的;如果有食物,则显示食物,蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃到了自己,如果出现这两种情况之一,则蛇死;调用游戏结束函数GamePlay(),结束本次游戏;判断蛇吃到食物的方法是蛇头的坐标和食物的坐标都相等;如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。

在新位置画出蛇。

采用的方法是每次移动的时候从最后一节开始到倒数第二节,将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可。

贪吃蛇程序设计报告(附C源码)

贪吃蛇程序设计报告(附C源码)

《计算机程序设计基础》课程设计题目用户管理系统学生姓名王孟学号 0909082920 指导教师郭克华学院信息科学与工程学院专业班级电气类 0829 完成时间 2009-7-1目录1.课程设计内容 (3)2.课程设计目的 (3)3.背景知识(可选项) (3)4.工具/准备工作(可选项) (4)5.设计步骤、方法等 (4)5.1. 步骤1:步骤名称(二级标题) (4)5.1.1. 步骤1.1:步骤名称(三级标题) ............................................ 错误!未定义书签。

5.2. 步骤2:步骤名称 (6)5.3. 步骤n:步骤名称 (8)6.设计结果及分析 (10)7.设计结论 (10)8.问题及心得体会 (10)9.对本设计过程及方法、手段的改进建议 (11)10.参考文献 (12)报告名称1. 课程设计内容产生一个固定大小没有边界的游戏区域,蛇从区域的中心开始,由玩家通过键盘控制蛇的运动方向,用蛇头去吃随机分布在游戏区域内的食物;蛇的运动限制在游戏区域内,游戏区域没有边界,所以蛇在区域内作循环运动;蛇的运动方向为直线运动,只走横和竖的方向,不走斜线;蛇的运动速度由游戏的难度来控制,难度越高,速度越快,游戏难度分为9个等级;蛇身体的长度从1开始每吃掉一份食物就增加一个长度;食物的出现安照随机分布的原则,蛇吃掉一份后随即在游戏区域内放一份新的食物;每吃掉一份食物得分为10*游戏的难度,游戏结束后统计全部的得分;游戏结束的条件为:在控制蛇的过程中蛇头碰到蛇的身体的任何部位;2. 课程设计目的(1)、通过c语言编程实现贪吃蛇游戏的运行。

(2)、对代码进行进一步的调试优化,以使游戏高效运行,操作化强,人性化强。

(3)、通过编程,使自己掌握C语言编程的基本方法,有独立编程的能力,并学到实战经验。

3. 背景知识(可选项)本程序主要是一个交互式的游戏程序,通过玩家的键盘上下左右键控制贪吃蛇的运动方向。

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

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

C语言课程设计报告贪吃蛇专业学生姓名班级学号完成日期一、游戏规则需求1、在打开程序后,出现选择界面,里面包含难度选择,其中难度选择能够使程序出现相应的游戏难度。

2、开始游戏后,W A S D键控制贪吃蛇的移动方向。

3、当贪吃蛇向一个方向移动时,不能立刻向反方向移动。

4、贪吃蛇撞到的自己的身体或者撞到墙时,游戏结束,并输出“GAME OVER!”。

5、贪吃蛇吃到一个食物后,出现白色闪烁一次,身体随之增加一个单位长度。

二、所需数据结构分析1、所需函数模块void begin(); //登陆界面void start(); //鼠标移动事件void init(); // 初始化游戏void setfoodcrd(); // 设置食物要出现的坐标void showfood(); // 在相应的坐标画出食物void snakemove(); // 移动蛇,实际就是改变蛇各节的坐标void judgeslod(); // 判断蛇是否撞墙或者撞到自己void judgesef(); // 判断蛇是否吃到食物了void showsnake(); // 在屏幕上画出蛇void changeskdir(); // 接受用户输入,改变蛇的前进方向void gameover(); // 游戏结束2、蛇及食物数据结构typedef struct // 定义一个结构体表示坐标{int x;int y;}COOR;struct FOOD // 定义结构体,来存储食物的相关信息{COOR crd; // 食物出现的坐标int flag; // 食物的状态,1表示食物还没被吃,0表示食物被吃了}food;struct SNAKE // 定义结构体,来存储蛇的相关信息{COOR crd[SIZEMAX]; // 保存蛇的每个结数的坐标,最多有100节int node; // 保存蛇当前节数DIR dir; // 当前蛇行进的方向}snake;3、游戏流程图三、所需核心算法分析1.主函数void main() //主函数{initgraph(640, 640);loadimage(&img[0], "denglu3.jpg"); //导入图片loadimage(&img[1], "a1.jpg");loadimage(&img[2], "a2.jpg");loadimage(&img[3], "b1.jpg");loadimage(&img[4], "b2.jpg");loadimage(&img[5], "c1.jpg");loadimage(&img[6], "c2.jpg");loadimage(&img[7], "beijing.jpg");begin(); //登陆界面init(); // 初始化游戏while(1){while(!kbhit()){if (!food.flag){setfoodcrd();}showfood();judgeslod();judgesef();snakemove();Sleep(speed);}changeskdir();}}2.图形初始化void init() // 初始化游戏{putimage(0, 0, &img[7]);setbkcolor(RGB(124,107,7));food.flag = 0;snake.crd[0].x = 80+ SNAKELEN;snake.crd[0].y = 155;snake.crd[1].x = 80;snake.crd[1].y = 155;snake.node = 2;snake.dir = right;}3.读入操作信息的处理void snakemove(){int i;for (i=snake.node; i>0; i--){snake.crd[i].x = snake.crd[i-1].x;snake.crd[i].y = snake.crd[i-1].y;}switch (snake.dir){case up:snake.crd[0].y -= SNAKELEN;break;case down:snake.crd[0].y += SNAKELEN;break;case left:snake.crd[0].x -= SNAKELEN;break;case right:snake.crd[0].x += SNAKELEN;} showsnake();}四、关键函数介绍1.贪吃蛇链表用链表的节点表示蛇,移动的时候增加一个头节点隐藏一个尾节点,吃食物只需增加一个头节点。

  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;
相关文档
最新文档