贪吃蛇游戏课程设计报告
- 格式:doc
- 大小:110.00 KB
- 文档页数:15
一、实验目的1. 掌握游戏设计的基本流程和原则。
2. 学会使用Unity游戏引擎进行游戏开发。
3. 提高编程能力和逻辑思维能力。
4. 实现贪吃蛇游戏,并优化游戏性能。
二、实验环境1. 操作系统:Windows 102. 开发工具:Unity 2019.4.10f13. 编程语言:C#三、实验内容1. 游戏设计2. 场景搭建3. 贪吃蛇游戏逻辑实现4. 游戏优化四、实验步骤1. 游戏设计(1)确定游戏主题:贪吃蛇(2)游戏规则:玩家控制蛇头,通过移动蛇头吃到食物,蛇的长度逐渐增加。
同时,蛇头不能撞到墙壁或自己的身体,否则游戏结束。
(3)游戏界面:包括游戏主界面、游戏场景、得分显示、游戏结束界面等。
2. 场景搭建(1)创建游戏场景:使用Unity编辑器创建一个3D场景,命名为“贪吃蛇场景”。
(2)添加墙壁:使用Unity编辑器中的Cube对象创建墙壁,设置墙壁的位置和大小,使墙壁围成一个封闭的空间。
(3)添加食物:使用Unity编辑器中的Sphere对象创建食物,设置食物的位置和大小。
3. 贪吃蛇游戏逻辑实现(1)创建蛇头和蛇身:使用Unity编辑器中的Cube对象创建蛇头和蛇身,设置蛇头和蛇身的位置和大小。
(2)控制蛇头移动:编写C#脚本,实现蛇头在四个方向上的移动。
(3)蛇头吃到食物:当蛇头与食物接触时,蛇的长度增加,食物消失。
(4)蛇头撞到墙壁或自身:当蛇头与墙壁或自身接触时,游戏结束。
4. 游戏优化(1)提高游戏帧率:通过优化代码和减少资源消耗,提高游戏帧率。
(2)优化蛇身移动:在蛇身移动时,减少不必要的计算,提高游戏性能。
五、实验结果与分析1. 实验结果通过以上步骤,成功实现了一个简单的贪吃蛇游戏。
游戏界面简洁,操作方便,符合游戏设计原则。
2. 实验分析(1)游戏设计方面:游戏规则简单易懂,游戏画面简洁,符合玩家需求。
(2)场景搭建方面:墙壁和食物的布局合理,有利于游戏进行。
(3)游戏逻辑实现方面:蛇头移动、吃到食物、撞墙等逻辑实现正确,游戏运行稳定。
安卓贪吃蛇课程设计一、课程目标知识目标:1. 学生理解并掌握安卓应用开发的基础知识,包括活动(Activity)、视图(View)和意图(Intent)的使用。
2. 学生掌握贪吃蛇游戏的逻辑和算法,包括蛇的移动、食物的生成和碰撞检测。
3. 学生了解如何在安卓应用中实现用户界面设计,使用布局(Layout)和控件(Control)。
技能目标:1. 学生能够独立创建安卓项目,并设置虚拟设备进行调试。
2. 学生能够编写代码实现贪吃蛇游戏的核心功能,包括蛇的自动移动、方向控制以及食物的随机生成。
3. 学生能够利用安卓开发工具进行问题调试,解决开发过程中遇到的问题。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发探究精神和创新意识。
2. 培养学生团队合作意识,学会在团队中发挥个人优势,共同解决问题。
3. 增强学生面对困难的勇气和毅力,培养良好的编程习惯和解决问题的方法。
分析课程性质、学生特点和教学要求:1. 课程性质:实践性、综合性、创新性。
2. 学生特点:具备一定的计算机操作能力,对编程有一定了解,对游戏开发有浓厚兴趣。
3. 教学要求:注重理论与实践相结合,关注学生个体差异,提供个性化的指导,确保学生能够将所学知识应用于实际项目中。
二、教学内容1. 安卓应用开发基础:- 活动的生命周期及状态管理- 视图和布局的使用,包括线性布局、相对布局等- 控件的使用,如按钮(Button)、文本框(TextView)等- 意图(Intent)的使用及数据传递2. 贪吃蛇游戏逻辑与算法:- 蛇的移动逻辑及方向控制- 食物的随机生成及碰撞检测- 游戏分数记录及结束条件3. 安卓界面设计与实现:- 游戏界面的布局设计- 蛇和食物的控件定制- 用户交互界面的实现,如按钮控制蛇的方向4. 教学大纲与进度安排:- 第一周:安卓应用开发基础学习,了解活动、视图、控件和意图的使用- 第二周:学习贪吃蛇游戏逻辑,编写移动算法和方向控制- 第三周:实现食物的生成和碰撞检测,设计游戏界面- 第四周:整合游戏功能,进行调试与优化教材章节关联:- 《Android基础教程》第3章:Android应用界面设计- 《Android基础教程》第4章:Android组件和事件处理- 《Android游戏开发实战》第2章:游戏开发基础及游戏循环- 《Android游戏开发实战》第5章:游戏界面绘制与用户交互教学内容确保科学性和系统性,结合教学大纲和教材章节,使学生能够逐步掌握安卓贪吃蛇游戏的开发技能。
本科课程设计贪吃蛇游戏设计摘要 (3)Abstract (3)一.详细设计 (4)1.属性解释 (4)2.初始化坐标: (4)3.调用线程 (4)4.具体功能实现: (5)4.1.移动功能的实现: (5)4.2.吃食物功能实现: (6)4.3.判断游戏是否结束的功能实现: (8)4.4.画图方法的实现 (9)4.5.监听键盘动作: (10)5.界面的设计: (11)5.1进入程序界面设计 (11)5.2第2个界面的设计: (12)5.3第3个界面设计: (12)6.把程序植入手机中 (13)二.字符设备驱动程序实现 (13)三.总结: (14)四.参考文献: (14)五.致谢 (15)摘要程序核心思想:运行程序首界面(进入游戏,退出游戏)进入游戏后选择难度(简单,普通,高难)根据不同的难度设置相应的属性。
进入游戏界面。
首先初始化蛇的坐标,食物的坐标,和障碍物的坐标。
然后获取当前屏幕的大小为将来的边界判断做准备。
然后创建并执行线程。
线程基本流程:判断是否是暂停阶段,如果没有暂停就执行:eatFood();move(direction); repaint();如果游戏结束了就重新游戏或者退出。
AbstractCore of the process: first running the program interface (into the game, withdraw from the game) into the game after the difficult choice of (simple, ordinary, highly difficult) depending on the difficulty of setting the corresponding attribute. Into the game interface. First initialize the coordinates of the snake, coordinates food, and the coordinates of obstructions. And access to the size of the current screen for the future of the border to prepare for judgement. And then create and execution threads. Thread the basic process: determine whether the stage is suspended, if not the moratorium on the implementation of: eatFood (); move (direction); repaint (); game to an end if the game or out on the re.一.详细设计1.属性解释用1个2维数组snake[200][2]存放蛇身坐标,第2维是0的时候代表横坐标,为1的时候为纵坐标。
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. 游戏循环:构建游戏循环,使游戏能够在用户输入下不断运行和更新状态。
贪吃蛇课程设计python报告一、教学目标本课程旨在通过学习Python编程语言实现一个贪吃蛇游戏,让学生掌握以下知识目标:1.理解Python的基本语法和数据类型。
2.学会使用Python进行流程控制和函数定义。
3.理解面向对象编程的基本概念。
4.能够独立编写简单的Python程序。
5.能够利用Python实现基本的贪吃蛇游戏。
情感态度价值观目标:1.培养学生对编程的兴趣,提高学生的信息素养。
2.培养学生解决问题的能力,提高学生的创新意识。
二、教学内容根据课程目标,我们选择Python作为编程语言,以贪吃蛇游戏为例,让学生在实践中掌握编程知识和技能。
具体的教学大纲如下:1.第一章:Python基础。
学习Python的基本语法、数据类型和变量。
2.第二章:流程控制。
学习条件语句、循环语句和函数定义。
3.第三章:面向对象编程。
学习类和对象的概念,以及如何定义和调用方法。
4.第四章:贪吃蛇游戏实现。
利用所学知识编写贪吃蛇游戏的代码,并进行调试和优化。
三、教学方法为了激发学生的学习兴趣和主动性,我们采用以下教学方法:1.讲授法:讲解Python的基本语法、数据类型和流程控制知识。
2.讨论法:学生讨论面向对象编程的概念和实现方法。
3.案例分析法:通过分析贪吃蛇游戏的代码,让学生理解编程思路。
4.实验法:让学生动手编写和调试贪吃蛇游戏,提高实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,我们准备以下教学资源:1.教材:《Python编程:从入门到实践》2.参考书:《Python核心编程》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络环境通过以上教学资源,学生可以更好地学习Python编程,并在实践中掌握贪吃蛇游戏的开发技能。
五、教学评估本课程的教学评估将采取多元化方式进行,以全面、客观、公正地评估学生的学习成果。
评估方式包括:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和积极性。
贪吃蛇安卓课程设计一、课程目标知识目标:1. 学生能理解贪吃蛇游戏的原理和基本规则。
2. 学生能掌握安卓开发环境的基本操作和界面设计。
3. 学生能了解和运用Java编程语言实现贪吃蛇游戏的功能。
技能目标:1. 学生能运用安卓开发工具,独立设计和开发一款简易的贪吃蛇游戏。
2. 学生能通过调试和优化,提高贪吃蛇游戏的性能和用户体验。
3. 学生能运用所学的编程知识,解决开发过程中遇到的问题。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发他们的创新精神和探究欲望。
2. 培养学生的团队协作能力,学会在项目中分工合作、共同解决问题。
3. 培养学生面对挑战时的积极态度,提高他们克服困难的信心和决心。
本课程针对初中年级学生,结合他们好奇心强、动手能力强、善于合作等特点,设计具有挑战性和趣味性的贪吃蛇游戏开发课程。
课程旨在让学生在掌握编程知识的同时,提高实践能力和创新能力,培养他们良好的团队合作精神。
通过本课程的学习,学生能够将所学的编程知识运用到实际项目中,从而提升他们的综合素质。
二、教学内容1. 安卓开发环境搭建:介绍Android Studio的安装与配置,熟悉开发工具的使用。
- 章节关联:课本第二章《Android开发环境搭建》2. 简单的界面设计:学习并应用XML布局文件,设计贪吃蛇游戏的界面。
- 章节关联:课本第三章《Android界面设计基础》3. Java编程基础:回顾和巩固Java基本语法,为游戏编程打下基础。
- 章节关联:课本第四章《Java编程基础》4. 贪吃蛇游戏逻辑实现:学习游戏循环、碰撞检测、分数统计等核心功能。
- 章节关联:课本第五章《Android事件处理》与第六章《Android动画与游戏开发》5. 游戏调试与优化:介绍日志输出、性能分析及优化方法,提高游戏体验。
- 章节关联:课本第七章《Android性能优化》6. 项目实践:分组进行项目实践,将所学知识综合运用到贪吃蛇游戏的开发中。
关于贪吃蛇课程设计一、课程目标知识目标:1. 让学生掌握贪吃蛇游戏的规则和基本玩法。
2. 引导学生理解游戏背后的编程逻辑和算法。
3. 培养学生对计算机编程的兴趣,了解编程与数学、逻辑思维的关系。
技能目标:1. 培养学生运用编程语言(如Python)实现贪吃蛇游戏的能力。
2. 培养学生运用数学知识和逻辑思维解决问题的能力。
3. 提高学生的团队协作能力和沟通表达能力。
情感态度价值观目标:1. 培养学生对计算机科学的热爱,激发学生的创新精神。
2. 培养学生勇于尝试、克服困难的意志品质。
3. 培养学生遵守游戏规则,树立公平竞争的意识。
课程性质:本课程为信息技术与学科整合的实践课程,以贪吃蛇游戏为载体,培养学生的编程兴趣和逻辑思维能力。
学生特点:五年级学生对新鲜事物充满好奇心,具备一定的数学和逻辑思维基础,但编程经验尚浅。
教学要求:课程设计需兼顾趣味性与实用性,注重培养学生的动手实践能力和团队协作精神,将编程知识与实际操作相结合,使学生在实践中掌握知识。
通过分解课程目标为具体学习成果,便于后续教学设计和评估。
二、教学内容1. 游戏规则与玩法介绍:讲解贪吃蛇游戏的基本规则和操作方法,让学生了解游戏的核心玩法。
2. 编程语言基础:介绍Python编程语言的基本语法,如变量、数据类型、控制结构等,为学生编写贪吃蛇游戏打下基础。
3. 游戏编程逻辑:分析贪吃蛇游戏的编程逻辑,讲解如何使用Python实现游戏功能,包括蛇的移动、食物的生成、碰撞检测等。
4. 算法设计与优化:引导学生探讨贪吃蛇游戏中可能涉及的算法,如搜索算法、路径规划等,并针对游戏性能进行优化。
5. 实践操作:安排学生分组进行贪吃蛇游戏的编程实践,培养学生的动手能力和团队协作精神。
6. 作品展示与评价:组织学生展示各自的作品,进行互评和教师评价,总结优点与不足,提高学生的表达能力和批判性思维。
教学内容关联教材章节:1. 游戏规则与玩法介绍:教材第二章“计算机游戏概述”。
贪食蛇游戏课课程设计一、教学目标本课程旨在通过学习贪吃蛇游戏的设计与制作,让学生掌握以下知识目标:1.了解贪吃蛇游戏的基本规则和原理;2. 学习Python编程语言的基本语法和操作;3. 熟悉Python编程环境的使用。
技能目标:1. 能够使用Python编程语言编写简单的程序;2. 能够独立设计和制作一个简单的贪吃蛇游戏。
情感态度价值观目标:1. 培养学生的创新意识和解决问题的能力;2. 培养学生团队合作和互相帮助的精神;3. 培养学生对计算机编程的兴趣和热情。
二、教学内容本课程的教学内容主要包括以下几个部分:1. 贪吃蛇游戏的基本规则和原理;2. Python编程语言的基本语法和操作;3. Python编程环境的使用;4. 贪吃蛇游戏的编程实现。
具体的教学大纲如下:第一节:贪吃蛇游戏的基本规则和原理1.介绍贪吃蛇游戏的历史和发展;2. 讲解贪吃蛇游戏的基本规则和操作;3. 分析贪吃蛇游戏的原理和算法。
第二节:Python编程语言的基本语法和操作1.介绍Python编程语言的特点和优势;2. 讲解Python编程语言的基本语法;3. 练习Python编程语言的基本操作。
第三节:Python编程环境的使用1.介绍Python编程环境的选择和安装;2. 讲解如何在Python编程环境中编写和运行程序;3. 熟悉Python编程环境的使用技巧。
第四节:贪吃蛇游戏的编程实现1.讲解贪吃蛇游戏的编程思路和步骤;2. 引导学生分组讨论和合作编写贪吃蛇游戏程序;3. 展示学生编写的贪吃蛇游戏并进行评价和总结。
三、教学方法本课程的教学方法主要包括以下几种:1. 讲授法:用于讲解贪吃蛇游戏的基本规则和原理、Python编程语言的基本语法和操作、Python编程环境的使用等知识;2. 讨论法:用于引导学生分组讨论和合作编写贪吃蛇游戏程序;3. 案例分析法:通过分析典型的贪吃蛇游戏案例,让学生理解和掌握编程思路和方法;4. 实验法:让学生动手实践,编写和运行贪吃蛇游戏程序,提高学生的编程能力和操作技能。
c 贪吃蛇设计课程设计一、教学目标本课程旨在通过“贪吃蛇”游戏的设计与实现,让学生掌握以下知识目标:1.理解并掌握面向对象编程的基本概念和方法。
2.掌握Python编程语言的基本语法和操作。
3.了解计算机图形用户界面(GUI)编程的基本原理。
4.培养学生运用面向对象编程方法解决实际问题的能力。
5.培养学生独立编写Python程序的能力。
6.培养学生使用GUI编程工具进行程序开发的能力。
情感态度价值观目标:1.培养学生对计算机编程的兴趣和热情,提高学生主动学习的积极性。
2.培养学生团队协作精神,通过小组合作完成项目任务。
3.培养学生具有良好的编程习惯和职业道德,遵守编程规范,尊重他人知识产权。
二、教学内容本课程的教学内容主要包括以下几个部分:1.面向对象编程基础:包括类与对象、继承与多态、封装等基本概念。
2.Python编程语言:基本语法、数据类型、控制结构、函数、模块等。
3.计算机图形用户界面(GUI)编程:了解GUI的基本原理,学习使用相关库(如Tkinter)进行GUI编程。
4.贪吃蛇游戏设计与实现:分析游戏需求,设计游戏架构,编写游戏逻辑,实现游戏界面。
三、教学方法为了提高教学效果,将采用以下教学方法:1.讲授法:讲解基本概念、语法和原理,确保学生掌握理论知识。
2.案例分析法:通过分析典型案例,让学生了解实际应用,提高学生的实践能力。
3.实验法:安排实验室实践环节,让学生动手编写代码,培养学生的实际操作能力。
4.讨论法:学生进行小组讨论,分享学习心得,互相促进,提高团队协作能力。
四、教学资源为了支持本课程的教学,将准备以下教学资源:1.教材:《Python编程:从入门到实践》、《Python核心编程》等。
2.参考书:提供在线编程教程、相关技术博客和文档等。
3.多媒体资料:制作课件、教学视频等,以便于学生复习和巩固知识点。
4.实验设备:计算机、网络设施等,确保学生能够顺利进行实验操作。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
贪吃蛇游戏程序设计一、课程设计任务贪吃蛇小游戏程序设计二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。
(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩三、需求分析3.1、程序功能贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
3.2、设计思想程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
食物的出现与消失也是画矩形块和覆盖矩形块。
为了便于理解,定义两个结构体:食物与蛇。
3.3、流程图四、设计的具体实现(1)函数定义函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用#define N 200#define M 200#include"graphics.h"#include<stdlib.h>#include<stdio.h>#include<string.h>#include<iostream.h>#include<dos.h>#include<conio.h>#include <windows.h>#define LEFT 97//A#define RIGHT 100//D#define DOWN 115//S#define UP 119//W#define Esc 0x011bint i,key;int score=0;int gamespeed=250;//游戏速度可根据实际情况自行调整struct Food {int x;//食物的横坐标int y;//食物的纵坐标int yes;//判断是否要出现食物的变量}food;//食物的结构体struct Snake{int x[M];int y[M];int node;//蛇的节数int direction;//蛇的移动方向int life;//蛇的生命,0表示活着,1表示死亡}snake;void Init();//图形驱动void Close();//图形结束void DrawK();//开始画面void GamePlay();//玩游戏的具体过程void GameOver();//游戏结束void PrScore();//输出成绩(2)主函数main( )主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序void main()//主函数{Init();//图形驱动DrawK();//开始画面GamePlay();//玩游戏的具体过程Close();//图形结束}void Init()//图形驱动{int gd=DETECT,gm;initgraph(&gd,&gm," ");/*此处为turboc的路径,读者可以根据自己的电脑而改*/ cleardevice();}(3)画界面函数DrawK( )主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。
void DrawK()//开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙{setbkcolor(GREEN);setcolor(LIGHTRED);setlinestyle(0,0,5);//设置线型for(i=50;i<=600;i+=10)//画围墙{rectangle(i,40,i+10,49);//上边rectangle(i,451,i+10,460);//下边}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10);//左边rectangle(601,i,610,i+10);//右边}}(4)游戏具体过程函数GamePlay()这是游戏的主要组成部分,他采用将前一节的坐标赋给后一节,用背景颜色将最后节去除,当蛇头的坐标与食物的坐标相等时,表示食物被吃掉了。
void GamePlay()//玩游戏的具体过程{rand();//随机数发生器food.yes=1;//1表示需要出现新食物,0表示已经存在食物snake.life=0;//蛇活着snake.direction=1;//方向往右snake.x[0]=100;snake.y[0]=100;//舌头坐标snake.x[1]=110;snake.y[1]=100 ;snake.node=2;//蛇的节数PrScore();//输出分数while(1)//可重复玩游戏,按ESC键结束{while(!kbhit())//在没有按键的情况下,蛇自己移动身体{if(food.yes==1)//需要出现新食物{food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)//食物随即出现后必须让食物能够在整格内,这样才能让蛇迟到food.x++;while(food.y%10!=0)food.y++;food.yes=0;//画面上有食物了}if(food.yes==0)//画面上有食物就要显示{setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i>0;i--)//蛇的每个环节往前移动,也就是贪吃蛇的关键算法{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}switch(snake.direction)//1,2,3,4表示上下左右四个方向,通过这个判断来移动蛇头{case 1:snake.x[0]+=10;break;case 2:snake.x[0]-=10;break;case 3:snake.y[0]-=10;break;case 4:snake.y[0]+=10;break;}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;}}if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)//蛇是否撞到墙壁{GameOver();//本次游戏结束snake.life=1;//蛇死}if(snake.life==1)//以上两种判断以后,如果蛇死就跳出内循环,重新开始break;if(snake.x[0]==food.x&&snake.y[0]==food.y)//吃到食物以后{setcolor(0);//把画面上的食物去掉rectangle(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;//新的一节先放在看不见得位置,下次循环就取前一节的位置snake.node++;//蛇的身体长一节food.yes=1;score+=10;PrScore();//输出新的得分}setcolor(WHITE);//画出蛇for(i=0;i<snake.node;i++)rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);Sleep(gamespeed);setcolor(0);//用黑色去除蛇的最后一节rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1 ]+10,snake.y[snake.node-1]-10);}if(snake.life==1)//如果蛇死就跳出循环break;key=getchar();//接受案件if(key==Esc)//按ESC键退出break;else if(key==UP&&snake.direction!=4)snake.direction=3;else if(key==RIGHT&&snake.direction!=2)snake.direction=1;else if(key==LEFT&&snake.direction!=1)snake.direction=2;else if(key==DOWN&&snake.direction!=3)snake.direction=4;}//endwhile(1)}(5)游戏结束函数GameOver()游戏结束,清除屏幕,输出分数,显示游戏结束信息。
void GameOver()//游戏结束{PrScore();setcolor(RED);outtextxy(100,100,"我会回来的");getch();}void PrScore()//输出成绩{char str[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);sprintf(str,"score:%d",score);outtextxy(55,20,str);}void Close()//图形结束{getch();closegraph();}五、调试及解决方法可以按照程序运行的错误提示对原程序进行修改,在调试过程中有时也会遇到不懂的问题,我去图书馆或上网查阅一些资料或者是向老师请教也解决了对源程序一一修改直到运行成功。