贪吃蛇游戏程序设计一课程设

合集下载

课程设计贪吃蛇小游戏程序设计

课程设计贪吃蛇小游戏程序设计

信息技术学院本科课程设计报告课程设计题目学生姓名:李雪学院:信息技术学院专业:信息治理与信息系统班级: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);}。

c贪吃蛇课程设计

c贪吃蛇课程设计

c 贪吃蛇课程设计一、课程目标知识目标:1. 学生能够理解“贪吃蛇”游戏的编程原理,掌握相关的编程知识和技能。

2. 学生能够运用所学的编程语言,独立编写出具有基本功能的“贪吃蛇”游戏。

3. 学生了解游戏设计的基本流程,掌握游戏设计中常用的数据结构和算法。

技能目标:1. 学生通过编写“贪吃蛇”游戏,提高逻辑思维和问题解决能力。

2. 学生能够运用编程技巧,优化游戏性能,使游戏更加流畅。

3. 学生掌握调试程序的方法,能够独立解决编程过程中遇到的问题。

情感态度价值观目标:1. 学生对编程产生兴趣,培养主动学习和探究的精神。

2. 学生在团队协作中,学会沟通、分享和合作,增强团队意识。

3. 学生通过游戏设计,培养创新意识和审美观念。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术学科,以实践操作为主,理论联系实际。

2. 学生特点:五年级学生对新鲜事物充满好奇,具备一定的逻辑思维能力和动手能力,但注意力容易分散,需要激发学习兴趣。

3. 教学要求:注重理论与实践相结合,以学生为主体,教师为主导,鼓励学生动手实践,培养创新精神和团队协作能力。

二、教学内容1. 理论知识:- 编程语言基础:变量、数据类型、运算符、条件语句、循环语句等。

- 游戏设计基本原理:游戏循环、用户输入、游戏状态更新、画面渲染等。

- 数据结构:数组、链表等。

- 算法:移动、转向算法,食物随机生成算法等。

2. 实践操作:- 使用编程软件进行“贪吃蛇”游戏编写,实现基本功能:如蛇的移动、吃到食物后身体增长、撞墙或撞到自己时游戏结束等。

- 游戏性能优化:提高游戏运行速度,优化用户体验。

- 界面设计:学习使用绘图函数,设计美观的游戏界面。

3. 教学大纲:- 第一课时:导入“贪吃蛇”游戏,介绍编程语言基础,让学生了解游戏设计的基本原理。

- 第二课时:学习数据结构及算法,编写游戏核心功能。

- 第三课时:实践操作,编写并优化“贪吃蛇”游戏,进行界面设计。

liunxC贪吃蛇课程设计

liunxC贪吃蛇课程设计

liunxC贪吃蛇课程设计一、课程目标知识目标:1. 理解Linux操作系统的基本概念,掌握常见的文件系统结构和命令行操作;2. 学习C语言编程基础,熟悉贪吃蛇游戏的逻辑结构和实现方法;3. 了解如何在Linux环境下编写和运行C程序。

技能目标:1. 能够使用Linux命令行进行基本操作,如文件创建、编辑和执行;2. 掌握C语言的基本语法和编程技巧,能够编写简单的C程序;3. 能够运用所学知识设计和实现一个简单的贪吃蛇游戏。

情感态度价值观目标:1. 培养学生对操作系统的兴趣,激发探究计算机科学的热情;2. 培养学生的团队协作精神,学会在编程过程中相互交流和分享经验;3. 培养学生面对挑战时的积极态度,勇于尝试和克服困难。

分析课程性质、学生特点和教学要求,本课程目标旨在让学生通过学习Linux 和C语言编程,掌握基本的编程技能,培养实际操作能力和逻辑思维能力。

通过贪吃蛇游戏的实践项目,将所学知识应用于实际情境,提高学生的综合运用能力。

课程目标具体、可衡量,以便于教师进行教学设计和评估,同时激发学生的学习兴趣和积极性。

二、教学内容1. Linux操作系统基础:- 系统结构及原理介绍- 常用命令行操作(文件管理、目录操作等)- 文件系统结构及权限管理2. C语言编程基础:- 数据类型、运算符与表达式- 控制结构(顺序、选择、循环)- 函数的定义与调用- 数组、指针与字符串3. 贪吃蛇游戏设计与实现:- 游戏逻辑分析与设计- 基本图形绘制与动画实现- 键盘事件处理与游戏控制- 游戏界面的优化与完善教学大纲安排如下:第一周:Linux操作系统基础,学习命令行操作和文件系统结构;第二周:C语言编程基础,掌握基本语法和编程技巧;第三周:贪吃蛇游戏逻辑分析,设计游戏框架;第四周:编写C程序实现贪吃蛇游戏核心功能;第五周:优化游戏界面和体验,调试完善程序。

教学内容与课本紧密关联,确保科学性和系统性。

通过以上教学内容和进度安排,使学生能够循序渐进地掌握Linux和C语言编程,最终完成贪吃蛇游戏的开发。

c贪吃蛇课程设计

c贪吃蛇课程设计

c 贪吃蛇课程设计一、课程目标知识目标:1. 让学生掌握“贪吃蛇”游戏的编程基础,理解游戏逻辑和算法。

2. 学习运用坐标系表示蛇的位置和移动。

3. 掌握运用循环和条件语句实现蛇的自动移动和食物的随机生成。

技能目标:1. 培养学生动手编写代码的能力,提高问题解决和逻辑思维能力。

2. 培养学生运用编程语言实现创意想法的能力,激发创新意识。

情感态度价值观目标:1. 培养学生对编程学科的兴趣,提高学习积极性。

2. 培养学生团队协作精神,学会共同解决问题,分享学习成果。

3. 培养学生面对挑战不轻言放弃,勇于尝试和探索的精神。

课程性质分析:本课程为信息技术课程,以实践操作为主,结合理论讲解,旨在培养学生编程兴趣和动手能力。

学生特点分析:六年级学生对新鲜事物充满好奇心,具备一定的逻辑思维能力,但在编程方面可能存在不同程度的入门难度。

教学要求:1. 注重理论与实践相结合,让学生在动手实践中掌握编程知识。

2. 创设有趣的游戏场景,激发学生学习兴趣,提高学习积极性。

3. 重视团队协作,培养学生共同解决问题的能力。

二、教学内容1. 游戏编程基础:介绍编程环境和使用方法,学习基本的编程语法和结构。

- 课本章节:第一章 认识编程- 内容列举:编程语言概述、开发环境搭建、第一个程序编写。

2. 坐标系与图形绘制:理解坐标系概念,掌握在坐标系中表示物体位置和移动。

- 课本章节:第二章 图形与坐标系- 内容列举:坐标系原理、图形绘制、物体移动实现。

3. 贪吃蛇游戏逻辑与算法:分析贪吃蛇游戏的逻辑,学习实现蛇的移动、食物的生成与吃掉食物。

- 课本章节:第三章 循环与条件语句- 内容列举:循环语句、条件语句、游戏逻辑实现。

4. 编程实践:动手编写贪吃蛇游戏,实现游戏的基本功能。

- 课本章节:第四章 编程实践- 内容列举:项目分析、编写代码、调试运行。

教学进度安排:第一课时:介绍编程基础,搭建开发环境,编写第一个程序。

第二课时:学习坐标系与图形绘制,实现物体在坐标系中的移动。

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贪吃蛇游戏课程设计

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. 使学生掌握运用编程语言(如Python)编写简单的贪吃蛇程序。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

关于贪吃蛇课程设计

关于贪吃蛇课程设计

关于贪吃蛇课程设计一、课程目标知识目标:1. 让学生掌握贪吃蛇游戏的规则和基本玩法。

2. 引导学生理解游戏背后的编程逻辑和算法。

3. 培养学生对计算机编程的兴趣,了解编程与数学、逻辑思维的关系。

技能目标:1. 培养学生运用编程语言(如Python)实现贪吃蛇游戏的能力。

2. 培养学生运用数学知识和逻辑思维解决问题的能力。

3. 提高学生的团队协作能力和沟通表达能力。

情感态度价值观目标:1. 培养学生对计算机科学的热爱,激发学生的创新精神。

2. 培养学生勇于尝试、克服困难的意志品质。

3. 培养学生遵守游戏规则,树立公平竞争的意识。

课程性质:本课程为信息技术与学科整合的实践课程,以贪吃蛇游戏为载体,培养学生的编程兴趣和逻辑思维能力。

学生特点:五年级学生对新鲜事物充满好奇心,具备一定的数学和逻辑思维基础,但编程经验尚浅。

教学要求:课程设计需兼顾趣味性与实用性,注重培养学生的动手实践能力和团队协作精神,将编程知识与实际操作相结合,使学生在实践中掌握知识。

通过分解课程目标为具体学习成果,便于后续教学设计和评估。

二、教学内容1. 游戏规则与玩法介绍:讲解贪吃蛇游戏的基本规则和操作方法,让学生了解游戏的核心玩法。

2. 编程语言基础:介绍Python编程语言的基本语法,如变量、数据类型、控制结构等,为学生编写贪吃蛇游戏打下基础。

3. 游戏编程逻辑:分析贪吃蛇游戏的编程逻辑,讲解如何使用Python实现游戏功能,包括蛇的移动、食物的生成、碰撞检测等。

4. 算法设计与优化:引导学生探讨贪吃蛇游戏中可能涉及的算法,如搜索算法、路径规划等,并针对游戏性能进行优化。

5. 实践操作:安排学生分组进行贪吃蛇游戏的编程实践,培养学生的动手能力和团队协作精神。

6. 作品展示与评价:组织学生展示各自的作品,进行互评和教师评价,总结优点与不足,提高学生的表达能力和批判性思维。

教学内容关联教材章节:1. 游戏规则与玩法介绍:教材第二章“计算机游戏概述”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
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;
void DrawK();//开始画面
void GamePlay();//玩游戏的具体过程
void GameOver();//游戏结束
void PrScore();//输出成绩
(2)主函数main()主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即
snake.node=2;//蛇的节数
PrScore();//输出分数
while(1)〃可重复玩游戏,按ESC键结束
{
while(!kbhit())//
}
(3) 画界面函数DrawK()主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均 的矩形方块,表示围墙,为了醒目,设置为白色。
void DrawK()//开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙{
setbkcolor(GREEN);
3.3、流程图
开始
初始化界面和蛇身
放置食物
蛇开始运动
蛇吃到食?
蛇长大
蛇死亡?
继续?
退出界面
N
Y
N
Y
游戏者按键选择
Y
四、设计的具体实现(1)函数定义 函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用
#define N200
#define M200
#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
理的运用资料,实现理论与实际相结合。
(1).收集资料,分析课题,分解问题,形成总体设计思路; (2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体 介绍;
(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正 常运行;
(4).完成课程设计报告,并进行答辩
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()//玩游戏的具体过程
#define UP 119//W
#define Esc 0x011b int i,key;
int score=0;
int gamespeed=250;//游戏速度可根据实际情况自行调整struct Food
{int x;//ຫໍສະໝຸດ int y;// int yes;//
食物的横坐标
食物的纵坐标
判断是否要出现食物的变量
三、需求分析3.1、程序功能
贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键 盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一 节, 同时记10分, 接着又出现食物, 等待蛇来吃, 如果蛇在移动中撞到墙或身体交叉蛇头撞 倒自己身体游戏结束。
3.2、设计思想程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体, 身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向 相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头 朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇 的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原 来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用 背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构 体:食物与蛇。
玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序
void main()//主函数
{
Init();//图形驱动
DrawK();//开始画面
GamePlay();//玩游戏的具体过程
Close();//图形结束
}
void Init()//图形驱动
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"");/*此处为turboc的路径,读者可以根据自己的电脑而改*/cleardevice();
}food;//食物的结构体struct Snake
{
int x[M];
int y[M];
int node;//
int direction;// int life;// }snake;
蛇的节数 蛇的移动方向
蛇的生命,0表示活着,1表示死亡
void Init();//图形驱动
void Close();//图形结束
贪吃蛇游戏程序设计__一、课程设.txt同志们:别炒股,风险太大了,还是做豆腐最安全! 做硬了是豆腐干,做稀了是豆腐脑,做薄了是豆腐皮,做没了是豆浆,放臭了是臭豆腐!稳 赚不亏呀!贪吃蛇游戏程序设计
一、课程设计任务 贪吃蛇小游戏程序设计
二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合
相关文档
最新文档