贪吃蛇游戏程序设计
- 格式:doc
- 大小:100.00 KB
- 文档页数:29
信息技术学院本科课程设计报告课程设计题目学生姓名:李雪学院:信息技术学院专业:信息治理与信息系统班级:B1102学号:0911110201指导教师:王浩涌完成日期:辽东学院Eastern Liaoning University一、题目(问题)描述贪吃蛇小游戏程序设计图1 贪吃蛇系统界面二、功能分析贪吃蛇游戏是一个经典小游戏,一条蛇在封锁围墙里,围墙里随机显现一个食物,通过按键盘四个光标键操纵蛇向上下左右四个方向移动,蛇头撞倒食物,那么食物被吃掉,蛇躯体长一节,同时记10分,接着又显现食物,等待蛇来吃,若是蛇在移动中撞到墙或躯体交叉蛇头撞倒自己躯体游戏终止。
三、系统设计1.程序整体结构图2贪吃蛇程序系统的构图2.界面设计如图,通过W、S、A、D、space键进行操作3.输入方式设计A 用W、S、A、D、键操纵蛇的上下左右移动,space键停止,esc键终止。
B 游戏目标:操纵屏幕上那条可爱的小蛇,在方框中不断吃豆豆,而每吃一个豆豆,蛇的躯体都变的更长一些,即增加一颗星星。
游戏的难度也会随之加大。
C 游戏终止:终止条件1——蛇头撞到墙上;终止条件2——蛇身形成一个圈,也确实是蛇头碰着自身的任何一处4.重要数据的数据结构设计5.函数设计6.函数挪用图7. 实体属性图四、关键技术、难点及其解决方式五、测试方式六、总结附录1程序源代码#include <windows.h>#include <stdlib.h>#include <time.h>#include <stdio.h>#include <string.h>#include <conio.h>#define N 21int apple[3];char score[3];char tail[3];void gotoxy(int x, int y) //输出坐标{COORD pos;pos.X = x;pos.Y = y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); }void color(int b) //颜色函数{HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ;SetConsoleTextAttribute(hConsole,b) ;int Block(char head[2]) //判定出界{if ((head[0] < 1) || (head[0] > N) || (head[1] < 1) || (head[1] > N))return 1;return 0;}int Eat(char snake[2]) //吃了苹果{if ((snake[0] == apple[0]) && (snake[1] == apple[1])){apple[0] = apple[1] = apple[2] = 0;gotoxy(N+44,10);color(13);printf("%d",score[0]*10);color(11);return 1;}return 0;}void Draw(char **snake, int len) //蛇移动{if (apple[2]) {gotoxy(apple[1] * 2, apple[0]);color(12);printf("●");color(11);}gotoxy(tail[1] * 2, tail[0]);if (tail[2]){ color(14);printf("★");color(11);}elseprintf("■");gotoxy(snake[0][1] * 2, snake[0][0]);color(14);printf("★");color(11);putchar('\n');char** Move(char **snake, char dirx, int *len) //操纵方向{int i, full = Eat(snake[0]);memcpy(tail, snake[(*len)-1], 2);for (i = (*len) - 1; i > 0; --i)memcpy(snake[i], snake[i-1], 2);switch (dirx){case 'w': case 'W': --snake[0][0]; break;case 's': case 'S': ++snake[0][0]; break;case 'a': case 'A': --snake[0][1]; break;case 'd': case 'D': ++snake[0][1]; break;default: ;}if (full){snake = (char **)realloc(snake, sizeof(char *) * ((*len) + 1));snake[(*len)] = (char *)malloc(sizeof(char) * 2);memcpy(snake[(*len)], tail, 2);++(*len);++score[0];if(score[3] < 16)++score[3];tail[2] = 1;}elsetail[2] = 0;return snake;}void init(char plate[N+2][N+2], char ***snake_x, int *len) //初始化{int i, j;char **snake = NULL;*len = 3;score[0] = score[3] =3;snake = (char **)realloc(snake, sizeof(char *) * (*len));for (i = 0; i < *len; ++i)snake[i] = (char *)malloc(sizeof(char) * 2);for (i = 0; i < 3; ++i){snake[i][0] = N/2 + 1;snake[i][1] = N/2 + 1 + i;}for (i = 1; i <= N; ++i)for (j = 1; j <= N; ++j)plate[i][j] = 1;apple[0] = rand()%N + 1; apple[1] = rand()%N + 1;apple[2] = 1;for (i = 0; i < N + 2; ++i){gotoxy(0, i);for (j = 0; j < N + 2; ++j){switch (plate[i][j]){case 0:color(12);printf("□");color(11); continue;case 1: printf("■"); continue;default: ;}}putchar('\n');}for (i = 0; i < (*len); ++i){gotoxy(snake[i][1] * 2, snake[i][0]);printf("★");}putchar('\n');*snake_x = snake;}void Manual(){gotoxy(N+30,2);color(10);printf("按W S A D 移动方向");gotoxy(N+30,4);printf("按space 键暂停");gotoxy(N+30,8);printf("历史最高分为: ");color(12);gotoxy(N+44,8);printf("%d",score[1]*10);color(11);gotoxy(N+30,12);printf("你此刻得分为: 0");}int File_in() //取记录的分数{FILE *fp;if((fp = fopen("C:\\tcs.txt","a+")) == NULL){gotoxy(N+18, N+2);printf("文件不能打开\n");exit(0);}if((score[1] = fgetc(fp)) != EOF);elsescore[1] = 0;return 0;}int File_out() //存数据{FILE *fp;if(score[1] > score[0]){gotoxy(10,10);color(12);puts("闯关失败加油耶");gotoxy(0,N+2);return 0;}if((fp = fopen("C:\\tcs.txt","w+")) == NULL){printf("文件不能打开\n");exit(0);}if(fputc(--score[0],fp)==EOF)printf("输出失败\n");gotoxy(10,10);puts("恭喜您打破记录");gotoxy(0,N+2);return 0;}void Free(char **snake, int len) //释放空间{int i;for (i = 0; i < len; ++i)free(snake[i]);free(snake);}int main(void){int len;char ch = 'g';char a[N+2][N+2] = {{0}};char **snake;srand((unsigned)time(NULL));color(11);File_in();init(a, &snake, &len);Manual();while (ch != 0x1B) // 按ESC 终止{Draw(snake, len);if (!apple[2]) {apple[0] = rand()%N + 1;apple[1] = rand()%N + 1;apple[2] = 1;}Sleep(200-score[3]*10);setbuf(stdin, NULL);if (kbhit()){gotoxy(0, N+2);ch = getche();}snake = Move(snake, ch, &len);if (Block(snake[0])==1){gotoxy(N+2, N+2);puts("你输了");File_out();Free(snake, len);getche();exit(0);}}Free(snake, len);exit(0);}。
贪吃蛇游戏程序设计实验报告贪吃蛇游戏程序设计实验报告1、引言1.1 文档目的1.2 背景介绍1.3 项目概述2、需求分析2.1 用户需求2.2 功能需求2.3 非功能需求3、总体设计3.1 系统结构3.2 使用的开发工具和技术3.3 程序流程图3.4 数据结构设计4、模块设计4.1 游戏界面模块设计4.2 蛇的移动模块设计4.3 食物模块设计4.4 游戏结束判定模块设计5、开发过程5.1 编码规范5.2 界面设计与实现5.3 功能模块实现5.4 联合测试与整合调试6、测试结果与分析6.1 单元测试6.2 集成测试6.3 性能测试6.4 用户验收测试7、部署与运维7.1 系统环境要求7.2 安装步骤7.3 运行与维护8、问题与解决方案8.1 开发中的问题8.2 解决方案9、结论9.1 实验总结9.2 实现目标9.3 后续改进方向附件:- 源代码文件- 参考文献法律名词及注释:- 版权:保护原创作品的独有权利,防止他人未经授权使用、复制或传播。
- 许可证:授权他人在特定条件下使用受版权保护的作品。
- 商标:用于标识特定产品或服务来源的标识,可以是文字、图形、颜色或声音。
- 专利:通过创造一种新的发明而获得的对该发明的独有权利,防止他人在未获许可的情况下制造、使用或销售该发明。
- 使用条款:规定使用软件、服务或作品的条件和限制。
- 免责声明:声明作者或提供者对使用软件、服务或作品时可能产生的损害不承担责任。
全文结束 \。
贪吃蛇程序设计贪吃蛇是一款经典的电子游戏,其设计简单却极具挑战性,深受各个年龄段玩家的喜爱。
下面将详细介绍贪吃蛇程序的设计过程,包括基本规则、程序结构、实现方法以及可能的扩展功能。
基本规则贪吃蛇游戏的基本规则如下:1. 游戏界面是一个矩形网格,蛇在网格中移动。
2. 蛇由多个方块组成,初始时通常只有几个方块。
3. 玩家通过键盘控制蛇头的移动方向。
4. 蛇在吃到食物后,身体长度会增加一节。
5. 如果蛇头撞到自己的身体或屏幕边缘,游戏结束。
程序结构贪吃蛇程序主要包括以下几个部分:1. 游戏界面:显示蛇、食物和网格。
2. 蛇的移动逻辑:控制蛇的移动方向和速度。
3. 食物生成逻辑:随机在界面上生成食物。
4. 碰撞检测:检测蛇是否吃到食物或撞到自己及屏幕边缘。
5. 分数和生命值:记录玩家的得分和剩余生命。
实现方法1. 初始化- 设置游戏界面的大小。
- 初始化蛇的位置和长度。
- 随机生成食物的位置。
2. 游戏循环- 监听键盘输入,更新蛇头的移动方向。
- 根据移动方向更新蛇的位置。
- 检查蛇是否吃到食物,如果是,则增加蛇的长度和分数,并生成新的食物。
- 检查蛇是否撞到自己的身体或屏幕边缘,如果是,则结束游戏。
- 刷新游戏界面,显示当前的蛇、食物和分数。
3. 绘制界面- 使用图形库或API绘制网格、蛇和食物。
4. 处理用户输入- 监听键盘事件,根据用户的输入改变蛇的移动方向。
5. 碰撞检测- 检查蛇头是否与食物重叠,如果是,则触发吃食物的逻辑。
- 检查蛇头是否与蛇身其他部分重叠,如果是,则游戏结束。
- 检查蛇头是否到达屏幕边缘,如果是,则游戏结束。
可能的扩展功能1. 多种难度级别:根据游戏难度调整蛇的移动速度或食物的生成频率。
2. 特殊食物:例如,某些食物可以让蛇短暂加速或获得保护,避免碰撞。
3. 自定义皮肤:允许玩家选择或设计蛇和食物的外观。
4. 多人模式:支持多个玩家在同一设备或网络上进行游戏。
5. 成就系统:为玩家设置各种成就目标,增加游戏的可玩性。
一、实验目的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)游戏逻辑实现方面:蛇头移动、吃到食物、撞墙等逻辑实现正确,游戏运行稳定。
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 贪吃蛇程序课程设计一、课程目标知识目标:1. 让学生理解贪吃蛇游戏的原理和基本算法。
2. 使学生掌握运用编程语言(如Python)编写简单的贪吃蛇程序。
3. 帮助学生掌握程序中的循环、条件判断和变量等基本概念。
技能目标:1. 培养学生运用编程解决问题的能力,提高逻辑思维和动手实践能力。
2. 培养学生团队合作意识,学会与他人共同分析问题、解决问题。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养主动探索和创新的意识。
2. 培养学生面对困难时勇于尝试、不断调整心态,形成积极向上的学习态度。
课程性质:本课程为信息技术课程,结合实际操作,注重培养学生的动手能力和逻辑思维能力。
学生特点:六年级学生具备一定的计算机操作能力,对编程有一定的好奇心,但注意力容易分散,需要结合实际案例激发学习兴趣。
教学要求:通过讲解、演示、实践相结合的方式,让学生在掌握基本知识的同时,提高编程实践能力。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 理论知识:- 简介贪吃蛇游戏的起源和发展。
- 讲解贪吃蛇程序的基本原理,包括游戏规则、程序结构等。
- 介绍编程语言(如Python)的基本语法和编程环境。
2. 实践操作:- 编写简单的贪吃蛇程序,实现蛇的移动、食物的生成等功能。
- 学习使用循环、条件判断和变量等编程元素,优化贪吃蛇程序。
- 引导学生通过团队协作,共同完成贪吃蛇程序的设计与调试。
3. 教学大纲:- 第一课时:介绍贪吃蛇游戏及编程语言,让学生了解课程内容。
- 第二课时:讲解贪吃蛇程序的基本原理,引导学生学习编程语法。
- 第三课时:实践编写贪吃蛇程序,指导学生掌握基本操作。
- 第四课时:优化贪吃蛇程序,提高学生编程技能和团队协作能力。
4. 教材章节:- 《信息技术》六年级上册:第三章 计算机编程,第三节 常用编程语言。
教学内容安排和进度:本课程共4课时,每课时45分钟。
第一、二课时为理论讲解,第三、四课时为实践操作。
java贪吃蛇游戏设计课程设计一、课程目标知识目标:1. 让学生掌握Java编程语言的基本语法和面向对象编程思想。
2. 使学生了解贪吃蛇游戏的基本规则和设计原理。
3. 帮助学生理解游戏开发中坐标系的应用、事件处理和循环结构的使用。
技能目标:1. 培养学生运用Java语言编写简单游戏的能力。
2. 提高学生分析问题、解决问题的能力,学会运用编程思维解决实际问题。
3. 培养学生团队协作和沟通表达的能力,能在团队中发挥各自优势,共同完成项目。
情感态度价值观目标:1. 激发学生对编程的兴趣,提高学习积极性,培养自主学习能力。
2. 培养学生勇于尝试、不断探索的精神,增强面对困难的信心。
3. 引导学生关注计算机技术在日常生活中的应用,认识到科技改变生活的力量。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 知识方面:学生能熟练使用Java语言编写贪吃蛇游戏,掌握相关概念和原理。
2. 技能方面:学生能独立分析游戏需求,设计合适的算法和数据结构,完成游戏功能。
3. 情感态度价值观方面:学生通过团队协作,体验编程带来的成就感,培养积极向上的学习态度。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. Java基本语法与面向对象编程:- 变量、数据类型、运算符- 控制结构:条件语句、循环语句- 面向对象编程:类、对象、方法、继承、封装、多态2. 游戏设计原理与实现:- 贪吃蛇游戏规则及设计思路- 坐标系的应用- 事件处理机制- 游戏循环结构设计3. 游戏编程实践:- 编程环境配置- 贪吃蛇游戏项目搭建- 游戏功能模块开发:食物、贪吃蛇、碰撞检测等- 游戏优化与调试教学内容安排与进度:1. Java基本语法与面向对象编程(第1-2周)2. 游戏设计原理与实现(第3-4周)3. 游戏编程实践(第5-8周)教材章节关联:1. 《Java编程思想》第1-4章:Java基本语法与面向对象编程2. 《Java游戏编程》第3章:游戏设计原理与实现3. 《Java游戏编程实战》第5-7章:游戏编程实践三、教学方法为了提高教学效果,激发学生的学习兴趣和主动性,本课程采用以下多样化的教学方法:1. 讲授法:教师通过生动的语言、形象的比喻,讲解Java编程基本语法和面向对象编程思想,使抽象的概念具体化,便于学生理解和掌握。
贪吃蛇游戏课程设计报告贪吃蛇游戏程序设计一、课程设计任务贪吃蛇小游戏程序设计二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固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( )主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。
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 贪吃蛇设计课程设计一、教学目标本课程旨在通过“贪吃蛇”游戏的设计与实现,让学生掌握以下知识目标: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语言编写简单的程序,并通过编写“贪吃蛇”游戏,提高学生的编程能力和逻辑思维能力。
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 课程设计一、课程目标知识目标:1. 学生能理解并掌握编程语言的基本语法和结构,特别是Python语言的基本操作和流程控制。
2. 学生能运用所学知识,创建并完善一个简易的贪吃蛇游戏,包括蛇的移动、食物的生成和得分机制。
3. 学生理解二维数组的使用,并能将其应用于游戏界面的构建。
技能目标:1. 学生通过编写代码,培养逻辑思维和问题解决能力,提高编程实践技能。
2. 学生学会运用调试工具,能够自主发现并修正程序中的错误。
3. 学生能够合作完成项目,培养团队协作能力和沟通技巧。
情感态度价值观目标:1. 学生培养对计算机科学的兴趣和热情,认识到编程对于未来发展的重要性。
2. 学生在编程实践中体会失败与成功,培养面对困难的坚持和克服能力。
3. 学生通过小组合作,学会尊重他人意见,共享成果,增强集体荣誉感。
课程性质:本课程为信息技术课程,通过实践操作使学生掌握编程技能,培养创新思维。
学生特点:学生为初中年级,对新鲜事物充满好奇,动手能力强,但注意力集中时间有限。
教学要求:教学应注重实践与理论相结合,关注个体差异,鼓励学生探索和创造,确保每个学生都能参与并完成任务。
教学过程中,应将目标具体化为可观察的学习成果,便于进行有效的教学设计和学习成效评估。
二、教学内容本课程依据课程目标,结合教材内容,主要包括以下部分:1. Python基础语法:变量、数据类型、运算符、条件语句和循环语句,让学生掌握编程的基本结构。
- 教材章节:第一章 Python基础2. 列表和二维数组:介绍列表的基本操作,二维数组在游戏中的应用,为构建游戏界面打下基础。
- 教材章节:第二章 数据结构3. 函数和模块:学习编写函数,实现代码的模块化,提高代码的可读性和可维护性。
- 教材章节:第三章 函数与模块4. 图形用户界面(GUI):利用Python的图形库,如Tkinter,设计贪吃蛇游戏的用户界面。
- 教材章节:第四章 图形用户界面5. 游戏设计:结合以上知识,设计并实现一个简易的贪吃蛇游戏,包括蛇的移动、食物的生成、得分和游戏结束条件。
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. 优化程序,添加计分、速度等功能。
vc 贪吃蛇课程设计一、课程目标知识目标:1. 学生能够理解“VC贪吃蛇”游戏的编程原理,掌握基本的图形绘制和事件处理方法。
2. 学生能运用结构体、数组、循环和条件语句等C语言知识,实现贪吃蛇的基本功能。
3. 学生能了解游戏开发中的坐标系概念,运用坐标变换实现蛇的移动。
技能目标:1. 学生能够独立编写“VC贪吃蛇”游戏程序,具备基本的编程实践能力。
2. 学生通过分析问题、设计算法,培养解决问题的逻辑思维能力和编程技能。
3. 学生能够运用调试工具,查找并修复程序中的错误,提高程序调试能力。
情感态度价值观目标:1. 学生在游戏编程过程中,培养对编程的兴趣和热情,激发主动学习的动力。
2. 学生通过合作交流,培养团队协作精神,提高沟通表达能力。
3. 学生在完成游戏作品的过程中,体验成就感,树立自信心,培养面对困难的勇气和毅力。
课程性质:本课程为信息技术课程,旨在通过实践操作,让学生掌握C语言编程知识,提高编程技能。
学生特点:六年级学生,具备一定的C语言基础,对游戏编程感兴趣,喜欢动手实践。
教学要求:结合学生特点,课程以实践操作为主,注重培养学生的编程兴趣和动手能力,提高解决问题的逻辑思维能力。
教学过程中,关注学生的个体差异,给予个性化指导。
通过分解课程目标为具体的学习成果,使学生在完成课程学习后,能够独立完成“VC贪吃蛇”游戏程序。
二、教学内容1. C语言基础知识回顾:结构体、数组、循环和条件语句。
2. 游戏编程原理:坐标系、图形绘制、事件处理。
3. “VC贪吃蛇”游戏功能实现:- 蛇的初始化与移动。
- 食物的随机生成与消失。
- 碰撞检测与游戏结束判定。
- 分数统计与显示。
4. 程序调试与优化:查找错误、性能优化、界面美化。
5. 教学内容的安排和进度:- 第一课时: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程序课程设计一、课程目标知识目标: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. 判断游戏结束条件,如蛇撞墙或撞到自身。
c 编写贪吃蛇课程设计一、教学目标本课程旨在通过学习贪吃蛇游戏的设计与实现,让学生掌握以下知识目标:1.理解并掌握C语言的基本语法和数据结构。
2.学习并应用面向对象的编程思想。
3.掌握贪吃蛇游戏的基本逻辑和算法。
4.能够运用C语言编写简单的应用程序。
5.能够独立设计和实现一个贪吃蛇游戏。
6.能够对代码进行调试和优化。
情感态度价值观目标:1.培养学生对计算机科学的兴趣和热情。
2.培养学生解决问题的能力和团队协作精神。
3.培养学生良好的编程习惯和道德素养。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基础:包括数据类型、运算符、控制结构、函数等基本语法。
2.数据结构:主要包括数组、链表、栈和队列等。
3.面向对象编程:包括类和对象、封装、继承和多态等概念。
4.贪吃蛇游戏逻辑:包括游戏初始化、游戏循环、事件处理、游戏结束等。
5.游戏算法:包括贪吃蛇的运动算法、食物生成算法等。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用以下教学方法:1.讲授法:用于讲解C语言基础和面向对象编程等理论知识。
2.案例分析法:通过分析已有的贪吃蛇游戏案例,帮助学生理解和掌握游戏逻辑和算法。
3.实验法:让学生动手编写和调试贪吃蛇游戏,提高学生的编程能力。
4.小组讨论法:鼓励学生分组合作,共同设计和实现贪吃蛇游戏,培养团队协作精神。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《C程序设计语言》等。
2.参考书:《C Primer Plus》等。
3.多媒体资料:包括PPT、视频教程等。
4.实验设备:计算机、编程环境等。
五、教学评估本课程的评估方式将包括以下几个方面,以保证评估的客观性和公正性:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。
2.作业:包括编程练习和小论文等,占总评的30%。
3.实验:包括独立完成贪吃蛇游戏的设计和实现,占总评的20%。
4.期末考试:包括理论知识考试和实际编程考试,占总评的30%。
测控技术与仪器专业课程设计题单班级0982011 学生刘某某课程名称计算机课程设计课题贪吃蛇游戏程序设计设计要求 1.学习游戏设计有关知识。
2.设计贪吃蛇游戏程序。
3.调试并修改程序。
4.完成课程设计论文。
课题发给日期2011年6月25日课程设计完成日期2011年7月09日指导教师余某某评语:贪吃蛇游戏学生姓名:刘某某班级:0882011指导老师:余某某摘要:编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。
作为一个完整的程序,必须考虑人机交流与用户体验。
游戏的界面不能太丑,更不能连个简单的界面都没有。
游戏应该有个比较漂亮的界面,在有必要硬件支持和软件的支持下,游戏开发者必须最大限度的使游戏美观。
游戏的美观是一方面,游戏的内在素质是另一方面。
一个游戏的优劣,最终由玩家决定。
在游戏与玩家见面之前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进行。
关键词:贪吃蛇流程图c语言源程序目录1 前言 (1)2 课设内容 (3)2.1课设目的 (3)2.2设计功能 (3)2.3结构设计 (7)3结论 (11)参考文献 (15)附录A (16)1 前言C语言是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学生必修的科目。
作为一位当代的大学生更要很好的利用它,学好一门设计语言,实现学以至用。
制作C程序报告,可以巩固和加深自己对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。
通过游戏程序的设计训练可以提高自己的基本技能,更好地掌握字符串的表示方法和字符串函数的功能、Tc图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高自己编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。
C语言课程应注重边学边练,但由于课堂教学和实验的深度和广度有限,练习的深度也受到一定限制。
为了弥补这一点,学校开设了本课程设计。
它比教学实验复杂一些,涉及的深度广些并更加接近实用。
目的是通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容,更好地完成学业。
这次课程设计的主要特点如下:1.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增加了程序的可读性。
2.分析函数先从main()函数入手。
Main()函数是C源程序编译时的开始,从main()函数开始读函数可将其他函数的功能理解得更透彻。
3.在做程序的时候先列框架,将这个程序所要达到的目的(功能)分析出来,选择正确的数据结构然后在将程序模块化,按照模块编写函数更加简单合理。
4.我还了解了很多的库函数的作用,如字符串函数中有很多对字符串进行处理的函数,起功能我都有所了解。
5.它独立于具体的C语言教科书,重点放在C语言的基本特征上,以"不变"应"万变",涵盖C语言的重要基础知识,让我们熟练掌握C语言的实际使用。
6.结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。
激发学习兴趣,调动我们主动学习的积极性,并会根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。
7.提供综合的课程设计理念,以期进一步锻炼学生的动手能力。
同时让同学合作完成这些实验,以便锻炼互相合作精神,培养团队意识。
8.通过观察网络的实例,循序渐进地启发学生完成设计。
课程设计将要求、算法和源程序分开,为学生创造独立思考的条件。
学生在充分理解要求和算法的前提下,设计自己的应用程序。
同时我也获得了许多宝贵的经验:1) 在设计程序之前,务必要对你所设计的题目和内容有一个系统的了解, 知道所设计的题目和内容包含那些资源。
2) 设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路和一个完整的软件流程图,因而,要先把设计原理与思路搞清楚,再把流程图画出来,这样设计起来就简单多了。
3) 在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进”是程序设计的必经之路,发现错误也是取得成绩的一种。
4) 要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便。
2 课设内容2.1设计目的通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容,更好地完成学业。
2.2设计功能在这次课射中,我选择的是贪吃蛇游戏的制作,游戏是人们生活中不可或缺的,一个人从小到大,真正伴随他成长的东西,游戏占有着很重要的地位.不论是一个玩具,还是一个能和伙伴一起开心的小游戏,都是能给我们留下很多美好的回忆.所以不论是什么样的游戏,只要它能迎合人们内心的某种需求,它的市场总会是好的,而贪吃蛇是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随即出现一个食物,通过按键上的四个光标键控制向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体则游戏结束。
本程序运行实现的主要技巧在二维数组的应用上,程序运行时,游戏界面如下图所示,边框表示围墙,黑色单独方块表示食物:图2.1 游戏界面2.3结构设计程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
食物的出现与消失也是画矩形块和覆盖矩形块。
为了便于理解,定义两个结构体:食物与蛇。
2.3.1 数据结构表示食物和蛇的矩形都设计为10 X 10个像素单位,食物的基本数据域为它所出现的位置,用X和y 坐标表示,则矩形块用函数rectangle(x,y,x+10,y+10)或rectangle(x,y,x+10,y-10)可以画出。
由于每次只出现一个食物,而食物被吃掉后,才出现下一个食物,所以设定yes 表示是否要出现一个食物的变量。
蛇的一节身体为一个矩形块,这样表示每个矩形块只需起点坐标x 和y。
身体是不断增长的,所以用数组存放每一节的坐标,最大设定为N=200 ,node表示当前节数。
另外还需要保存蛇移动方向的变量direction 和表示生命的变量 life ,一但life 为1,则蛇死,游戏结束。
所以程序功能的实现就是数组的操作。
#define N 200struct Food{int x; /* 食物的横坐标 */int y; /* 食物的纵坐标 */int yes; /* 判断是否出现食物的变量 */} food; /* 食物的结构体 */struct snake{int x[N]; /* 蛇的横坐标 */int y[N]; /* 蛇的纵坐标 */int node; /* 蛇的节数 */int direction; /* 蛇移动方向 */int life; /* 蛇生命,0活着,1死亡 */}snake;2.3.2 main()主函数主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序void main(void)/*主函数*/{Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}void Init(void)/*图形驱动*/{int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc"); /*第一个参数表示图形适配器的类型,第二个为在该类型下图形的显示模式,第三个参数指定驱动程序所在目录。
*/cleardevice();2.3.3 画界面函数 DrawK ()主界面就是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10 个单位的矩形小方块,围成密闭图形,表示围墙,为了醒目,设置淡青颜色,用函数setlinestyle ( SOLD_LINE,0,THICK_WIDTH )设置线型宽度为3个像素。
设置3个像素的围墙线,蛇在贴墙走的时候,会擦掉部分围墙线,使线变细,图形变得不好看,如果不想这种情况出现,则将线型宽度设置为1个像素。
void DrawK(void)/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/{setbkcolor(0);/*设置当前背景颜色*/setcolor(YELLOW);/*设置当前画线颜色*/setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/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);/*右边*/}}2.3.4 游戏具体过程函数 GamePlay ()这个函数是游戏的主要部分,难点在表示蛇的新位置并消除前一次的图形。