当前位置:文档之家› 贪吃蛇游戏代码(C语言编写)

贪吃蛇游戏代码(C语言编写)

贪吃蛇游戏代码(C语言编写)
贪吃蛇游戏代码(C语言编写)

#include "graphics.h"

#include "stdio.h"

#define MAX 200

#define MAXX 30

#define MAXY 30

#define UP 18432

#define DOWN 20480

#define LEFT 19200

#define RIGHT 19712

#define ESC 283

#define ENTER 7181

#define PAGEUP 18688

#define PAGEDOWN 20736

#define KEY_U 5749

#define KEY_K 9579

#define CTRL_P 6512

#define TRUE 1

#define FALSE 0

#define GAMEINIT 1

#define GAMESTART 2

#define GAMEHAPPY 3

#define GAMEOVER 4

struct SPlace

{

int x;

int y;

int st;

} place[MAX];

int speed;

int count;

int score;

int control;

int head;

int tear;

int x,y;

int babyx,babyy;

int class;

int eat;

int game;

int gamedelay[]={5000,4000,3000,2000,1000,500,250,100}; int gamedelay2[]={1000,1};

static int hitme=TRUE,hit = TRUE; void init(void);

void nextstatus(void);

void draw(void);

void init(void)

{

int i;

for(i=0;i

{

place[i].x = 0;

place[i].y = 0;

place[i].st = FALSE;

}

place[0].st = TRUE;

place[1].st = TRUE;

place[1].x = 1;

speed = 9;

count = 0;

score = 0;

control = 4;

head = 1;

tear = 0;

x = 1;

y = 0;

babyx = rand()%MAXX;

babyy = rand()%MAXY;

eat = FALSE;

game = GAMESTART;

}

void nextstatus(void)

{

int i;

int exit;

int xx,yy;

xx = x;

yy = y;

switch(control)

{

case 1: y--; yy = y-1; break;

case 2: y++; yy = y+1; break;

case 3: x--; xx = x-1; break;

case 4: x++; xx = x+1; break;

}

hit = TRUE;

if ( ((control == 1) || (control ==2 )) && ( (y < 1) ||(y >= MAXY-1)) || (((control == 3) || (control == 4)) && ((x < 1) ||(x >= MAXX-1) ) ) )

{

hit = FALSE;

}

if ( (y < 0) ||(y >= MAXY) ||

(x < 0) ||(x >= MAXX) )

{

game = GAMEOVER;

control = 0;

return;

}

for (i = 0; i < MAX; i++)

{

if ((place[i].st) &&

(x == place[i].x) &&

(y == place[i].y) )

{

game = GAMEOVER;

control = 0;

return;

}

if ((place[i].st) &&

(xx == place[i].x) &&

(yy == place[i].y) )

{

hit = FALSE;

goto OUT;

}

}

OUT:

if ( (x == babyx) && (y == babyy) )

{

eat = TRUE;

count ++;

score += (1+class) * 10;

}

head ++;

if (head >= MAX) head = 0;

place[head].x = x;

place[head].y = y;

place[head].st= TRUE;

if (eat == FALSE)

{

place[tear].st = FALSE;

tear ++;

if (tear >= MAX) tear = 0;

}

else

{

eat = FALSE;

exit = TRUE;

while(exit)

{

babyx = rand()%MAXX;

babyy = rand()%MAXY;

exit = FALSE;

for( i = 0; i< MAX; i++ )

if( (place[i].st)&&( place[i].x == babyx) && (place[i].y == babyy))

exit ++;

}

}

if (head == tear) game = GAMEHAPPY;

}

void draw(void)

{

char temp[50];

int i,j;

for (i = 0; i < MAX; i++ )

{

setfillstyle(1,9);

if (place[i].st)

bar(place[i].x*15+1,place[i].y*10+1,place[i].x*15+14,place[i].y*10+9);

}

setfillstyle(1,4);

bar(babyx*15+1,babyy*10+1,babyx*15+14,babyy*10+9);

setcolor(8);

setfillstyle(1,8);

bar(place[head].x*15+1,place[head].y*10+1,place[head].x*15+14,place[head].y*10+9); /* for( i = 0; i <= MAXX; i++ )

line( i*15,0, i*15, 10*MAXY);

for( j = 0; j <= MAXY; j++ )

line( 0, j*10, 15*MAXX, j*10); */

rectangle(0,0,15*MAXX,10*MAXY);

sprintf(temp,"Count: %d",count);

settextstyle(1,0,2);

setcolor(8);

outtextxy(512,142,temp);

setcolor(11);

outtextxy(510,140,temp);

sprintf(temp,"1P: %d",score);

settextstyle(1,0,2);

setcolor(8);

outtextxy(512,102,temp);

setcolor(12);

outtextxy(510,100,temp);

sprintf(temp,"Class: %d",class);

setcolor(8);

outtextxy(512,182,temp);

setcolor(11);

outtextxy(510,180,temp);

}

main()

{

int pause = 0;

char temp[50];

int d,m;

int key;

int p;

static int keydown = FALSE;

int exit = FALSE;

int stchange = 0;

d = VGA;

m = VGAMED;

initgraph( &d, &m, "" );

setbkcolor(3);

class = 3;

init();

p = 1;

while(!exit)

{

if (kbhit())

{

key = bioskey(0);

switch(key)

{

case UP: if( (control != 2)&& !keydown)

control = 1;

keydown = TRUE;

break;

case DOWN: if( (control != 1)&& !keydown)

control = 2;

keydown = TRUE;

break;

case LEFT: if( (control != 4)&& !keydown)

control = 3;

keydown = TRUE;

break;

case RIGHT: if( (control != 3)&& !keydown)

control = 4;

keydown = TRUE;

break;

case ESC: exit = TRUE;break;

case ENTER: init();break;

case PAGEUP: class --; if (class<0) class = 0; break;

case PAGEDOWN: class ++;if (class>7) class = 7; break;

case KEY_U: if( ( (control ==1) ||(control ==2))&& !keydown) control = 3;

else if(( (control == 3) || (control == 4))&& !keydown)

control = 1;

keydown = TRUE;

break;

case KEY_K: if( ( (control ==1) ||(control ==2))&& !keydown) control = 4;

else if(( (control == 3) || (control == 4))&& !keydown)

control = 2;

keydown = TRUE;

break;

case CTRL_P:pause = 1 - pause; break;

}

}

stchange ++ ;

putpixel(0,0,0);

if (stchange > gamedelay[class] + gamedelay2[hit])

{

stchange = 0;

keydown = FALSE;

p = 1 - p;

setactivepage(p);

cleardevice();

if (!pause)

nextstatus();

else

{

settextstyle(1,0,4);

setcolor(12);

outtextxy(250,100,"PAUSE");

}

draw();

if(game==GAMEOVER)

{

settextstyle(0,0,6);

setcolor(8);

outtextxy(101,101,"GAME OVER");

setcolor(15);

outtextxy(99,99,"GAME OVER");

setcolor(12);

outtextxy(100,100,"GAME OVER");

sprintf(temp,"Last Count: %d",count);

settextstyle(0,0,2);

outtextxy(200,200,temp);

}

if(game==GAMEHAPPY)

{

settextstyle(0,0,6);

setcolor(12);

outtextxy(100,300,"YOU WIN");

sprintf(temp,"Last Count: %d",count);

settextstyle(0,0,2);

outtextxy(200,200,temp);

}

setvisualpage(p);

}

}

closegraph();

}

c语言课程设计贪吃蛇设计

. 《C语言程序设计》课程设计 题目:贪吃蛇游戏设计 学院:信息学院 专业:网络工程 姓名:李益双 学号:1101010121 班级:信息A1111班 指导教师:罗成 职称:讲师 完成日期:2012年6月

目录 1、前言 (3) 2、摘要 (4) 3、项目背景 (5) 4、需求分析 (6) 5、概要设计 (7) 6、详细设计与测试 (8) 601 定义蛇身的数据结构 (8) 602算法设计与程序流程图 (8) 602.1贪吃蛇算法设计 (8) 602.2程序流程图 (9) 603光标移动的设计与实现 (10) 603.1显示水平围墙的实现 (10) 603.2显示分数的实现 (11) 603.3接受玩家按键信息的实现 (11) 603.4游戏结束时显示信息的实现 (11) 604 贪吃蛇游戏主干的设计 (12) 604.1游戏的初始化与加载的实现 (12) 604.2食物随机产生的实现 (13) 604.3蛇身的增长设计 (14) 604.4蛇身的显示与移动的设计实现 (15)

604.5蛇的头部与物体碰撞的而设计实现 (16) 7、编码 (17) 8、结论 (18) 9、参考文献 (19) 10、致谢 (19) 前言 C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。 C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)于1970年由肯·汤普逊(Ken Thompson)所研制出的B语言的基础上发展和完善起来的。目前,C语言编译器普遍存在于各种不同的操作系统中,例如UNIX、MS-DOS、Micro soft Windows及Linux等。C语言的设计影响了许多后来的编程语言,例如C+ +、Objective-C、Java、C#等。 1980年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局(American National Standard Institution)为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。1980年代至今的有关程式开发工具,一般都支持符合ANSI C的语法。

贪吃蛇(C语言知识学习)

#include #include #include #include #include //蛇头移动方向 #define UP 1 #define DOWN 2 #define LEFT 3 #define RIGHT 4 //死亡判定(怼墙或怼自己) #define KISSASS 1 #define KISSWALL 2 //坐标转化 #define POINT(x,y) ((y)*80+(x)+1) //将(x,y)坐标转化为一个int类数值#define GETX(x) (((x)-1)%80)//将int类数值提取出原先的x #define GETY(y) (((y)-1)/80)//同理,提取出y HANDLE Console;

void Position(int x, int y); //移动光标到(x,y)//Windows.h void DrawMap();//画墙 void ShowText(char *text);//根据字符串的长短智能打印出包围字符串的笑脸void ResetSnake();//初始化贪吃蛇 int RefreshSnake();//更新蛇的移动 void CreatFood();//生成食物 void Draw();//画出蛇身和食物 void RefreshScreen();//屏幕刷新 void GameOver(int Type);//游戏结束条件 int Gaming();//代码跑起来 char play = 0; ////值为1则继续游戏,值为0游戏退出 char pause = 0; //值为1则暂停,值为0游戏继续 char direction; //蛇头方向 int snake[500]; //snake[0]为蛇头 int body; //蛇身体长度 int newbody;//吃完食物新长的蛇身 int addHead,deleteT ail;//增加蛇头擦去蛇尾,使贪吃蛇动起来 int food = 0; //食物

C语言课程设计报告——贪吃蛇源程序

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) 结构化,模块化的设计方法。

基于VC的贪吃蛇游戏的C语言代码

#include #include #include #include #define U 1 #define D 2 #define L 3 #define R 4 //蛇的状态,U:上;D:下;L:左 R:右 typedef struct SNAKE //蛇身的一个节点 { int x; int y; struct SNAKE *next; }snake; //全局变量// int score=0,add=10;//总得分与每次吃食物得分。 int status,sleeptime=200;//每次运行的时间间隔 snake *head, *food;//蛇头指针,食物指针 snake *q;//遍历蛇的时候用到的指针 int endgamestatus=0; //游戏结束的情况,1:撞到墙;2:咬到自己;3:主动退出游戏。 //声明全部函数// void Pos(); void creatMap(); void initsnake(); int biteself(); void createfood(); void cantcrosswall(); void snakemove(); void pause(); void gamecircle(); void welcometogame(); void endgame(); void gamestart(); void Pos(int x,int y)//设置光标位置 { COORD pos; HANDLE hOutput; pos.X=x;

C语言贪吃蛇

------------ 大学 C语言程序设计课程设计(论文)题目:贪吃蛇 院(系): 专业班级: 学号: 学生姓名: 指导教师: 教师职称: 起止时间:

课程设计(报告)任务及评语 院(系):教研室: 学号学生姓名专业班级 程序设计 (报告) 题目 贪吃蛇 程序设计(报告)任务 程序设计的任务与要求: (1)掌握C语言编程的基础知识。 (2)较熟练地编写C语言应用程序。 (3)了解C语言的常用标准函数、编程技巧、异常处理。 (5)联系已学过的内容,巩固所学的理论,增强独立工作能力。 (6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。 指 导 教 师 评 语 及 成 绩 成绩:指导教师签字: 2011年 1 月 4 日

目录 第1章 C语言课程设计的实训目的与要求 (1) 1.1 C语言课程设计目的 (1) 1.2 C语言课程设计的实验环境 (1) 1.3 C语言课程设计的预备知识 (1) 1.4 C语言课程设计要求 (1) 第2章 C语言课程设计内容 (2) 2.1程序功能介绍 (2) 2.2程序整体设计说明 (2) 2.2.1设计思路 (2) 2.2.2数据结构设计及用法说明 (3) 2.2.4各模块的功能及程序说明 (7) 2.2.5程序结果 (8) 2.3程序源代码及注释 (10) 第3章 C语言课程设计总结 (17) 参考资料.. (20)

C语言贪吃蛇源程序代码双人对抗

C语言贪吃蛇源程序代码双人对抗 #include <conio.h> #include <dos.h> #include <graphics.h> #include <stdlib.h> #include <bios.h> #include <time.h> #include <malloc.h> #define LEFT 100 #define TOP 30 #define RIGHT 538 #define BOTTOM 468 #define SIZE 20 #define SL 100 /*SL表示产生食物的个数*/ typedef struct Snake/*表示蛇的结点*/ { int bx,by; struct Snake *next; }Snake,*SnakeList; SnakeList createsnake(int cx,int cy)/*创建一个蛇头。*/ { SnakeList l; l=(SnakeList)malloc(sizeof(Snake)); l->next=NULL; l->bx=cx; l->by=cy; return l; } void paintsnake(SnakeList l,int scoler,int tcoler)/*输出蛇身的函数,也可作为消去蛇身的函数。*/ { SnakeList p; int x,y; p=l; setfillstyle(SOLID_FILL,scoler); for(;p->next;)

C语言课程设计报告——贪吃蛇源程序

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)文件的基本出操作。

C语言贪吃蛇实验报告

C语言程序设计报告 题目:贪吃蛇游戏的程序设计 院系:西语学院英语教育6班 : 学号:

1.1题目: 设计贪吃蛇小游戏 1.2题目的要求: 玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁游戏结束。 1.3设计的步骤: ●分析设计题目的要求,即需求分析。 ●总体设计,确定所需模块及模块间调用关系,定义系统中使用的数据类型。 ●详细设计,确定每个模块的功能,绘制主要函数的流程图。 ●编写程序代码,调试程序使其能正确运行。要求书写规范,注意采用缩进格式。函数 名、变量名要见文晓意,注释要简而不失、详而不缀。设计完成的软件要便于操作和使用。 ●程序测试,发现程序中存在的错误并改正。 ●完成报告。 2详细设计说明 2.1课程设计的要求: 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 ●收集资料,分析课题,分解问题,形成总体设计思路;

●对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具 体介绍; ●上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能 正常运行; ●完成课程设计报告。 2.2程序的功能: 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 2.3课程设计的思想: 程序关键在于表示蛇的图形及蛇的移动。用一个小圆点来表示蛇的一节身体,身体每长一节,增加一个圆点,蛇头用四节来表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,如果按与蛇运动方向相反的方向键,此游戏就会暂停,再按想前的方向键才能继续游戏,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画一个圆点和覆盖原来的圆点。为了便于理解,定义两个结构体:食物与蛇。

C语言课程设计报告材料——贪吃蛇源程序

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)文件的基本出操作。

C语言小游戏源代码《贪吃蛇》

C语言小游戏源代码《贪吃蛇》 #define N 200/*定义全局常量*/ #define m 25 #include #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define Esc 0x011b inti,j,key,k; struct Food/*构造食物结构体*/ { int x; int y; int yes; }food; struct Goods/*构造宝贝结构体*/ { int x; int y; int yes; }goods; struct Block/*构造障碍物结构体*/ { int x[m]; int y[m]; int yes; }block; struct Snake{/*构造蛇结构体*/ int x[N]; int y[N]; int node; int direction; int life; }snake; struct Game/*构建游戏级别参数体*/ { int score; int level; int speed;

}game; /*定义函数*/ void init(void);/*定义图形驱动*/ void close(void);/*定义关闭函数*/ void drawk(void);/*定义界面函数*/ void gameover(void);/*定义游戏结束函数*/ void gameplay(void);/*定义游戏主函数*/ void prscore(void);/*定义得分函数*/ void main(void){/*主函数体,调用以下四个函数*/ init(); setbkcolor(7); drawk(); gameplay(); close(); } void init(void){/*构建图形驱动函数*/ intgd=DETECT,gm; initgraph(&gd,&gm,""); cleardevice(); } void drawk(void){/*构建游戏界面函数*/ /*setbkcolor(LIGHTGREEN);*/ char str3[50]; setfillstyle(SOLID_FILL,BLUE);/*条型边框,显示版本信息*/ bar3d(48,9,610,38,1,45); setcolor(YELLOW);/*版本信息*/ sprintf(str3,"Version:5.01,Powerwing Studio"); outtextxy(330,20,str3); setfillstyle(LTSLASH_FILL,YELLOW);/*设定墙边的填充形式*/ bar3d(48,48,58,462,0,0);/*设定墙边*/ bar3d(48,39,611,48,0,0); bar3d(48,452,611,462,0,0); bar3d(602,39,611,462,0,0); } void gameplay(void){/*构建游戏主函数*/ /*初始化游戏角色*/ randomize();/*随机数发生器*/ goods.yes=1; block.yes=1; food.yes=1;/*场景中需建立新的食物*/

vc贪吃蛇c语言代码

#include "stdio.h" #include "stdio.h" #include "windows.h" #include "time.h" #include "setjmp.h" #define MAXNOD 500 #define UP 1 #define DOWN -1 #define LEFT -2 #define RIGHT 2 #define YES 1 #define NO 0 jmp_buf retry; typedef struct{ int x; int y; int status; }Food; typedef struct { int *px; int *py; int direction; int nodlen; int score; }Snack; int gotoxy(int x, int y) { COORD cd; cd.X = x; cd.Y = y; return SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cd); } void initialization(Snack *pss) { system("color 0e"); pss->px=(int *)malloc(MAXNOD*sizeof(int)); pss->py=(int *)malloc(MAXNOD*sizeof(int)); memset(pss->px,0,MAXNOD); memset(pss->py,0,MAXNOD);

pss->px[0]=0;pss->py[0]=0; pss->px[1]=1;pss->py[1]=0; pss->direction=RIGHT; pss->nodlen=2; pss->score=0; } void getscoresys(Snack scr) { gotoxy(68,7); cprintf("score: %d",scr.score); } int ctrltoi(char ctr) { switch(ctr) { case 'w': return UP; case 's': return DOWN; case 'a': return LEFT; case 'd': return RIGHT ; } } void boundary() { int cnt,y; gotoxy(15,3); for (cnt=0;cnt<45;cnt++) { cprintf("%c",4); } for (y=4;y<20;y++) { gotoxy(15,y); cprintf("%c",219); gotoxy(59,y); cprintf("%c",219); }

一个C语言写的简单贪吃蛇源代码

#include #include #include #include #include #include int grade=5,point=0,life=3; void set(),menu(),move_head(),move_body(),move(),init_insect(),left(),upon(),right(),down(),init_grap h(),food_f(),ahead(),crate(); struct bug { int x; int y; struct bug *last; struct bug *next; }; struct fd { int x; int y; int judge; }food={0,0,0}; struct bug *head_f=NULL,*head_l,*p1=NULL,*p2=NULL; void main() { char ch; initgraph(800,600); set(); init_insect(); while(1) { food_f(); Sleep(grade*10); setcolor(BLACK); circle(head_l->x,head_l->y,2); setcolor(WHITE); move_body(); if(kbhit()) { ch=getch(); if(ch==27) { ahead();

set(); } else if(ch==-32) { switch(getch()) { case 72:upon();break; case 80:down();break; case 75:left();break; case 77:right();break; } } else ahead(); } else { ahead(); } if(head_f->x==food.x&&head_f->y==food.y) { Sleep(100); crate(); food.judge=0; point=point+(6-grade)*10; if(food.x<30||food.y<30||food.x>570||food.y>570) life++; menu(); } if(head_f->x<5||head_f->x>595||head_f->y<5||head_f->y>595) { Sleep(1000); life--; food.judge=0; init_graph(); init_insect(); menu(); } for(p1=head_f->next;p1!=NULL;p1=p1->next) { if(head_f->x==p1->x&&head_f->y==p1->y) { Sleep(1000); life--; food.judge=0;

C语言课程设计报告——贪吃蛇源程序

课程设计(小游戏贪吃蛇的程序设计报告) 设计人:刘兵飞 班级:计11-1 学号:21号 2011年12月28号

目录一:概述 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)文件的基本出操作。

贪吃蛇代码-C语言-VC++6.0

/*这是一个贪吃蛇代码,运行环境VC++6.0(亲测完美运行)*/ /*该程序在dos系统下运行,不需要graphics.h头文件*/ /*该程序由C语言小方贡献,谢谢您的支持*/ #include #include #include #include #include #include #define N 21 int 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);

贪吃蛇代码-C语言

/*这是一个贪吃蛇代码,运行环境VC++6.0,Dev-C也可*/ /*该程序由C语言小方贡献,谢谢您的支持*/ #include #include #include #include #include #include #define N 21 int 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);

完整版C语言贪吃蛇设计思路和代码详解

完整版C语言贪吃蛇设计思路和代码详解到了本章,你已经学完了大部分C语言的基础知识,详细讲解贪吃蛇代码的条件就具备了。 本教程教你编写的贪吃蛇不依赖TC环境,不依赖任何第三方库,可以在VC 6.0、VS等常见IDE中编译通过,请看下图: 更多效果图请查看:游戏初始化、游戏进行中、游戏结束。 请大家先把贪吃蛇的源码下载下来浏览一下,我们再具体分析,这样将会有更好的效果。 贪吃蛇源代码下载:提取密码:81qm 贪吃蛇设计思路 上图中的红色空心方框(?)表示边框,是贪吃蛇的边界,贪吃蛇不能碰到它,否则就“死掉”,游戏结束。绿色实心方框(?)表示贪吃蛇的活动范围,贪吃蛇可以自由移动,食物(苹果)也会随机出现在这个区域。我们不妨将贪吃蛇的活动范围称为“贪吃蛇地图”,而加上边框就称为“全局地图”。 我们需要记录地图中每一个节点的信息,包括: 位置:也就是第几行几列; 类型:这个节点出现的是贪吃蛇、食物、边框,还是什么都没有(绿色的背景)。 索引:也就是数组下标,稍后会说明是什么意思。 所以需要定义一个结构体二维数组: struct{ char type; int index;

}globalMap[MAXWIDTH][MAXHEIGHT]; 用一维下标和二维下标表示位置;用 type 表示类型,不同的类型用不同的数字代表;用 index 表示索引。 直观上讲,应该将 type 定义为int类型,不过int占用四个字节,而节点类型的取值范围非常有限,一个字节就足够了,所以为了节省内存才定义为char类型。 同时,再建立一个足够大的一维数组,让贪吃蛇在数组内活动: struct{ int x; int y; } snakeMap[ (MAXWIDTH-2)*(MAXHEIGHT-2) ] x、y 表示行和列,也就是 globalMap 数组的两个下标。globalMap 数组中的索引 index 就是 snakeMap 数组的下标。 globalMap 表示了所有节点的信息,而 snakeMap 只表示了贪吃蛇的活动区域。通过 snakeMap 可以定位 globalMap 中的元素,反过来通过 globalMap 也可以找到 snakeMap 中的元素。请看下图: 图1:globalMap 和 snakeMap 的初始对应关系 贪吃蛇向左移动时,headerIndex 指向 404,tailIndex指向 406。 为什么设计的这么晦涩和复杂呢,因为这样设计有以下几个好 处: 贪吃蛇移动时不用处理所有节点,只要添加蛇头、删除蛇尾、重建 globalMap 和 snakeMap 的对应关系就可以; 随机生成食物一次就可以成功,不用担心食物会占用边框或贪吃蛇的位置; 贪吃蛇移动时,不用遍历数组就可以知道是否与自身相撞。

基于c语言的贪吃蛇游戏论文

学校代码学号分类号密级 本科学年论文 学院、系 专业名称 年级 学生姓名 指导教师 2012年 10 月 10 日

基于C语言的贪吃蛇游戏 目录 摘要: (3) 关键词 (3) 引言: (3) 1.1课题要求 (4) 1.2课题研究工具: (4) 1.3应用环境 (4) 2.游戏程序设计 (5) 2.1程序功能: (5) 2.2设计思想 (5) 2.3.1设计流程图 (7) 2.3.2 游戏流程图 (8) 3.数据结构设计 (8) 3.1 Food结构体 (8) 3.2 Snake结构体 (9) 3.3游戏中使用的宏常量表 (10) 4.算法分析 (10) 4.1各模块简介 (11) 5.系统测试 (13) 6.总结 (13) 参考文献: (14)

摘要:近年来,随着通信技术的高速发展,移动网络和移动终端性能的不断提高与完善,以及手机、电脑的高普及率,使得人们对终端系统应用开发的需求在不端增大,贪吃蛇游戏是受广大人群喜爱的一款游戏,贪吃蛇的设计比较复杂,在这个游戏设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用 c 语言的图形库函数。本文基于c语言,在Microsoft Visual C++6.0下实现需要用图形驱动文件的支持。游戏所以操作均通过键盘完成,操作简便。 关键词:函数循环结构体 引言: 贪吃蛇是一款非常经典的手机游戏,贪吃蛇的设计比较复杂,它涉及的面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用C语言的图形库函数。因此,在设计开发过程中,要对C语言的图形库函数有一定的了解,利用图形库函数实现一些功能。贪吃蛇之所以取这样的名字,其用意还是很明显的,贪吃蛇其实并不贪,它更像是人不断地追求的象征,就像现代的人只有不断努力向前才能得到自己想要的。而食物也是随机出现的,就像现在社会存在的机会,而我们只有找好自己的目标才能成功。虽然现在市面上存在各种各样的游戏版本,可是贪吃蛇市场还是依然存在。因为它的特殊在于吸引人更深入。随着游戏速度不断加快,其刺激也更强。可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机。都能很快顺利的运行。对于在外忙碌的人,不可能花费大量的时间在娱乐上,大型游戏是行不通的。这样的小游戏刚好迎合他们的需求。 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目是为了将自己的所学知识

c语言贪吃蛇小游戏程序课程设计

学生课程设计报告

一、课程设计内容 贪吃蛇小游戏程序设计 (贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中身体交叉蛇头撞倒自己身体则游戏结束。) 二、技术路线 使用VC++6.0作为开发环境, 采用控制台的形式完成整个游戏的开发,没有用到MFC。 加入了pcc32.h的头文件及库文件,用于对控制台打印效果的控制。 同时也加入了PlaySound()函数,实现了对菜单选择,游戏开始,游戏结束的音效控制。游戏栏和输出栏的同时打印,数据的更新打印效果,没有采用双线程的方法实现。 接收用户键盘输入信息,实现游戏暂停,重新开始,菜单选择和进入菜单。 三、设计与实现 1.游戏基本功能: 游戏有开始菜单界面,并有开始游戏,游戏帮助,关于游戏,退出游戏四个选项 游戏初始化后,一条蛇在密闭的围墙内,在围墙内随机出现一个食物, 通过按键盘上的四个方向键控制蛇移动, 蛇在移动过程中撞到墙壁将不会死亡,而是穿过围墙继续行进, 但是如果蛇身体交叉蛇头撞到自己的身体,则游戏结束。 同时,游戏过程中可暂停游戏,并有积分系统, 且积分每满一定值,蛇的运行速度也会逐步增加。 2.函数定义和声明 (1)头文件 #include #include #include #include #include #include "mmsystem.h" #pragma comment (lib,"winmm.lib") #include"pcc32.h" #pragma comment (lib, "pcc32_vc6.lib") using namespace std; #define UP 72 //定义上下左右常量 #define DOWN 80 #define LEFT 75 #define RIGHT 77

相关主题
文本预览
相关文档 最新文档