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语言贪吃蛇课程设计报告摘要本报告介绍了一个基于C语言的贪吃蛇游戏的课程设计项目。
报告首先介绍了贪吃蛇游戏的背景和目标,然后详细说明了设计和实现过程中使用的数据结构、算法和关键技术。
最后,报告讨论了项目的测试结果和改进思路。
1. 引言贪吃蛇是一款经典的电子游戏,它的目标是控制一条蛇在有限空间内移动,吃掉食物并尽可能长大。
贪吃蛇游戏不仅有趣,而且对于初学者来说是一个很好的训练编程技巧的项目。
因此,在本课程设计中选择了贪吃蛇游戏作为项目的主题。
2. 设计目标本课程设计项目的主要目标是设计并实现一个使用C语言开发的贪吃蛇游戏。
具体目标包括: - 实现一个可用键盘控制的贪吃蛇游戏界面; - 设计合适的数据结构来表示贪吃蛇的状态; - 实现贪吃蛇的移动、吃食物、增长等基本功能; - 设计和实现合适的算法来检测和处理蛇与边界、蛇与自身以及蛇与食物的碰撞。
3. 设计与实现为了实现贪吃蛇游戏,我们使用了C语言作为开发语言,并采用了以下关键技术和数据结构:3.1 数据结构为了表示贪吃蛇的状态,我们设计了以下数据结构: - Point结构体用于表示二维坐标点,包括x和y坐标; - SnakeNode结构体用于表示贪吃蛇的每个节点,包括一个Point和指向下一个节点的指针; - Snake结构体用于表示整条贪吃蛇,包括一个指向头节点的指针和当前蛇的长度。
3.2 算法和关键技术为了实现贪吃蛇的移动、吃食物、碰撞等功能,我们采用了以下算法和关键技术: - 使用循环链表数据结构来表示贪吃蛇,使得贪吃蛇的移动和增长操作更高效;- 使用键盘输入来控制贪吃蛇的移动方向; - 使用随机数生成食物的位置; - 使用递归算法检测贪吃蛇与边界、自身以及食物之间的碰撞。
4. 测试与结果分析为了测试贪吃蛇游戏的功能和性能,我们设计了多个测试用例并进行了测试。
测试的结果表明我们的游戏实现了预期的功能,并且在性能方面表现良好。
然而,我们也发现了一些问题和改进的空间: - 贪吃蛇的移动速度过快,导致游戏难度较高; - 游戏界面设计简单,缺乏可玩性。
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) 安排佳数组元素与蛇,食物的对付应关系.4) 随机爆收食物.5) 有分数统计,排止榜,分数保存等功能.通过此次课程安排,期视使读者能更深进的明黑战掌握课程教教中的基础观念,培植读者应用基础技能办理本量问题的本领,进而进一步普及领会问题妥协决问题的本领.1.2.3本次课程安排需要掌握战使用如下的知识面:1) 数组的应用.2) 齐部变量的使用.3) 按键处理.4)结构体的应用.5)图形,音乐战动画的有关知识.6)随即函数的使用.7)文献的基础出支配.8) 结构化,模块化的安排要领.正在本次课程安排中需要完毕的任务有:包罗下令,齐部变量的定义战宏定义,函数声明等(50止),主控模块(MAIN函数,14止),动画,音乐播搁模块(DRAWSNOW函数,33止),画出游戏启初界里模块,简曲游戏历程模块,游戏中断处理模块.启垦中处事量约为215止源代码.二 .需要领会贪吃蛇游戏是个简朴的小游戏,能让游戏者的身心得到娱乐,进而不妨更佳天加进到教习或者处事核心.虽然目前市里上出去那百般百般的游戏版本,但是贪吃蛇那类的小游戏其商场仍旧相称大的,果为它玩法简朴易止,不管是脚机,仍旧小游戏机,皆能很成功的运止.对付于正在中闲碌的人,不可能耗费洪量时间正在娱乐上,庞大游戏是止短亨的,那样的小游戏刚刚佳迎合了他们的需要.要启垦贪吃蛇游戏步调,最先要领会改步调应真止哪些功能.对付贪吃蛇游戏步调的功能需要可形貌如下:步调运止后隐现动画,音乐,按ESC 键退出游戏界里后,左边有一个矩形区,中游戏天区,正在矩形区中有食物战贪食蛇,上圆有统计分数及关数隐现天区.蛇正在启关围墙利用绿色矩形表示,围墙里随机的出现一个食物,通过按键盘四个光标键统造蛇进与,下,安排四个目标移动,蛇头碰到食物,则食物被吃掉,蛇身体少一节,接着又出现食物,等待蛇去吃.食物用一个面表示,而且屡屡食物的位子皆是随机出现的.游戏中要使贪吃蛇尽大概的少,然而是不克不迭使贪吃蛇碰到四里的墙壁,而且蛇的身体不克不迭碰到所有,可则游戏中断.游戏中每吃掉一个食物要有积分,随着分数的减少可加进下一关,纵然速度会加快.游戏中断时,如果分数加进前5名则沉新排榜并保存.隐现排止榜.由于有关贪吃蛇战食物的数据较多,而且关系稀切,贪吃蛇及食物皆是定义结构体数据典型,那样定义便于支配与处理.2.2 支配要领三 总体安排决定贪吃蛇游戏体捆绑构,给出总体模块结构图,决定步调的主要函数及之间的调用关系,共时安排蛇与游戏者等的数据结构.3.1 模块区分本步调采与结构化步调安排的要领,依照自顶背下,逐步细化的要领对付要办理的问题举止逐层领会.最先画出顶层模块,即主控模块,之完毕对付下层模块的调用功能,即调用其余的功能模块;接着,按需要领会中的功能需要安排第一层模块,有音乐动画,图形启动,画主界里,游戏历程,中断处理,退出品级6个主要功能;接着,画出第二层模块.总体模块结构如图6-1所示.3.1.1. 主控模块. 3.1.2. 动画音乐模块 3.1.3. 画主界里模块 3.1.4. 游戏历程模块 3.1.5. 游戏中断处理模块 3.1.6. 读与记录模块 3.1.7. 结果排序模块 3.1.8. 写进文献模块 3.1.9. 排止榜模块 3.1.10. 退出3.2 总体数据结构安排安排思路:测序的关键正在于表示蛇的图形及蛇的移动.用一个小限造性圆块表示蛇的一节主 控 模 板 读与记录结果排序写进文献排止榜动画音乐图形启动退出中断处理 游戏历程画主界里身体,身体每少一节,减少一个矩形块,蛇头业用共样的一节小矩形圆块表示移动时必须从蛇不妨上背前爬止,档案下灵验目标键后,应先决定蛇头的位子,而后蛇的身体虽蛇头移动,图形的真止是从身体新位子启初画出蛇.那时,由于已浑屏的本果,本去的蛇的位子战新蛇的位子好一节蛇身,即瞅起去蛇多一节身体,所以将蛇的末尾一节用背景致覆盖.食物的出现与消得意识画矩形块战覆盖矩形块.为了便于明黑,定义二个结构体:食物与蛇.底下介绍贪吃蛇游戏步调的主要数据结构.3.2.1 食物与蛇的数据结构表示食物与蛇的矩形块安排为10*10个像素单位,食物的基础数据域为它所出现的位子,用X战Y坐标表示,则矩形块用函数RECTANGLE(X,Y,X+10,Y+10)或者RECTANGLE(X,Y,X+10,Y-10)不妨画出.由于屡屡只出现一个食物,所以设定YES表示是可需要出现食物.YES=1表示不食物或者食物已经被蛇吃掉,需要画出食物.搁置食物后,置YES=0.蛇的一节身体为一个矩形块,表示矩形块只需左上角面坐标(X,Y).由于正在游戏历程中蛇的身体不竭删少,需用数组存搁每节坐标,最大设定为N=200,NODE表示目前节数.DIRECTION是保存蛇的移动目标的变量,其值可为1、2、3、4之一,分别表示左、左、上、下的目标.LIFE是表示死命的变量,LIFE=0表示蛇活着,一朝LIFE=1,一朝LIFE=1,表示蛇死,中断游戏.#define N 200Struct Food{ int x;int y;Int yes;}food;Struct Snake{ int x[N];Int y[N];Int node;Int derection;Int life;}snake;3.2.2 排止榜中劣胜者的数据结构排止榜主要记录劣胜者的姓名战结果.为了存搁排止榜疑息,可定义如下的结构体典型,其中字符数组name成员存搁劣胜者的姓名,整型变量score成员存搁劣胜者的结果.Struct person{ char name[20];Int score;};3.2.3 其余齐部变量的定义Struct person per[5];Int score=0;Int gamespeed=400;3.2.4 标记常量的宏定义#define LEFT 0x4b00;#define RIGHT 0x4d00;#define DOWN 0x5000;#define UP 0x4800#define ESC 0x011b#define FILENAME四. 仔细安排根据总体安排的模块功能战结构,完毕所负担的步调模块的算法安排.给出每个模块的仔细的算法,算法分别用保守过程图战笔墨证明去形貌.4.1 主控模块main函数主函数是步调的主控模块.最先初初化图形系统,而后使用drawsnow函数播搁动画战声音,接着调用init函数初初化图形系统,之后调用drawk函数画出游戏启初画里,正在调用g ameplay函数,即启初了游戏的简曲历程,游戏中断后调用endplay函数举止游戏中断处理;从文献中读与记录疑息,排序,隐现排止榜疑息,末尾关关图形系统,中断步调.主控模块的过程图如图6-2所示.其中戴有二个横线的矩形框表示对付自定义函数的调用.4.2函数主界里便是一个启关的围墙,用二个循环语句分别正在火仄目标战笔曲目标输出连绝的宽度战下的均为10个像素单位的距止小圆块,围成启关图形表示围墙,为了醉目,树坐为浓青色,用函数setlinestyle设曲线型宽度为3个像素,树坐3个像素的围墙线,.末尾,正在界里的左上部输出游戏步调的版本疑息,正在左上部输出游戏结果(score)战关(level)的表头.4.3 游戏简曲历程gameplay函数该函数是游戏的核心部分.游戏简曲历程gameplay函数的大概算法过程图如图6-4所示.余下过程图正在下页4.3.1那24.3.21 0个4.3.3那里的易面是表示蛇的新位子并与消前一次的图形.采与的要领是屡屡移动的时间从末尾一节启初到第二节,将前一节的坐标值赋给后一节的坐标,移动后只消把末尾一节用背景致揩出即可,果为新位子0到n-1节仍旧要出目前画里上的.那里用一个for循环去决定蛇身的新坐标.4.3.4 吃到食物后的处理蛇吃到食物后,最先将食物揩除,即用背景致画出该食物,而后给蛇的节数加1,树坐需要食物标记,是游戏结果加10分,如果结果达到50分的倍数,则给关数加1,并加快游戏速度.4.3.5 有按键推断蛇的目标那是一个内嵌的嵌套的条件采用结构,根据安东上下安排键去设定蛇的移动目标.其中1=背左,2=背左,3=进与,4=背下.推断是还思量好异的目标键无效,比圆蛇正正在进与爬止,按下一键目标是无效的.4.4 游戏的中断处理木块ENDPLAY函数游戏中断时,该当用ENDPLAY函数举止游戏中断处理,其算法过程图如图6-5所示I 其次,推断游戏者的结果是可不妨上排止榜.如果不妨上榜,则画出浓蓝色矩形界里,正在界里中输进游戏者姓名,对付结果举止赋值,而后调用CompareScore 函数对付记录排序,并调用Writefiles 函数将记录写进排止榜助文献;如果不克不迭上榜,则间接正在游戏界里输出不克不迭上榜疑息.末尾,调用 pain_board 函数隐现排止榜疑息.函数void pain_board完毕排止榜的画造.五. 步调的调试与尝试调试与尝试硬件的目标便是创造并改正潜伏的过得.一个步调,必须通过认果然调试战尝试,才搞尽管缩小过得、包管步调谦脚功能、本能需要,达到最初的安排、使用央供,进而包管步调的启垦品量.仔细安排完毕后,便不妨用C谈话根据各个模块的算法去安排步调,每个模块皆要安排成一个自定义函数.几个模块不妨搁正在所有形成一个本函数步调文献,也不妨一个模块形成一个源步调文献.本步调安排佳后,输进到估计机中,并保存到磁盘上;而后对付每个源步调文献皆举止了独力编译战调试(简曲代码不妨参瞅步调浑单);并针对付分歧的模块步调安排尝试用例举止单元尝试;末尾,将几个分别启垦的模块组拆正在所有,产死一个完备的步调,举止集成尝试,进而创造并改正了步调步调中存留的一些潜躲的过得,并使步调的容错本领大大巩固.5.1 动画与音乐的共步播搁预期截止:①片头正在隐现动画得共时播搁音乐;②按任性键后加进游戏主界里;③加进游戏主界里后动画音乐共时停止.本量运止效验:谦脚①战②,不谦脚③,即加进游戏后仍旧播搁片头音乐.过得领会:步调中使用循环播搁动画,并正在其循环体中拔出收声函数以达到音乐战动画的共步.由于正在中断动画时不关关扬声器,所以加进游戏界里后仍旧收声.建改:正在动画播搁完后加一条“nosound();”语句将扬声器关关,问题得到办理. 建改后步调运止的本量效验与预期效验普遍.5.2 蛇的运止5.2.1 蛇碰到墙预期截止:蛇运止时如果碰到墙壁,则游戏中断.本量运效验:超出安排墙壁后步调中断,然而超出上头墙壁后仍旧运止,如图6-9所示.过得领会:过得步调段正在蛇运止中的条件推断语句中,其推断条件是:if(snake.x[0]<55|| snake.x[0]>595),即少了上、下二个目标的推断.建改:正在蛇的运止历程中增加二个逻辑表黑式,推断蛇是可闯到上下的围墙.代码:If( snake.x[0]<55|| snake.x[0]>595|| snake.y[0]<55|| snake.y[0]>455)建改后的步调运止截止与预期的截止普遍.5.2.2 蛇头闯到蛇身预期的截止:当蛇得头部与蛇身相碰时,游戏应核心断. 本量运止效验:蛇头碰到蛇身时,步调本去不末止.过得领会:正在蛇的运止推断的步调堕落,其代码如下Fori=3;i<snake.node;i++){ if(snake.x[i]=snake.x[0]&&snake.y[i]=snake.y[0]){snake.life=0;break;}}建改:将循环体中的snake.life=0改为snake.life=1;建改后的截止与预期截止普遍.5.3 末止循环通过对付各个模块的调试战单元尝试并建改了过得后,将各个模块组拆成一个系统,并举止集成尝试.正在集成的历程中创造了一些过得,比圆齐部变量沉复定义、函数沉复声明等,分别举止了改正.末尾连绝运止了5次,以便尝试该游戏步调的功能、本能是可达到了预期的目标,并根据所使用的简曲呆板对付蛇的爬止速度举止适合的安排.尝试真量包罗蛇的运止、分数、关数、排止榜及排序、文献保存、音乐动画等功能,情况均仄常.六. 论断通过2周的课程安排,正在启垦小组共共的齐力下,毕竟完毕了贪吃蛇游戏步调的启垦任务.该游戏步调真止了用目标键统造蛇正在围墙内爬止、随机爆收食物、统造蛇吃掉食物并加分、统造游戏中闯关的数目战蛇的运止速度、真时隐现得分战关数、中断时处理战隐现排止榜等功能.该游戏步调具备界里友佳、支配便当、统造准确战容错本领强等特性.那个贪吃蛇游戏还存留一些缺陷,还该当正在如下几个圆里加以矫正.1)加进游戏后,到蛇牺牲,只可玩一次便会退出步调.应加进多次游戏的统造本领.2)蛇的格式不好瞅,应将蛇头、蛇尾战蛇身进一步好化,使其更像真正在的蛇.3)当分数达到400分时,蛇的速度变得非常快,一下子便碰到围墙上了,应适合统造蛇的速度战关数,以便使游戏更具备吸引力.贪吃蛇游戏的编程训练思索数据结构:定义食物的坐标去统造它出现的位子,用一系列的函数时举止表示,比圆用函数rectangle去画出矩形,用life变量的值表示蛇的死命,用direction变量的值表示蛇移动的目标等,另有用数组去存搁蛇身各节的坐标,那些皆让咱们认识了对付数组的支配,别的还认识了百般函数的应用.贪吃蛇的安排有很多助闲,教习编写贪吃蛇的游戏对付掌握C谈话的知识有很大的助闲.通过编程试验,还能拓展思路,让咱们去觅找需要调用那些函数,何如普及步调的品量等. 要写出佳的步调,需要咱们有扎真的前提,那样逢到一些基础算法的时间便会游刃有余了.正在编程时咱们要有歉富的设念力,不要拘泥与牢固的思维办法,逢到问题的时侯要多念几种办理问题的规划.歉富的设念力是建坐正在歉富的知识前提上,所以咱们要通过多个道路去助闲自己建坐较歉富的知识结构.正在编程是咱们碰倒了很多的艰易,那便需要咱们多与他人接流.正在编程的历程中,咱们也创造有良佳的编程风格是格中要害的,起码正在时间效用上便体现了那一面.养成良佳的习惯,代码的缩进编排,变量的命名准则要末究脆持普遍,那些皆是普及咱们编程本领的重心.正在举止课程安排的历程中咱们也教到了许多别的物品.最先,咱们教会了合做,要以他人的视线瞅瞅问题,也许那样得到的会比各得意到的皆要多;其次,咱们教会了单干,单干是为了更佳天合做,单干才搞普及合做的效用;末尾,咱们教会了搏斗,咱们疑赖,通过四年的教习,咱们一定能写出更粗彩的步调,将去会描画出更粗彩的人死.正在那里,咱们要感动指挥课程安排的弛凤君教授,赋予咱们粗心的指挥.教授多次询问编写进程,并为咱们指面迷津,助闲咱们启拓钻研思路,粗心面拨、关切饱励.教授敷衍了事的处事做风,宽紧供真的做风,踩踩真真的粗神,不然而受尔以文,而且教尔搞人,给以末死受益无贫之讲.尔还要感动咱们启垦小组的其余共教,正在安排中他们给尔很大的助闲.正是由于咱们团结协做,才成功的完毕了课程安排任务.八.程序浑单/*贪吃蛇游戏步调浑单*/#include<stdio.h>#include<string.h>#include<time.h>#include<bios.h>#include<graphics.h>#include<conio.h>#include<stdlib.h>#include<dos.h>#define filename "c:\\person.dat" /*排止榜文献的文献齐名*/#define esc 0x011b /*esc键*/#define n 200 /*蛇的最大节数*/#define left 0x4b00 /*左移目标键*/#define right 0x4d00 /*左移搁背键*/#define down 0x5000 /*下移目标键*/#define up 0x4800 /*上移目标键*//*排止榜结构体*/struct person{int score; /*游戏者分数*/char name[20]; /*游戏者姓名*/}per[5];/*小蘑菇结构体*//*自定义的函数声明*/void drawmogu(); /*动画音乐函数*/void readfiles(); /*从文献中读与记录疑息*/void writefiles(struct person *) ; /*将记录写进文献中*/void initscorefiles(); /*初初化记录文献*/void comparescore(struct person); /*排止榜按分数举止排序*/void endplay(); /*游戏中断处理函数*/void paihb(); /*画造排止榜函数*//*输出欢迎词汇并播搁声音函数*/void pr(){ int s[15]={0,100,150,200,250,300,250,150,100,250,350};setcolor(change/10);/*改变欢迎词汇颜色*/settextstyle(0,0,4);outtextxy(20,200,"WELCOME TO OUR GAME");/*输出欢迎词汇*/sound(s[change/10]);/*使扬声器以括号内的频次收声*/}/*下雪的动画并共步播搁音乐函数*/void DrawSnow(){ int i;int sx[62];selinestyle(SOLID_LINE,0,THICK_WIDTH);line(1,1,9,9);/*一次3止画出红色雪花的3条线*/line(0,5,10,5);line(9,1,1,9);save=malloc(200);/*正在堆中申请200字节空间*/getimage(0,0,10,10,save);/*将雪花位图保存到save中*/cleardevice();/*浑屏*/randomize();/*树坐随机种子数*/for(i=0;i<62;i++)sx[i]=(i+2)*10/*估计雪花位子的横坐标数组*//*以下的键控while循环统造播搁音乐战下雪动画*/while(!kbhit())/*如果已按键,真止循环体*/{ Pr();/*调用Pr函数输出欢迎词汇并播搁声音*/if(snownum!=100){snow[snownum].speed=2+random(5);i=random(62);snow[snownum].x=sx[i];/*与横坐标*/snow[snownum].y=10-random(100);/*与纵坐标*/}/*循环搁置snownum个雪花*/for(i=0;i<snownum;i++)putimage(snow[i].x,snow[i].y,save,COPY_PUT);delay(100);/*延缓100ms以便瞅到雪花*/cleardevice();/*浑屏*/Pr(); /*调用Pr函数输出欢迎词汇并播搁声音*/if(snownum !=100) snownum++;setfillstyle(SOLID_FILL,15);for(i=0;i<snownum;i++) /*循环画出snownum个雪花*/{ snow[i].y+=snow[i].speed;putimage(snow[i].x,snow[i].y,save,COPY_PUT);if(snow[i].y>500)snow[i].y=10-random(200);}change++;if(change==140) change=10;}nosound(); /*关关扬声器*/cleardevice();/*浑屏*/}/*图像系统初初化函数*/void init(void){ int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc3\\BGI");cleardevice(); /*浑屏*/}/*游戏启初界里,左上角坐标为(50,40),左下角坐标(610,460)的围墙*/ void drawk(void){int i;setcolor(BLUE);setlinestyle(SOLID_LINE,0,THICK_WIDTH); /*树坐线性*/for(i=50;i<=600;i+=10) /*用循环画围墙*/{setcolor(2*i+1);circle(i,40,5); /*画上边*/circle(i,451,5);circle(i,460,5); /*画下边*/}for(i=40;i<=450;i+=10){setcolor(2*i+1);circle(50,i,5); /*画左边*/circle(601,i,5);}for(i=40;i<=460;i+=10){setcolor(2*i+1);circle(41,i,5); /*画左边*/circle(610,i,5);}setcolor(LIGHTCYAN);setlinestyle(SOLID_LINE,0,THICK_WIDTH);outtextxy(20,5," GREEDY SNAKE GAMES ji 11_1"); /*输出版本*/ outtextxy(480,10,"score level "); /*输出此文本*/}/*玩游戏简曲历程*/void gameplay(void){food.yes=1; /*0表示苹果已经存留,1表示需要出现新苹果*/snake.life=0; /*蛇活着*/int level=1; /*记录游戏品级*/char buffer[10]; /*字符数组用于变换整形数据*/randomize(); /*树坐随机数的种子数*/snake.direction=1; /*目标背左*/snake.x[0]=110;snake.y[0]=100; /*蛇头坐标初值*/snake.x[1]=100;snake.y[1]=100; /*蛇身1节坐标初值*/snake.x[2]=90;snake.y[2]=100; /*蛇身2节坐标初值*/snake.node=3; /*蛇节数初值*/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);setfillstyle(SOLID_FILL,GREEN);circle(food.x,food.y,5);fillellipse(food.x,food.y,5,5);}setfillstyle(1,BLUE);bar(475,18,590,35); /*画出隐现分数及关数蓝色矩形条*/setcolor(WHITE);itoa(score,buffer,10); /*将整形数据分数变换成字符串*/outtextxy(480,20,buffer); /*输出分数*/itoa(level,buffer,10); /*将整形数据关数变换成字符串*/outtextxy(560,20,buffer); /*输出关数*//*循环使蛇的每一节往前移动,那是贪吃蛇的“关键算法”*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1、2、3、4表示左、左、上、下四个目标,通过那个推断去移动蛇头*/ switch(snake.direction){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;}/*推断蛇是可碰到墙*/if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<45||snake.y[0]>445){snake.life=1; /*置蛇死标记*/break;}/*从蛇的第四节启初推断是可碰到自己,*/for(i=3;i<snake.node;i++){ if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){snake.life=1; /*置蛇死标记*/break;}}if(snake.life==1) /*以上二种推断以去,如果蛇死便跳出内循环*/break; /*跳出while(!kbhit)*/if(snake.x[0]==food.x&&snake.y[0]==food.y) /*吃到苹果以去*/{setcolor(BLACK); /*把画里上的苹果揩除*/circle(food.x,food.y,5);snake.node++; /*蛇的身体少一节*/food.yes=1; /*画里上需要出现新的苹果*/score+=10; /*出吃一个苹果减少10分*/if(score%50==0) /*吃够5个苹果加进下一关*/{level+=1; /*关数加1*/gamespeed-=60; /*统造速度的值缩小60,以便加赶快度*/}}setcolor(RED); /*画出红色蛇的循环*/setfillstyle(SOLID_FILL,RED); /*用圆画出红色蛇头*/fillellipse(snake.x[0],snake.y[0],5,5);setcolor(GREEN);setfillstyle(SOLID_LINE,GREEN);circle(snake.x[0],snake.y[0],1); /*对付蛇头弥补绿色小圆动做眼睛*/setcolor(RED);setfillstyle(SOLID_FILL,BLUE);for(i=1;i<snake.node;i++) /*用圆画出红色蛇身*/{setcolor(RED);setfillstyle(SOLID_FILL,BLUE);fillellipse(snake.x[i],snake.y[i],5,5); /*对付每节蛇身用蓝色弥补*/setcolor(CYAN);circle(snake.x[i],snake.y[i],1); /*用青色小圆画正在每节蛇身上*/}delay(gamespeed); /*延缓gamespeed毫秒,以便统造蛇的爬止速度*/setcolor(BLACK); /*用背景致乌色去除蛇的末尾一节*/circle(snake.x[snake.node-1],snake.y[snake.node-1],5) ;setfillstyle(SOLID_FILL,BLACK);fillellipse(snake.x[snake.node-1],snake.y[snake.node-1],5,5);}if(snake.life==1) break; /*如果蛇死便跳出循环*/key=bioskey(0); /*接支按键*/if(key==esc) break; /*按esc键退出*//*推断是可往好异的目标疏通*/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)*/} /*中断游戏*//*读与文献支配函数*/void readfiles(){FILE * fpread;/*如果文献不存留,则创造1个空文献,可则挨启该文献*/if((fpread=fopen(filename,"ab+"))==NULL){printf("cant't open the file person.dat! ");exit(0);}if(fgetc(fpread)==EOF) /*如果文献真量为空*/initscorefiles(); /*调用函数举止记录初初化处事*/rewind(fpread); /*沉新复位文献位子指针*/fread(per,sizeof(struct person),5,fpread);fclose(fpread); /*关关排止榜文献*/}/*写进文献支配函数*/void writefiles(struct person *tmp){FILE * fpwrite;/*以读写办法挨启文献,文献内本有的数据将被浑空*/if((fpwrite=fopen(filename,"wb+"))==NULL){printf("cant't open the file person.dat! ");exit(0);}fwrite(tmp,sizeof(struct person),5,fpwrite);fclose(fpwrite);}/*初初化记录函数*/void initscorefiles(){int i;struct person a[5];for(i=0;i<5;i++){a[i].score=0; /*5人的分数为0*/strcpy(a[i].name,"nobody"); /*5人的名为nobody*/}writefiles(a); /*调用记录写进函数*/}/*排序函数,如果玩家分数超出最矮记录,则将玩家分数拔出到符合的位子,共时简略本先的最矮记录 */void comparescore(struct person des)。
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语言实现贪吃蛇游戏,让学生掌握C语言编程的基本技能,培养学生的逻辑思维能力和问题解决能力。
具体的教学目标如下:1.理解C语言的基本语法和数据类型。
2.掌握C语言的运算符和表达式。
3.学习C语言的控制结构,包括条件语句和循环语句。
4.了解C语言的函数和数组。
5.能够使用C语言编写简单的程序。
6.能够使用C语言实现贪吃蛇游戏的基本功能,包括蛇的移动、食物的生成和 collision检测。
7.能够优化代码,提高游戏的性能和可读性。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力,通过小组合作完成游戏项目。
2.培养学生的创新思维和问题解决能力,鼓励学生进行游戏的创意设计和优化。
3.培养学生的学习兴趣和自信心,通过完成游戏项目感受到编程的乐趣和成就感。
二、教学内容根据课程目标,本课程的教学内容主要包括C语言的基本语法和数据类型、运算符和表达式、控制结构、函数和数组。
具体的教学大纲如下:1.第一章:C语言概述•C语言的发展历史和特点•C语言的基本语法和结构2.第二章:数据类型和运算符•基本数据类型和变量•运算符和表达式3.第三章:控制结构4.第四章:函数和数组•函数的定义和调用•一维数组和多维数组5.第五章:贪吃蛇游戏实现•蛇的移动和食物的生成•collision检测和游戏结束条件•游戏界面的设计和美化三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法。
1.讲授法:通过教师的讲解和演示,向学生传授C语言的基本语法和编程技巧。
2.讨论法:通过小组讨论和分享,培养学生的团队合作意识和沟通能力。
3.案例分析法:通过分析具体的贪吃蛇游戏案例,引导学生思考和解决问题。
4.实验法:通过编写代码和调试程序,培养学生的动手能力和问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《C语言程序设计》2.参考书:《C语言编程实例解析》3.多媒体资料:PPT课件、视频教程4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)通过以上教学资源的使用,将丰富学生的学习体验,提高学生的学习效果。
贪吃蛇c语言课程设计
贪吃蛇c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言的基本语法和编程结构,能独立编写简单的贪吃蛇游戏程序。
2. 使学生理解贪吃蛇游戏的逻辑和算法,并能运用所学知识对其进行分析和优化。
3. 帮助学生了解计算机图形处理原理,学会使用C语言进行简单的图形绘制。
技能目标:1. 培养学生运用C语言进行问题求解的能力,特别是针对游戏编程的逻辑思维和算法设计能力。
2. 提高学生分析问题和解决问题的能力,通过编写贪吃蛇游戏,熟练运用循环、条件判断等基本编程结构。
3. 培养学生团队协作和沟通能力,能够在小组合作中共同完成课程设计任务。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,培养良好的编程习惯和严谨的科学态度。
2. 培养学生面对困难和挑战时,勇于尝试、不断探索的精神,增强自信心和自我成就感。
3. 通过课程设计,引导学生体验编程带来的快乐,培养学生积极向上的学习态度和团队精神。
课程性质分析:本课程设计以实践为主,注重培养学生的动手能力和编程思维,结合贪吃蛇游戏这一趣味性课题,提高学生对C语言的兴趣。
学生特点分析:考虑到学生所在年级,已具备一定的C语言基础,但编程实践能力和问题求解能力有待提高,因此课程设计需兼顾知识巩固和技能提升。
教学要求:课程设计应注重理论与实践相结合,充分调动学生的主观能动性,鼓励学生自主探究和团队合作,以提高学生的编程能力和综合素质。
二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、控制结构(循环、分支)等基本概念。
2. 函数的定义和使用:重点复习和巩固函数的定义、调用、参数传递等知识,为编写模块化程序打下基础。
3. 数组和字符串操作:学习数组的使用,了解字符串处理的基本方法,为处理游戏中的数据结构做准备。
4. 指针的概念和应用:理解指针的基本概念,掌握指针在数组、字符串等中的应用。
5. 图形编程基础:介绍C语言图形库的使用,学习基本的图形绘制函数,如画点、画线等。
c语言贪吃蛇课程设计
c语言贪吃蛇课程设计一、课程目标知识目标:1. 学生能掌握C语言的基本语法,如变量定义、数据类型、运算符、控制结构等。
2. 学生能理解贪吃蛇游戏的逻辑和规则,运用C语言实现游戏的基本功能。
3. 学生能掌握数组的使用,实现蛇的移动、食物的随机生成和分数的统计。
技能目标:1. 学生能运用C语言编写简单的程序,具备基本的编程能力。
2. 学生能通过分析问题,设计合适的算法解决问题,培养解决问题的能力。
3. 学生能运用调试工具,查找并修正程序中的错误,提高程序调试能力。
情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣和热情,树立学习信心。
2. 学生在团队协作中,学会沟通、分享和合作,培养团队精神。
3. 学生通过编程实践,认识到编程对解决实际问题的意义,增强社会责任感。
课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握C语言的基本知识,并运用所学知识设计简单的游戏。
学生特点:学生具备一定的逻辑思维能力,对编程有好奇心,但可能缺乏实际编程经验。
教学要求:教师需注重理论与实践相结合,引导学生主动思考,激发学生的学习兴趣,培养其编程能力和团队协作能力。
在教学过程中,关注学生的学习进度,及时给予指导和鼓励,确保课程目标的实现。
将目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容根据课程目标,本课程教学内容主要包括以下几部分:1. C语言基本语法知识:变量定义、数据类型、运算符、控制结构(顺序、选择、循环)等,对应教材第1-3章。
- 变量定义和数据类型:1课时- 运算符和控制结构:2课时2. 数组的使用:一维数组、二维数组,对应教材第4章。
- 一维数组:1课时- 二维数组:1课时3. 函数的使用:函数定义、函数调用、局部变量和全局变量,对应教材第5章。
- 函数定义和调用:1课时- 局部变量和全局变量:1课时4. 贪吃蛇游戏设计:- 游戏逻辑和规则分析:1课时- 蛇的移动、食物的随机生成和分数统计:2课时- 游戏界面设计和实现:2课时5. 程序调试和优化:运用调试工具,查找并修正程序中的错误,对应教材第6章。
贪吃蛇C语言课程设计报告
贪吃蛇游戏设计姓名:**学号: ********完成日期:月日一、设计目的贪吃蛇游戏程序功能的实现主要是建立在二维数组和图形界面的应用上,通过编写游戏程序能够熟悉掌握相关数组和图形函数的运用,提高编程水平,增加编程的兴趣二、总体设计主函数↓图形驱动Init 画界面DrawK 游戏具体过程GamePlay 图形结束Close↓游戏结束GameOver 输出成绩PrScore三、详细设计(项目成员及分工、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)①主函数main():定义使用的常数,全局变量及函数原型说明,并调用Init()函数初始化图形系统;然后调用DrawK()函数画界面,调用GamePlay()函数实现游戏的具体过程,游戏结束后调用Close()函数关闭图形系统结束程序。
②画界面函数DrawK():主界面是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,设置成淡青色,背景颜色为黑色。
③游戏具体过程函数GamePlay():算法过程:a.设置初始值。
为防止食物出现在一个位置上,要设置随机数发生器,真正产生随机数。
初始时,蛇只有蛇头,设定一个开始方向;b.循环执行,直到按Esc键退出;c.没有按键的情况下,循环执行。
如果没有食物,随机出现食物;食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的;如果有食物,则显示食物,蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃到了自己,如果出现这两种情况之一,则蛇死;调用游戏结束函数GamePlay(),结束本次游戏;判断蛇吃到食物的方法是蛇头的坐标和食物的坐标都相等;如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。
在新位置画出蛇。
采用的方法是每次移动的时候从最后一节开始到倒数第二节,将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可。
c课程设计贪吃蛇代码
c 课程设计贪吃蛇代码一、教学目标本课程旨在让学生掌握贪吃蛇游戏的基本原理和编程技巧,通过学习C语言编程,培养学生的逻辑思维能力和问题解决能力。
具体目标如下:知识目标:使学生了解C语言的基本语法和编程思想,掌握贪吃蛇游戏的设计原理和实现方法。
技能目标:培养学生运用C语言编写程序的能力,提高学生的编程技巧和调试能力。
情感态度价值观目标:激发学生对计算机科学的兴趣,培养学生的创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括C语言基础知识、贪吃蛇游戏的设计原理和编程技巧。
具体安排如下:1.C语言基础知识:介绍C语言的基本语法、数据类型、运算符、控制结构等。
2.贪吃蛇游戏设计原理:讲解贪吃蛇游戏的基本概念、游戏机制和算法。
3.编程技巧:教授如何使用C语言编写程序,包括变量声明、函数定义、条件判断、循环结构等。
4.贪吃蛇游戏编程实践:指导学生动手编写贪吃蛇游戏程序,并进行调试和优化。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:讲解C语言的基本语法和编程思想,使学生掌握贪吃蛇游戏的设计原理。
2.讨论法:学生进行小组讨论,分享编程经验和解决问题的方式。
3.案例分析法:分析典型的贪吃蛇游戏案例,引导学生学会分析问题和解决问题。
4.实验法:让学生动手编写贪吃蛇游戏程序,培养学生的实际编程能力和调试能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将提供以下教学资源:1.教材:选用权威、实用的C语言编程教材,为学生提供系统性的知识学习。
2.参考书:提供丰富的参考书籍,方便学生课后自主学习。
3.多媒体资料:制作精美的PPT课件,辅助课堂教学。
4.实验设备:提供计算机实验室,让学生进行编程实践和实验操作。
五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用多种评估方式,包括平时表现、作业、考试等。
具体评估方法如下:1.平时表现:关注学生在课堂上的参与程度、提问回答等情况,给予相应的平时分。
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 贪吃蛇程序课程设计一、课程目标知识目标:1. 让学生理解贪吃蛇游戏的原理和基本算法。
2. 使学生掌握运用编程语言(如Python)编写简单的贪吃蛇程序。
3. 帮助学生掌握程序中的循环、条件判断和变量等基本概念。
技能目标:1. 培养学生运用编程解决问题的能力,提高逻辑思维和动手实践能力。
2. 培养学生团队合作意识,学会与他人共同分析问题、解决问题。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养主动探索和创新的意识。
2. 培养学生面对困难时勇于尝试、不断调整心态,形成积极向上的学习态度。
课程性质:本课程为信息技术课程,结合实际操作,注重培养学生的动手能力和逻辑思维能力。
学生特点:六年级学生具备一定的计算机操作能力,对编程有一定的好奇心,但注意力容易分散,需要结合实际案例激发学习兴趣。
教学要求:通过讲解、演示、实践相结合的方式,让学生在掌握基本知识的同时,提高编程实践能力。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 理论知识:- 简介贪吃蛇游戏的起源和发展。
- 讲解贪吃蛇程序的基本原理,包括游戏规则、程序结构等。
- 介绍编程语言(如Python)的基本语法和编程环境。
2. 实践操作:- 编写简单的贪吃蛇程序,实现蛇的移动、食物的生成等功能。
- 学习使用循环、条件判断和变量等编程元素,优化贪吃蛇程序。
- 引导学生通过团队协作,共同完成贪吃蛇程序的设计与调试。
3. 教学大纲:- 第一课时:介绍贪吃蛇游戏及编程语言,让学生了解课程内容。
- 第二课时:讲解贪吃蛇程序的基本原理,引导学生学习编程语法。
- 第三课时:实践编写贪吃蛇程序,指导学生掌握基本操作。
- 第四课时:优化贪吃蛇程序,提高学生编程技能和团队协作能力。
4. 教材章节:- 《信息技术》六年级上册:第三章 计算机编程,第三节 常用编程语言。
教学内容安排和进度:本课程共4课时,每课时45分钟。
第一、二课时为理论讲解,第三、四课时为实践操作。
c程序贪吃蛇课程设计
c程序贪吃蛇课程设计一、课程目标知识目标:1. 学生能理解C语言中数组、函数、循环和条件语句的基本概念及应用。
2. 学生能够运用C语言编写简单的贪吃蛇游戏,理解游戏逻辑和程序结构。
3. 学生了解如何在C程序中处理键盘输入和图形界面输出。
技能目标:1. 学生掌握利用C语言进行结构化编程,培养解决问题的能力。
2. 学生能够运用调试工具检查和修正程序中的错误,提高程序调试能力。
3. 学生通过团队协作完成项目,提高沟通与协作能力。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习计算机科学的热情。
2. 学生通过编写游戏程序,体会编程的乐趣和挑战,形成积极的学习态度。
3. 学生在团队协作中学会相互尊重、支持和鼓励,培养集体荣誉感。
课程性质分析:本课程为实践性较强的课程设计,通过贪吃蛇游戏的开发,让学生将所学的C 语言知识应用于实际项目中,提高编程能力和实际问题解决能力。
学生特点分析:考虑到学生为初学者,课程设计将从简单到复杂逐步引导,使学生在已有知识基础上,逐步掌握C语言的高级应用。
教学要求:1. 教师应注重理论与实践相结合,指导学生完成课程设计。
2. 教学过程中,强调学生自主探究和团队协作,培养学生独立思考和解决问题的能力。
3. 教师应及时给予反馈,帮助学生不断调整和完善课程设计,提高学习效果。
二、教学内容1. C语言基础知识复习:数组、函数、指针、循环和条件语句等基本概念。
相关教材章节:第1章-第4章2. 游戏逻辑设计:- 蛇的移动原理。
- 食物的随机生成。
- 判断撞墙和自撞逻辑。
相关教材章节:第6章-第7章3. 图形界面输出:- 使用标准库函数进行图形界面输出。
- 蛇和食物的图形表示。
相关教材章节:第9章4. 键盘输入处理:- 键盘事件监听。
- 响应按键改变蛇的移动方向。
相关教材章节:第8章5. 程序结构设计:- 模块化编程,划分功能函数。
- 程序流程控制。
相关教材章节:第5章6. 调试与优化:- 使用调试工具进行程序调试。
c贪吃蛇设计课程设计
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程序课程设计贪吃蛇
c程序课程设计贪吃蛇一、教学目标本章节的教学目标是让学生掌握C程序设计的基本知识,学会使用C语言编写简单的程序,并通过编写“贪吃蛇”游戏,提高学生的编程能力和逻辑思维能力。
1.掌握C语言的基本语法和数据类型。
2.学会使用C语言进行控制结构和函数的编写。
3.了解C语言的面向对象编程思想。
4.能够使用C语言编写简单的程序。
5.能够运用面向对象编程思想进行程序设计。
6.能够独立完成“贪吃蛇”游戏的编写。
情感态度价值观目标:1.培养学生对计算机编程的兴趣和热情。
2.培养学生解决问题的能力和团队协作精神。
3.培养学生遵守编程规范和道德准则的意识。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、控制结构、函数和面向对象编程思想。
通过编写“贪吃蛇”游戏,让学生将这些知识点运用到实际编程中。
1.C语言的基本语法和数据类型。
2.控制结构的使用和面向对象编程思想。
3.函数的编写和调用。
4.“贪吃蛇”游戏的编写和调试。
教材章节:《C程序设计原理与应用》(第1章至第4章)三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式。
1.讲授法:通过讲解C语言的基本语法、数据类型、控制结构和函数等内容,使学生掌握C语言的基础知识。
2.案例分析法:通过分析“贪吃蛇”游戏的编程案例,使学生了解如何将所学知识点运用到实际编程中。
3.实验法:让学生动手编写“贪吃蛇”游戏,提高学生的编程能力和解决问题的能力。
四、教学资源本章节的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:《C程序设计原理与应用》2.参考书:《C语言程序设计》3.多媒体资料:C语言编程教程视频4.实验设备:计算机、编程软件(如Visual Studio、Code::Blocks等)五、教学评估本章节的评估方式包括平时表现、作业和考试三个方面,以保证评估的客观性和公正性,全面反映学生的学习成果。
1.平时表现:通过课堂参与、提问、小组讨论等方式评估学生的学习态度和积极性。
C语言“贪吃蛇”程序设计报告
山东交通学院C语言课程设计贪吃蛇游戏编程院(系)别信息工程系班级学号姓名指导教师时间2011-03-28—2011-04-01课程设计任务书题目贪吃蛇游戏编程系 (部) 信息工程系专业班级学生姓名学号03 月 28 日至 04 月 01 日共 1 周指导教师(签字)系主任(签字)年月日成绩评定表目录一.摘要 (06).二.题目要求 (07)三.设计思想 (07)四.数据结构设计及用法说明 (07)五.程序描述 (08)六.程序流程图 (09)七.程序源代码及注释 (11)八.运行结果 (23)九.课程设计总结 (25)十.参考文献 (26)5一.摘要:食いしん坊な蛇ゲームは1つのすばらしくて小さいゲームで、当設計は3つの等級に分けます。
1匹の蛇は閉鎖的な塀の中で、塀の中で無作為の出現の1つの食品、キーボードの4つのカーソルキーによってを通じて(通って)上下左右の4つの方向のモバイルに蛇を制御して、スネークヘッドは食品をぶつかって倒して、食品は食べてしまわれて、蛇の体の長さの1節(つ)、同時に等級は1のために1分計算して、等級は2のために2分計算して、等級は3のために3分計算します。
引き続いてまた食品が現れて、蛇が食べにくることを待って、もし蛇はモバイル中で壁あるいは体の交差するスネークヘッドにぶつかって自分の体のゲームオーバーをぶつかって倒すならば。
索引のキーワー:ド:食いしん坊な蛇プログラミングします6二.题目要求A 用键盘的方向键控制蛇的上下左右移动。
B 游戏分为三种难度,SLUG为慢速,每吃一朵花得1分;WORM为中速,每吃一朵花得2分;PYTHON为快速,每吃一朵花得3分。
C 游戏目标:操纵屏幕上那条可爱的小蛇,在黑框中不停吃花,而每吃一朵花,蛇的身体都变的更长一些,游戏的难度也会随之加大。
D 游戏终止:终止条件1——蛇头撞到墙上;终止条件2——蛇身形成一个圈,也就是蛇头碰到自身的任何一处。
贪吃蛇游戏c课程设计
贪吃蛇游戏c 课程设计一、课程目标知识目标:1. 学生能理解并掌握编程语言的基本语法和结构,特别是Python语言的基本操作和流程控制。
2. 学生能运用所学知识,创建并完善一个简易的贪吃蛇游戏,包括蛇的移动、食物的生成和得分机制。
3. 学生理解二维数组的使用,并能将其应用于游戏界面的构建。
技能目标:1. 学生通过编写代码,培养逻辑思维和问题解决能力,提高编程实践技能。
2. 学生学会运用调试工具,能够自主发现并修正程序中的错误。
3. 学生能够合作完成项目,培养团队协作能力和沟通技巧。
情感态度价值观目标:1. 学生培养对计算机科学的兴趣和热情,认识到编程对于未来发展的重要性。
2. 学生在编程实践中体会失败与成功,培养面对困难的坚持和克服能力。
3. 学生通过小组合作,学会尊重他人意见,共享成果,增强集体荣誉感。
课程性质:本课程为信息技术课程,通过实践操作使学生掌握编程技能,培养创新思维。
学生特点:学生为初中年级,对新鲜事物充满好奇,动手能力强,但注意力集中时间有限。
教学要求:教学应注重实践与理论相结合,关注个体差异,鼓励学生探索和创造,确保每个学生都能参与并完成任务。
教学过程中,应将目标具体化为可观察的学习成果,便于进行有效的教学设计和学习成效评估。
二、教学内容本课程依据课程目标,结合教材内容,主要包括以下部分:1. Python基础语法:变量、数据类型、运算符、条件语句和循环语句,让学生掌握编程的基本结构。
- 教材章节:第一章 Python基础2. 列表和二维数组:介绍列表的基本操作,二维数组在游戏中的应用,为构建游戏界面打下基础。
- 教材章节:第二章 数据结构3. 函数和模块:学习编写函数,实现代码的模块化,提高代码的可读性和可维护性。
- 教材章节:第三章 函数与模块4. 图形用户界面(GUI):利用Python的图形库,如Tkinter,设计贪吃蛇游戏的用户界面。
- 教材章节:第四章 图形用户界面5. 游戏设计:结合以上知识,设计并实现一个简易的贪吃蛇游戏,包括蛇的移动、食物的生成、得分和游戏结束条件。
c贪吃蛇程序课程设计
c 贪吃蛇程序课程设计一、课程目标知识目标:1. 学生能理解并掌握贪吃蛇游戏的基本原理和编程逻辑;2. 学生能运用所学编程知识,独立编写并调试一个简单的贪吃蛇程序;3. 学生能理解并运用坐标定位、方向控制、碰撞检测等编程概念。
技能目标:1. 学生能够运用编程语言(如Python)实现贪吃蛇游戏的基本功能;2. 学生通过编写贪吃蛇程序,培养逻辑思维和问题解决能力;3. 学生通过团队协作,提高沟通与协作能力。
情感态度价值观目标:1. 学生对编程产生兴趣,培养主动学习和探索的精神;2. 学生在编写程序过程中,树立正确的价值观,认识到编程对生活的影响;3. 学生通过完成课程任务,增强自信心和成就感,激发进一步学习编程的热情。
课程性质:本课程为信息技术课程,旨在通过实践操作,让学生掌握编程基础知识和技能。
学生特点:六年级学生,具备一定的计算机操作能力,好奇心强,喜欢尝试新事物。
教学要求:结合学生特点,注重实践操作,鼓励学生动手编写程序,培养其编程兴趣和技能。
在教学过程中,关注学生的个体差异,提供适当的指导和帮助,确保每位学生都能达到课程目标。
通过课程学习,使学生能够将所学知识应用于实际编程任务,实现具体的学习成果。
二、教学内容1. 引入编程思维:介绍编程的基本概念,如算法、程序等,通过案例展示编程在生活中的应用,引发学生兴趣。
2. 编程环境搭建:指导学生安装并熟悉编程环境(如Python解释器和IDLE),了解编程工具的基本操作。
3. 基本语法讲解:讲解Python基本语法,如变量定义、数据类型、控制结构(if判断、循环)等,为学生编写贪吃蛇程序打下基础。
4. 贪吃蛇游戏原理分析:讲解贪吃蛇游戏的基本规则、原理,分析游戏中的坐标定位、方向控制、食物生成、碰撞检测等关键功能。
5. 编写贪吃蛇程序:按照以下步骤进行:a. 创建游戏窗口和蛇、食物对象;b. 实现蛇的移动、转向功能;c. 实现食物的随机生成;d. 实现碰撞检测和游戏结束逻辑;e. 优化程序,添加计分、速度等功能。
c贪吃蛇程序课程设计
c 贪吃蛇程序课程设计一、教学目标本课程旨在通过编写“贪吃蛇程序”,让学生掌握C语言编程的基本语法,理解面向对象编程的基本思想,提高问题解决能力,培养逻辑思维和团队合作精神。
1.掌握C语言的基本语法。
2.理解面向对象编程的基本概念。
3.学习使用数据结构实现贪吃蛇游戏。
4.能够使用C语言编写简单的程序。
5.能够使用面向对象的方式设计程序。
6.能够独立或团队合作完成贪吃蛇游戏的编写。
情感态度价值观目标:1.培养对编程的兴趣和热情。
2.培养团队合作和解决问题的能力。
3.培养严谨的科学态度和良好的编程习惯。
二、教学内容本课程的教学内容主要包括C语言的基本语法、面向对象编程思想和贪吃蛇游戏的设计与实现。
1.C语言的基本语法:数据类型、变量、运算符、控制结构等。
2.面向对象编程:类与对象、构造函数、成员函数、继承与多态等。
3.贪吃蛇游戏设计与实现:游戏逻辑、数据结构选择、算法实现等。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解C语言的基本语法和面向对象编程的基本概念。
2.案例分析法:通过分析已有的贪吃蛇游戏代码,让学生理解游戏的设计与实现。
3.实验法:让学生通过编写代码,实践贪吃蛇游戏的制作,巩固所学知识。
四、教学资源1.教材:选择适合初中生的C语言编程教材。
2.多媒体资料:提供相关的编程教程和贪吃蛇游戏的示例代码。
3.实验设备:提供计算机和网络环境,让学生能够在线编程和测试。
五、教学评估本课程的评估方式包括平时表现、作业、考试和项目演示。
1.平时表现:评估学生在课堂上的参与度、提问回答和团队合作表现。
2.作业:布置编程练习,评估学生的编程能力和理解程度。
3.考试:进行期中和期末考试,评估学生的综合理解和应用能力。
4.项目演示:学生团队合作编写贪吃蛇程序,进行演示,评估学生的实践能力。
评估方式应客观、公正,能够全面反映学生的学习成果。
教师应及时给予反馈,帮助学生提高。
贪吃蛇c程序课程设计
贪吃蛇 c程序课程设计一、课程目标知识目标:1. 理解C语言中数组、指针、函数等基本概念,并能够运用到程序设计中;2. 掌握C语言中控制台输入输出、字符图形显示等基本操作;3. 学习贪吃蛇游戏的逻辑设计,理解游戏中的数据结构和算法。
技能目标:1. 能够编写简单的C程序,实现贪吃蛇游戏的基本功能;2. 学会运用数组管理游戏中的蛇和食物;3. 学会使用指针操作数组,实现蛇的移动和增长;4. 提高问题分析能力,能够将实际问题转化为程序设计中的数据结构和算法。
情感态度价值观目标:1. 培养学生热爱编程,主动探索新知识的精神;2. 培养学生的团队协作意识,学会与他人分享和交流;3. 增强学生的自信心,敢于面对和解决问题;4. 培养学生良好的编程习惯,注重代码规范和优化。
课程性质:本课程为实践性较强的编程课程,通过贪吃蛇游戏的设计,让学生在实际操作中掌握C语言编程技巧。
学生特点:学生已经具备一定的C语言基础,对编程感兴趣,但可能缺乏实际项目经验。
教学要求:教师应注重理论与实践相结合,引导学生主动思考,培养学生解决问题的能力。
在教学过程中,关注学生的个体差异,提供个性化指导。
通过课程学习,使学生能够达到上述课程目标,实现具体的学习成果。
二、教学内容1. C语言基础知识复习:数组、指针、函数的定义和使用方法,重点回顾数组操作和指针与数组的关系。
相关教材章节:第3章 数组与字符串,第4章 指针,第6章 函数。
2. 控制台输入输出操作:printf、scanf函数的使用,以及清屏、光标定位等控制台操作。
相关教材章节:第2章 C语言基础,第7章 输入输出。
3. 游戏逻辑设计:介绍贪吃蛇游戏的基本规则、数据结构(如链表表示蛇身)和算法(如移动、碰撞检测)。
相关教材章节:第8章 结构体与链表,第10章 排序与查找。
4. 编程实践:指导学生编写贪吃蛇游戏程序,实现以下功能:a. 游戏初始化,包括蛇和食物的生成;b. 键盘控制蛇的移动;c. 判断蛇吃到食物,实现蛇身的增长;d. 判断游戏结束条件,如蛇撞墙或撞到自身。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C 语言课程设计(小游戏贪吃蛇的程序设计报告)设计人:班级:201 年月号目录一:概述1:研究背景及意义2:设计的任务与需要知识点3:具体完成设计内容二:需求分析1:功能需求2:操作方法三:总体设计1:模块划分2:数据结构设计四:详细设计1:主空摸块设计2:绘制游戏界面3:游戏的具体过程4:游戏的结束处理5:显示排行榜信息模块五:程序的调试与测试1:动画与音乐同步2:蛇的运行3:终止程序六:结论七::结束语八:程序清单九:参考文献一. 概述本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。
1、1 研究的背景及意义随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。
人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。
而此时一款可以随时随地娱乐的游戏成为了人们的需要。
此次课程设计完成的贪吃蛇小游戏,正就是为了满足上述需求而设计出来的。
贪吃蛇游戏虽小,却设计诸多的知识点。
通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的与那个发,技术与工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习与将来实际软件开发打下坚实的基础。
1、2 设计的任务与需要的知识点1、2、1 课程设计主要完成的任务1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。
2) 有同步播放动画,声音效果。
3) 设计好数组元素与蛇,食物的对应关系。
4) 随机产生食物。
5) 有分数统计,排行榜,分数存储等功能。
通过此次课程设计,希望使读者能更深入的理解与掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题与解决问题的能力。
1、2、2需要掌握与运用的知识点1、2、3本次课程设计需要掌握与运用如下的知识点:1) 数组的应用。
2) 全局变量的使用。
3) 按键处理。
4)结构体的应用。
5)图形,音乐与动画的有关知识。
6)随即函数的使用。
7)文件的基本出操作。
8) 结构化,模块化的设计方法。
1、3具体完成的设计内容在本次课程设计中需要完成的任务有:包含命令,全局变量的定义与宏定义,函数声明等(50行),主控模块(MAIN函数,14行),动画,音乐播放模块(DRAWSNOW函数,33行),画出游戏开始界面模块,具体游戏过程模块,游戏结束处理模块。
开发中工作量约为215行源代码。
二、需求分析贪吃蛇游戏就是个简单的小游戏,能让游戏者的身心得到娱乐,从而能够更好地投入到学习或工作当中。
虽然现在市面上出来这各种各样的游戏版本,可就是贪吃蛇这类的小游戏其市场还就是相当大的,因为它玩法简单易行,不论就是手机,还就是小游戏机,都能很顺利的运行。
对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏就是行不通的,这样的小游戏刚好迎合了她们的需求。
2、1功能的需求要开发贪吃蛇游戏程序,首先要分析改程序应实现哪些功能。
对贪吃蛇游戏程序的功能需求可描述如下:程序运行后显示动画,音乐,按ESC键退出游戏界面后,左边有一个矩形区,外游戏区域,在矩形区中有食物与贪食蛇,上方有统计分数及关数显示区域。
蛇在封闭围墙利用绿色矩形表示,围墙里随机的出现一个食物,通过按键盘四个光标键控制蛇向上,下,左右四个方向移动,蛇头撞到食物,则食物被吃掉,蛇身体长一节,接着又出现食物,等待蛇来吃。
食物用一个点表示,并且每次食物的位置都就是随机出现的。
游戏中要使贪吃蛇尽可能的长,但就是不能使贪吃蛇撞到四周的墙壁,而且蛇的身体不能撞到一起,否则游戏结束。
游戏中每吃掉一个食物要有积分,随着分数的增加可进入下一关,即使速度会加快。
游戏结束时,如果分数进入前5名则重新排榜并存储。
显示排行榜。
由于有关贪吃蛇与食物的数据较多,而且关系密切,贪吃蛇及食物都就是定义结构体数据类型,这样定义便于操作与处理。
2、2 操作方法2、2、1、进入游戏2、2、2、游戏界面2、2、3、游戏操作2、2、4、游戏结束三总体设计确定贪吃蛇游戏体系结构,给出总体模块结构图,确定程序的主要函数及之间的调用关系,同时设计蛇与游戏者等的数据结构。
3、1 模块划分本程序采用结构化程序设计的方法,按照自顶向下,逐步细化的方法对要解决的问题进行逐层分解。
首先画出顶层模块,即主控模块,之完成对下层模块的调用功能,即调用其她的功能模块;接着,按需求分析中的功能需求设计第一层模块,有音乐动画,图形驱动,画主界面,游戏过程,结束处理,退出等第6个主要功能;接着,画出第二层模块。
总体模块结构如图6-1所示。
3、1、1、主控模块。
3、1、2、动画音乐模块3、1、3、画主界面模块3、1、4、游戏过程模块3、1、5、游戏结束处理模块3、1、6、读取记录模块3、1、7、成绩排序模块3、1、8、写入文件模块3、1、9、排行榜模块3、1、10、退出3、2 总体数据结构设计设计思路:测序的关键在于表示蛇的图形及蛇的移动。
用一个小局限性方块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头业用同样的一节小矩形方块表示移动时必须从蛇可以上向前爬行,档案下有效方向键后,应先确定蛇头的位置,而后蛇的身体虽蛇头移动,图形的实现就是从身体新位置开始画出蛇。
这时,由于未清屏的原因,原来的蛇的位置与新蛇的位置差一节蛇身,即瞧起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
食物的出现与消失意识画矩形块与覆盖矩形块。
为了便于理解,定义两个结构体:食物与蛇。
下面介绍贪吃蛇游戏程序的主要数据结构。
3、2、1 食物与蛇的数据结构表示食物与蛇的矩形块设计为10*10个像素单位,食物的基本数据域为它所出现的位置,用X与Y坐标表示,则矩形块用函数RECTANGLE(X,Y,X+10,Y+10)或RECTANGLE(X,Y,X+10,Y-10)可以画出。
由于每次只出现一个食物,所以设定YES表示就是否需要出现食物。
YES=1表示没有食物或食物已经被蛇吃掉,需要画出食物。
放置食物后,置YES=0。
蛇的一节身体为一个矩形块,表示矩形块只需左上角点坐标(X,Y)。
由于在游戏过程中蛇的身体不断增长,需用数组存放每节坐标,最大设定为N=200,NODE表示当前节数。
DIRECTION就是保存蛇的移动方向的变量,其值可为1、2、3、4之一,分别表示右、左、上、下的方向。
LIFE就是表示生命的变量,LIFE=0表示蛇活着,一旦LIFE=1,一旦LIFE=1,表示蛇死,结束游戏。
#define N 200Struct Food{ int x;int y;Int yes;}food;Struct Snake{ int x[N];Int y[N];Int node;Int derection;Int life;}snake;3、2、2 排行榜中优胜者的数据结构排行榜主要记录优胜者的姓名与成绩。
为了存放排行榜信息,可定义如下的结构体类型,其中字符数组name成员存放优胜者的姓名,整型变量score成员存放优胜者的成绩。
Struct person{ char name[20];Int score;};3、2、3 其她全局变量的定义Struct person per[5];Int score=0;Int gamespeed=400;3、2、4 符号常量的宏定义#define LEFT 0x4b00;#define RIGHT 0x4d00;#define DOWN 0x5000;#define UP 0x4800#define ESC 0x011b#define四、详细设计根据总体设计的模块功能与结构,完成所承担的程序模块的算法设计。
给出每个模块的详细的算法,算法分别用传统流程图与文字说明来描述。
4、1 主控模块main函数主函数就是程序的主控模块。
首先初始化图形系统,然后使用drawsnow函数播放动画与声音,接着调用init函数初始化图形系统,之后调用drawk函数画出游戏开始画面,在调用gameplay函数,即开始了游戏的具体过程,游戏结束后调用endplay函数进行游戏结束处理;从文件中读取记录信息,排序,显示排行榜信息,最后关闭图形系统,结束程序。
主控模块的流程图如图6-2所示。
其中带有两个竖线的矩形框表示对自定义函数的调用。
4、2 绘制游戏开始界面drawk函数绘制游戏界面的函数的算法流程图如图6-3所示。
主界面就就是一个封闭的围墙,用两个循环语句分别在水平方向与垂直方向输出连续的宽度与高的均为10个像素单位的距行小方块,围成封闭图形表示围墙,为了醒目,设置为淡青色,用函数setlinestyle设直线型宽度为3个像素,设置3个像素的围墙线,。
最后,在界面的左上部输出游戏程序的版本信息,在右上部输出游戏成绩(score)与关(level)的表头。
4、3 游戏具体过程gameplay函数该函数就是游戏的核心部分。
游戏具体过程gameplay函数的大致算法流程图如图6-4所示。
下面对该算法不够详细的地方作进一步的描述。
4、3、为防止食物总就是出现在一个位置上,要设置随机数发生器的种子数,产生真正的随机数。
由于还没有画出食物,并设置需要食物,并设置蛇活着。
初始时,蛇只有蛇头与1节蛇尾,设置这2节坐标。
设定蛇开始的爬行方向左右。
4、3、2 随机确定食物位置由于蛇吃到食物的判断就是蛇头的坐标与食物的坐标相等,所以要确保食物出现的位置在10的倍数位置上。
先用两个带随机函数的表达式产生一个位于围墙内的x、y坐标,然后用两个while循环将两个坐标值调整到10的倍数上,这样就可以让蛇吃到。
4、3、3 循环确定蛇身的新坐标这里的难点就是表示蛇的新位置并消除前一次的图形。
采用的方法就是每次移动的时候从最后一节开始到第二节,将前一节的坐标值赋给后一节的坐标,移动后只要把最后一节用背景色擦出即可,因为新位置0到n-1节还就是要出现在画面上的。
这里用一个for循环来确定蛇身的新坐标。
4、3、4 吃到食物后的处理蛇吃到食物后,首先将食物擦除,即用背景色画出该食物,然后给蛇的节数加1,设置需要食物标志,就是游戏成绩加10分,如果成绩达到50分的倍数,则给关数加1,并加快游戏速度。
4、3、5 有按键判断蛇的方向这就是一个内嵌的嵌套的条件选择结构,根据安东上下左右键来设定蛇的移动方向。