【C】用c写贪吃蛇

1.输入正确的账号密码及其用户名,登录成功进入贪吃蛇游戏界面,

2.随机生成蛇头★、食物▲的位置(x,y),并使用□打印地图

3.使用w s a d按键,完成蛇头的上下左右移动

4.蛇头碰撞到食物后,吃下食物变成蛇身的一部分●,重新生成食物位置,显示在地图上

5.蛇撞墙后或蛇咬到自己的身体,程序结束,统计吃到的食物数量

#include
#include //gotoxy()函数头文件
#include//getch()函数头文件
#include


#define COL 40
#define ROW 20


void gotoxy(int x, int y)//形参
{
    HANDLE hOut;
    COORD pos = {x, y};
	// 光标的起始位(第1列,第3行) 0是第1列 2是第3行
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hOut, pos);
	//printf("定位光标位置搜索(%d,%d)\n",pos.X,pos.Y);
}
void paintWindow(int startX,int startY,int width,int height)
{

	int i=0;
	int j=0;

	//起始位置
	gotoxy(startX,startY);
	printf("╔");
	for(i=0;i=8)//只能输入8位
			{
				break;
			}
			if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
			{
				userName[i]=ch;
				putch(ch);
				i++;
				count++;
			}
			else if(ch==13) break;//13为回车的ascll码值
			else if(ch=='\b')//删除的转义字符
			{
				if(count>0)
				{
					printf("\b \b");
					count--;
					userName[i]='\0';
				}
				
			}
			
		}

		gotoxy(22,12);
		count=0;
		i=0;
		while(1)
		{
			ch=getch();
			if(count>=12)//只能输入12位
			{
				break;
			}
			if(ch>='0'&&ch<='9')
			{
				passwd[i]=ch;
				putch('*');
				i++;
				count++;
			}
			else if(ch==13) break;
			else if(ch=='\b')//删除的转义字符
			{
				if(count>0)
				{
					printf("\b \b");
					count--;
					passwd[i]='\0';
				}
			}
		}

		gotoxy(22,18);
		if(strcmp(userName,"chen")==0&&strcmp(passwd,"1234")==0)
		{
			printf("登录成功!\n");
			flag=1;
			break;
		}
		else
		{
			printf("用户名或密码错误!请重新输入!");
			i=0;
			count=0;
			memset(userName,0,sizeof(userName));//将数组里的值初始化
			memset(passwd,0,sizeof(passwd));
			system("cls");//刷新屏幕
			paintWindow(5,5,50,20);
			gotoxy(15,10);
			printf("用户名:");
			gotoxy(15,12);
			printf("密码:");
			gotoxy(24,10);
		}
	}

	return flag;
}
int snake[100][2];//蛇身
int main()
{

	int i,j;
	int flag=0;//用来判断贪吃蛇界面是绘制蛇头蛇身还是屏幕
	int foodx,foody;
	int s=0;//保存蛇身长度
	int snakeLen=1;//开始一个蛇头
	int score=0;//得分
	int tt;

	char ch;
	char ch2;

	srand(time(NULL));
	foodx=rand()%COL;//列x
	foody=rand()%ROW;//行y
	snake[0][0]=rand()%COL;//x
	snake[0][1]=rand()%ROW;//y


	tt=login();//密码正确进入游戏
	if(tt==1)
	{
		system("cls");
		while(1)
		{
			for(i=0;i0;i--)
			{
				snake[i][0]=snake[i-1][0];
				snake[i][1]=snake[i-1][1];
			}

			//上下左右
			ch=getch();
			switch(ch)
			{
				case 'w':
					system("cls");
					snake[0][1]-=1;
					break;
				case 's':
					system("cls");
					snake[0][1]+=1;
					break;
				case 'a':
					system("cls");
					snake[0][0]-=1;
					break;
				case 'd':
					system("cls");
					snake[0][0]+=1;
					break;
				default:
					break;
			}

			//判断游戏结束,碰墙
			if(snake[0][0]<0||snake[0][0]>=COL||snake[0][1]<0||snake[0][1]>=ROW)
			{
				system("cls");

				//按'y'继续,按esc结束
				printf("是否继续游戏!按'a'可复活继续!\n按'y'重新开始游戏!\n按'esc'结束游戏!");
				ch2=getch();

				if(ch2=='a')
				{
					system("cls");
					continue;
				}
				else if(ch2=='y')
				{
					system("cls");
					
					snake[0][0]=rand()%COL;//x
					snake[0][1]=rand()%ROW;//y
					snakeLen=1;
					printf("你的总得分:%d分!\n",score);
					score=0;
					continue;
				}
				else if(ch2==27)
				{
					printf("\n\n*************************游戏结束!*******************\n");
					printf("你的总分为:%d分!\n",score);
					return 0;
				}
			}
			//蛇头碰到蛇身游戏结束
			for(s=1;s


 

你可能感兴趣的:(C语言,开发语言,1024程序员节,c语言,学习,笔记,嵌入式硬件)