其他分享
首页 > 其他分享> > 贪吃蛇第二版

贪吃蛇第二版

作者:互联网

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#define High 20
#define Width 30

int moveDirection;
int canvas[High][Width]={0};


void gotoxy(int x,int y)
{
	HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X=x;
	pos.Y=y;
	SetConsoleCursorPosition(handle,pos);
}

void moveSnakeByDirection()
{
	int i,j;
	for(i=1;i<High-1;i++)
	   for(j=1;j<Width-1;j++)
	      if(canvas[i][j]>0)
	         canvas[i][j]++;
	         
	int oldTail_i,oldTail_j,oldHead_i,oldHead_j;
	int max=0;
	
	for(i=1;i<High-1;i++)
	    for(j=1;j<Width-1;j++)
	        if(canvas[i][j]>0)
	    {
	    	if(max<canvas[i][j])
	    	{
	    		max=canvas[i][j];
	    		oldTail_i=i;
	    		oldTail_j=j;
			}
			if(canvas[i][j]==2)
			{
				oldHead_i=i;
				oldHead_j=j;
			}
		}
	canvas[oldTail_i][oldTail_j]=0;
	
	if(moveDirection==1)
	   canvas[oldHead_i-1][oldHead_j]=1;
	if(moveDirection==2)
	   canvas[oldHead_i+1][oldHead_j]=1;
	if(moveDirection==3)
	   canvas[oldHead_i][oldHead_j-1]=1;
	if(moveDirection==4)
	   canvas[oldHead_i][oldHead_j+1]=1;
}

void startup()
{
	int i,j;
	
	for(i=0;i<High;i++)
	{
		canvas[i][0]=-1;
		canvas[i][Width-1]=-1;
	}
	for(j=0;j<Width;j++)
	{
		canvas[0][j]=-1;
		canvas[High-1][j]=-1;
	}
	
	canvas[High/2][Width/2]=1;
	
	for(i=1;i<=4;i++)
	    canvas[High/2][Width/2-i]=i+1;
	    
	moveDirection=4;
}

void show()
{
	gotoxy(0,0);
	int i,j;
	for(i=0;i<High;i++)
	{
		for(j=0;j<Width;j++)
		{
			if(canvas[i][j]==0)
			   printf(" ");
			else if(canvas[i][j]==-1)
			   printf("#");
			else if(canvas[i][j]==1)
			   printf("@");
			else if(canvas[i][j]>1)
			   printf("*");
		}
		printf("\n");
	}
	Sleep(100);
}

void updateWithoutInput()
{
	moveSnakeByDirection();
}

void updateWithInput()
{
}

int main()
{
	startup();
	while(1)
	{
		show();
		updateWithoutInput();
	    updateWithInput();
	}
	return 0;
}

标签:oldTail,int,第二,pos,Width,贪吃蛇,include,void
来源: https://blog.csdn.net/weixin_68178856/article/details/123610334