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

合集下载

原创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语言贪吃蛇课程设计报告摘要本报告介绍了一个基于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语言贪吃蛇课程设计一、教学目标本课程旨在通过学习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语言课程设计

贪吃蛇c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言的基本语法和编程结构,能独立编写简单的贪吃蛇游戏程序。

2. 使学生理解贪吃蛇游戏的逻辑和算法,并能运用所学知识对其进行分析和优化。

3. 帮助学生了解计算机图形处理原理,学会使用C语言进行简单的图形绘制。

技能目标:1. 培养学生运用C语言进行问题求解的能力,特别是针对游戏编程的逻辑思维和算法设计能力。

2. 提高学生分析问题和解决问题的能力,通过编写贪吃蛇游戏,熟练运用循环、条件判断等基本编程结构。

3. 培养学生团队协作和沟通能力,能够在小组合作中共同完成课程设计任务。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,培养良好的编程习惯和严谨的科学态度。

2. 培养学生面对困难和挑战时,勇于尝试、不断探索的精神,增强自信心和自我成就感。

3. 通过课程设计,引导学生体验编程带来的快乐,培养学生积极向上的学习态度和团队精神。

课程性质分析:本课程设计以实践为主,注重培养学生的动手能力和编程思维,结合贪吃蛇游戏这一趣味性课题,提高学生对C语言的兴趣。

学生特点分析:考虑到学生所在年级,已具备一定的C语言基础,但编程实践能力和问题求解能力有待提高,因此课程设计需兼顾知识巩固和技能提升。

教学要求:课程设计应注重理论与实践相结合,充分调动学生的主观能动性,鼓励学生自主探究和团队合作,以提高学生的编程能力和综合素质。

二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、控制结构(循环、分支)等基本概念。

2. 函数的定义和使用:重点复习和巩固函数的定义、调用、参数传递等知识,为编写模块化程序打下基础。

3. 数组和字符串操作:学习数组的使用,了解字符串处理的基本方法,为处理游戏中的数据结构做准备。

4. 指针的概念和应用:理解指针的基本概念,掌握指针在数组、字符串等中的应用。

5. 图形编程基础:介绍C语言图形库的使用,学习基本的图形绘制函数,如画点、画线等。

C语言贪吃蛇实验报告

C语言贪吃蛇实验报告

C语言程序设计实训报告姓名专业班级指导教师2011 年7月14日目录一.实训目的和要求....................................................................... 1二.实训任务内容........................................................................... 1三.详细设计说明........................................................................... 1四.软件使用说明........................................................................... 3五.实训心得与体会....................................................................... 3六.参考文献................................................................................... 5七.部分程序清单(带有详细的注释)....................................... 6八.程序结果............................................................................... 10一.实训目的和要求1.实训目的本实训是软件技术专业重要的实践性环节之一,是在学生学习完《C语言程序设计》课程后进行的一次全面的综合练习。

本实训的目的和任务:(1). 巩固和加深学生对C语言课程的基本知识的理解和掌握(2). 掌握C语言编程和程序调试的基本技能(3). 利用C语言进行基本的软件设计(4). 掌握书写程序设计说明文档的能力(5). 提高运用C语言解决实际问题的能力2.实训要求(1). 分析实训题目的要求(2). 写出详细设计说明(3). 编写程序代码,调试程序使其能正确运行(4). 设计完成的软件要便于操作和使用(5). 设计完成后提交实训报告二.实训任务内容设计贪吃蛇游戏玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁游戏结束。

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 贪吃蛇游戏课程设计一、课程目标知识目标: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 贪吃蛇程序课程设计一、课程目标知识目标:1. 让学生理解贪吃蛇游戏的原理和基本算法。

2. 使学生掌握运用编程语言(如Python)编写简单的贪吃蛇程序。

3. 帮助学生掌握程序中的循环、条件判断和变量等基本概念。

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

2. 培养学生团队合作意识,学会与他人共同分析问题、解决问题。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养主动探索和创新的意识。

2. 培养学生面对困难时勇于尝试、不断调整心态,形成积极向上的学习态度。

课程性质:本课程为信息技术课程,结合实际操作,注重培养学生的动手能力和逻辑思维能力。

学生特点:六年级学生具备一定的计算机操作能力,对编程有一定的好奇心,但注意力容易分散,需要结合实际案例激发学习兴趣。

教学要求:通过讲解、演示、实践相结合的方式,让学生在掌握基本知识的同时,提高编程实践能力。

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

二、教学内容1. 理论知识:- 简介贪吃蛇游戏的起源和发展。

- 讲解贪吃蛇程序的基本原理,包括游戏规则、程序结构等。

- 介绍编程语言(如Python)的基本语法和编程环境。

2. 实践操作:- 编写简单的贪吃蛇程序,实现蛇的移动、食物的生成等功能。

- 学习使用循环、条件判断和变量等编程元素,优化贪吃蛇程序。

- 引导学生通过团队协作,共同完成贪吃蛇程序的设计与调试。

3. 教学大纲:- 第一课时:介绍贪吃蛇游戏及编程语言,让学生了解课程内容。

- 第二课时:讲解贪吃蛇程序的基本原理,引导学生学习编程语法。

- 第三课时:实践编写贪吃蛇程序,指导学生掌握基本操作。

- 第四课时:优化贪吃蛇程序,提高学生编程技能和团队协作能力。

4. 教材章节:- 《信息技术》六年级上册:第三章 计算机编程,第三节 常用编程语言。

教学内容安排和进度:本课程共4课时,每课时45分钟。

第一、二课时为理论讲解,第三、四课时为实践操作。

贪吃蛇游戏课程设计报告

贪吃蛇游戏课程设计报告贪吃蛇游戏程序设计一、课程设计任务贪吃蛇小游戏程序设计二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C 语言中所学的知识,合理的运用资料,实现理论与实际相结合。

(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩三、需求分析3.1、程序功能贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

3.2、设计思想程序关键在于透露表现蛇的图形及蛇的挪动。

用一个小矩形快透露表现蛇的一节身材,身材每长一节,增加一个矩形块,蛇头用俩节透露表现。

挪动时必须从蛇头动手下手,以是蛇不克不及向相反的偏向挪动,假如不按随便键,蛇自行在当火线向上前移,但按下有效偏向键后,蛇头朝着该偏向挪动,一步挪动一节身材,以是按下有效偏向键后,先肯定蛇头的位置,尔后蛇的身材随蛇头挪动,图形的完成是从蛇头新位置动手下手画出蛇,这时分,因为未清屏的缘故原由,原先的蛇的位置和新蛇的位置差一个单元,以是看起来蛇多一节身材,以是将蛇的末了一节用背景色掩盖。

食品的呈现与消失也是画矩形块和掩盖矩形块。

为了便于理解,界说两个布局体:食品与蛇。

3.3、流程图动手下手初始化界面和蛇身游戏者按键选择放置食物蛇开始运动蛇吃到食?Y蛇长大N蛇死亡?Y继续?N退出界面YN四、设计的具体实现(1)函数定义函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用#define N 200#define M 200#include"graphics.h"#include<XXX>#include<XXX>#include<string.h>#include<XXX>#include<dos.h>#include<XXX>#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;//食物的纵坐标intyes;//判别是否要呈现食品的变量}food;//食品的布局体struct XXX{int x[M];int y[M];int node;//蛇的节数XXX的移动方向int life;//蛇的生命,透露表现在世,1 透露表现出生}XXX;void Init();//图形驱动void Close();//图形结束void DrawK();//开始画面XXX();//玩游戏的具体过程XXX();//游戏结束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( )主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

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

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

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

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

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

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

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

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

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

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

对于找到的模块如何进行改编呢?怎么才能知道某个数值或函数代表什么呢?我们有两个方法:1.)看名字,比如snakecolor(),很明显他的意思是蛇的颜色。

2.)控制变量猜想,比如设置墙的时候for(i=200;i<=500;i+=10);rectangle(i,300,i+10,309); 中的200,500,300,209 代表什么呢?我们可以猜想:它很像是坐标上的(x,y)的格式,是不是呢?可可以先让其他数值不变,只让309改变,改变后发现上面的墙变粗了,由此可见这个数字控制的是一堵墙的最下面一行的坐标。

关于该程序的相关分析思路答题模板:1 . 贪吃蛇程序流程图如下:二.贪吃蛇程序的改编 :经过小组成员的认真研究 我们对其进行了 如下改编第一步 加墙撞墙或撞自己开始筑墙设计出现食物蛇移动吃食物 GAME OVER蛇死?是否void DrawK(void){/*setbkcolor(MAGENTA);*/setcolor(5); // 可以改变颜色setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/横向上的墙:for(i=100;i<=600;i+=10)// 本行代表行坐标上:100代表墙的初始位置,i<=600代表墙的结尾。

{rectangle(i,60,i+10,69); //本行代表纵坐标上:60代表墙的最上面一行的位置,69代表墙最下面一行的位置。

69-60=9,9代表墙块的厚度}纵向上的墙:for(i=100;i<=400;i+=10)//本行代表纵坐标上:100代表墙的初始位置,i<=400代表墙的结尾{rectangle(100,i,109,i+10); //本行代表纵坐标上:100代表墙的最左边面一行的位置,69代表墙最右面一行的位置。

69-60=9,9代表墙块的宽度}我们认为本模块最重要的是for语句控制的坐标代表的意思。

只要明白了坐标的意思,就可以实现对游戏的改编。

●第二步就是进行对新加入的墙蛇是否撞上死亡●让蛇撞墙死if(snake.x[0]>190&&snake.x[0]< 510&&snake.y[0]>=200&&snake.y[0]<=215) /*其中,对x,y范围的控制,实际是对蛇撞击的死亡区域的限制。

*/{GameOver();/*本次游戏结束*/snake.life=1; /*蛇死*/}相应的新添加的墙。

for(i=200;i<=500;i+=10)/*画围墙*/{rectangle(i,200,i+10,209); /*指定位置*/第三步食物的定点出现if(food.yes==1)/*需要出现新食物*/这里说明一下:rand() 产生0-65535的数,在limits.h里有定义%400后产生一个0-399的数+60 则为60 –459,即:%400+60意思是在60~399之间随机产生一个数。

{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;/*画面上有食物了*/}如果将food.x=(常数a)那么食物就会出现在x=a行的随机列,对于food.y=(常数b)那么食物就出现在y=b列的随机行。

第四步对食物墙壁的颜色以及对蛇的运动速个性化调节setcolor(4);// 对颜色的调整int gamespeed=50000;/*游戏速度自己调整*/通过改变变量的值,就可以个性化选择自己喜欢的颜色,这将是一场别开生面的游戏界面。

* 红色代表解析浅蓝代表提示三.课程设计总结有言曰:“实践出真知”,在这几天的课程设计实践中,我们组三人真正的体会到了这句话的真谛。

在经历了一学期的C语言学习后,我们从以往的“纸上谈兵”直接过渡到“实际作战”。

我们实现了让静态的程序变成动态的游戏效果,虽然我们只是改编了一下别人做好的程序,但我们同样由此获益匪浅,感触颇深,当然也发现了许多自己的不足。

首先,在我们刚刚进行第一步“寻找程序”的时候,就被搁浅了,因为我们发现,在网上能找到一个真正符合我们使用标准的程序很难,就是找到了几个也没有能运行它们的程序。

我们花费了前两天的时间来寻找能够使用的程序和软件,但最后还是一无所获,正当我们一筹莫展的时候,我们的导师——杨老师给我们带来了曙光,使得我们在黑暗中找到了希望的光明,杨老师给我们传来了一个上届师哥做好的程序,并且把它的运行软件也给了我们,这对我们来说无疑是雪中送炭,得到这个程序后,我们三个人看到了C语言运行一个游戏的流程和方法,我们脑中也大概有了一个思路。

我们三个人以此程序为跳板,直接开始对程序模块进行挑选,因为我们已经浪费了两天,所以我们决定进行分工作业,分别去寻找:筑墙模块,加苹果模块,撞墙死模块。

最后我们用了一下午时间完成了三大步中的前两大步和第三步的第一部分,剩下的就是最重要而充满挑战的改编了,从以上的操作中,让我们明白了找对一个平台的重要性,这个平台就是老师给我们的程序,就是我们的前进方向。

没有了方向了的征程,一开始就是个错误。

在我们寻找程序模块的时候,我们对于程序中的很多东西都是模模糊糊的概念,比如struck是什么,比如for语句的使用,以及for语句的循环体是什么,当然我们也发现了定义字符在长的程序中的方便与重要性。

还有就是我们发现程序在编写时的规范性很重要,比如同级别花括号的位置的对应,对应好了,模块就好找,对应不好就很乱。

还有定义函数及变量的时候,函数名字和变量名最好是见名知意,比如我们所看的程序中,gamespeed,snakecolour,food.....在最后的攻坚阶段,为了实现对程序的改编,我们使用控制变量猜想法是正确的选择,比如设置墙的时候for(i=200;i<=500;i+=10);rectangle(i,300,i+10,309); 中的200,500,300,209 代表什么呢?我们猜想:它很像是坐标上的(x,y)的格式,是不是呢?我们先让其他数值不变,只让309改变,改变后发现上面的墙变粗了,由此我们知道这个数字控制的是一堵墙的最下面一行的坐标。

我们用这个方法知道了其他很多数值的用途。

我们用这种方法先是知道了如何设置一堵墙,在我们欣喜设置一堵墙以后才发现:蛇撞了墙后不死。

在我们进行了全局来看以后才知道,原来设计一堵墙,都要再设计一个if语句来使得蛇在这个范围内会死亡。

并且我们发现在设计这个if语句的时候,不仅要计算好墙的坐标,而且还要用好逻辑语言(&&,|| !)同时语句的运算顺序也很重要。

刚一开始我们忽略的&&和关系运算符级别的高低,使得我们设计的墙,总是撞不死蛇,为此我们很是恼火,着急的组员还在这里发生了点小摩擦,由此可见C语言的严谨性!最后我们又通过在网上查找信息,知道了随机数发生器randomize()的用法:rand()=x%+d 意思是说在d~(x-1)之间随机产生一个数字。

我们很自然的联想到,如果把food.x等于常数a; 把food.y等于一个;x%+d的随机数,那不就能固定只在某一行出现苹果了吗?所以我们觉得,充分利用手边的资源也是很重要的,毕竟C语言很高深,课本上的东西总是有限的,要想知道更多的东西还需多练习,多查阅资料。

总之:革命尚未成功,通知还需努力啊!四个人感受:汤X:就我个人而言,这次课程设计,我觉得我最大的收获就是:我明白了,我们其实真的没那么厉害,我们真的还有很多东西不会,我们真的连课本上的基本东西都没掌握,课本上的东西,真的也只是C 语言这个大海中的一滴水而已。

而在我本人还没有掌握好课本的知识点的情况下,做起这个程序自然很费事,一个简单的课本P293讲到的struct结构体,我一开始竟然忘记它是什么意思,不知道它是什么,就更不用谈怎么用它了。

还有逻辑语言的使用。

我想,现在肯定有很多同学还不知道逻辑运算的优先次序吧?这个问题我本人在使用逻辑语言的时候也不太会,还查看了书。

像这些小的知识点,我个人认为如果掌握不好的话,是不可能让整个大程序运行起来的。

相关文档
最新文档