贪吃蛇C

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>


void printStr(char *buf, int startX, int startY); 
void Food();
void move();
void die();
void eat();
void PRI();
void initsnake();
char* ch="■";
char* bh="YOU LOST!";

//up=53,down=50,left=49,right=51
int fx=51;
//结构体
 struct coor
{
	int n;
	int x;
	int y;
}snake[100];
struct 
{
	int x;
	int y;
}food;

int main()
{
	int FX;
	initsnake();
	Food();
l:
	while(!kbhit())
	{
		die();
		move();
		PRI();
		eat();
		Sleep(50);
		system("cls");
	}
	FX=getch();
	if(FX==53||FX==49||FX==50||FX==51)
	{
		fx=FX;
	}
	else if(FX==' ')
	{
		system("cls");
		printStr("游戏暂停,任意按键继续", 40, 24);
		system("pause");
	}
goto l;
	return 0;
}
//初始化

void initsnake()
{
	system("mode con: cols=100 lines=50");
	printf("**************************************\n");
	printf("******方向键1(左)2(下)3(右)5(上)******\n");
	printf("**********空格键可以暂停游戏**********\n");
	printf("**************************************\n");
	system("pause");
	snake[0].n=0;
	snake[0].x=0;
	snake[0].y=0;
	printStr("●",snake[0].x,snake[0].y);
	fx=51;
}

//生成食物
void Food()
{
	srand(time(NULL));
	food.x=rand()%25*4;
	food.y=rand()%25*2;
	printStr(ch,food.x,food.y);
}


/*  
*function: 在控制台指定的位置输出字符串  
  
*参数:buf,输出的字符串;startX、startY为控制台的X,Y坐标   
*/   
void printStr(char *buf, int startX, int startY)  
{  
    HANDLE hd;  
    COORD pos;  
      
    pos.X = startX;  
    pos.Y = startY;  
    hd = GetStdHandle(STD_OUTPUT_HANDLE);   /*获取标准输出的句柄*/   
    SetConsoleCursorPosition(hd, pos);      /*设置控制台光标输出的位置*/  
    printf("%s", buf);  
}  


//移动
void move()
{
	int i;
		for(i=snake[0].n;i>0;i--)
	{
		snake[i].x=snake[i-1].x;
		snake[i].y=snake[i-1].y;
	}
	switch(fx)
	{
	case 53:
		snake[0].y-=1;
		break;
	case 50:
		snake[0].y+=1;
		break;
	case 49:
		snake[0].x-=2;
		break;
	case 51:
		snake[0].x+=2;
		break;
	default :
		break;
	}

}


//判断死亡
void die()
{
	if(snake[0].x>100||snake[0].x<0||snake[0].y<0||snake[0].y>50)
	{
		printStr(bh, 30, 24);
		printf("你的得分是%d",snake[0].n);
		getch();
	}
}

//吃食物
void eat()
{
	if(snake[0].x==food.x&&snake[0].y==food.y)
	{
		snake[0].n++;
		Food();
	}
}

//输出蛇及食物
void PRI()
{
	int i;
	for(i=0;i<=snake[0].n;i++)
	printStr("●", snake[i].x,snake[i].y );
	printStr(ch,food.x, food.y);
}

猜你喜欢

转载自blog.csdn.net/u011256974/article/details/89206894