贪吃蛇课程设计2

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

#include

#include

#include

#include

#include

#define LEN 30

#define WID 25

int snake[LEN][WID]={0};

char snake_dir = 'a';//记录蛇头的移动方向

int snake_point_x,snake_point_y;//记录蛇头的位置

int snake_len=3;//记录蛇的长度

clock_t now_time;//记录当前时间

int waiting_time=300;//记录自动移动的时间间隔

int eat_apple = 1; //吃到苹果表示为0

int bake_raod = 0; //背景颜色

int level=1;

int score=-1;

int apple=-1;

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

void Set_Color(int color) //设置颜色

{

SetConsoleTextAttribute(hConsole, color);

}

void hid_guanbiao()

{

//隐藏光标CONSOLE_CURSOR_INFO cursor_info={1 , 0};

SetConsoleCursorInfo(hConsole, &cursor_info);

}

void goto_point(int x,int y)

{

//设置光标位置COORD point;

point.X=x;

point.Y=y;

SetConsoleCursorPosition(hConsole , point);

}

void game_over() //蛇死了

{

goto_point(29,6);

printf("GRAM OVER!!");

Sleep(1000);

system("pause > nul");

exit(0);

}

void clear_snake()

{

//擦除贪吃蛇int x,y;

for(y = 0;y < WID; y++)

{

for(x = 0;x < LEN;x++)

{

goto_point(x*2 , y);

if(snake[x][y]==snake_len)

printf(" ");

}

}

}

void rand_apple()

{ //随机产生苹果int x,y;

do{

x=(rand()%(LEN-2))+1;

y=(rand()%(WID-2))+1;

}while(snake[x][y]);

snake[x][y]=-1;

goto_point(x*2,y);

Set_Color(rand()%8+1);

printf("●");

eat_apple=0;

}

void Pri_News() //打印信息{

Set_Color(0xe);

goto_point(73,4);

score += level;

printf("%3d", score);

goto_point(73, 6);

printf("%3d", level);

goto_point(73, 8);

printf("%3d",snake_len);

goto_point(73, 10);

printf("0.%dm/s", 100-waiting_time/10);

goto_point(75, 12);

printf("%d", apple);

}

void level_snake() //设置等级系统、速度

{

if((apple-1)/10==level)

{

++level;

if(waiting_time>50)

waiting_time-=50;

else if(waiting_time>20)

waiting_time-=20;

else if(waiting_time>10)

waiting_time-=10;

else

waiting_time-=1;

}

}

void move_snake()// 让蛇动起来

{

int x,y;

for(x=0;x

{ // 先标记蛇头

for(y=0;y

{

if(snake[x][y]==1)

{

switch(snake_dir)

{ // 根据新的蛇头方向标记蛇头

case 'w':

if(y!=1)

//snake_point_y=WID-2;

//else

snake_point_y=y-1;

snake_point_x=x;

break;

case 's':

if(y!=WID-2)

//snake_point_y=1;

// else

snake_point_y=y+1;

snake_point_x=x;

break;

case 'a':

if(x!=1)

//snake_point_x=LEN-2;

//else

相关文档
最新文档