当前位置:网站首页>C language greedy snake

C language greedy snake

2022-07-07 23:40:00 Bald happiness you don't understand

Novice self study C, Writing games for the first time , Very excited , Make a note of

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

// auxiliary 
#define mapheight 25
#define mapwidth 60
#define shejieshu 50

// Auxiliary function , Cursor movement 
void gotoxy(int x, int y)
{
    
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD coord;
	coord.X = x;
	coord.Y = y;
	SetConsoleCursorPosition(handle, coord);

}




struct       // food 
{
    
	int x;
	int y;
}food;

// The snake 
struct 
{
    
	int x[shejieshu];
	int y[shejieshu];
	int len;
	int v;
}she;

int fangxiang = 'A';
int chuchang = 0;
int grade = 0;

void map()
{
    
	srand((unsigned int)time(NULL));      // Random function seed 

	for (int i = 0; i <= mapheight; i++)
	{
    
		gotoxy(0, i);
		printf("□");
		gotoxy(mapwidth, i);
		printf("□");
	}
	for (int j = 0;  j<= mapwidth; j+=2)
	{
    
		gotoxy(j, 0);
		printf("□");
		gotoxy(j, mapheight);
		printf("□");
	}
	she.len = 3;
	she.v ;
	she.x[0] = mapwidth / 2;
	she.y[0] = mapheight / 2;
	gotoxy(she.x[0], she.y[0]);
	printf("■");
	for (int k = 1; k < she.len; k++)
	{
    
		she.x[k] = she.x[k - 1] + 2;
		she.y[k] = she.y[k - 1];
		gotoxy(she.x[k], she.y[k]);
		printf("■");
	}

	while (1)
	{
    

		food.x = rand() % (mapwidth - 4) + 2;
		food.y = rand() % (mapheight - 2) + 1;
		if (food.x % 2 == 0)
		{
    
			break;
		}
	}


	gotoxy(food.x, food.y);
	printf("■");

	
}

	

void makefood()
{
    
	if (she.x[0] == food.x&&she.y[0] == food.y)
	{
    
		srand((unsigned int)time(NULL));
		while (1)
		{
    
			int flag = 1;

			while (1)
			{
    
				food.x = rand() % (mapwidth - 4) + 2;
				food.y = rand() % (mapheight - 2) + 1;
				if (food.x % 2 == 0)
				{
    
					break;
				}
			}

			int k;
			for ( k = 0; k < she.len; k++);
			{
    
				
				if (she.y[k] == food.y&&she.x[k] == food.x||food.x % 2 != 0)
				{
    
					flag = 1;
					break;
				}
				if (flag == 0)
				{
    
					break;
				}
			}
			gotoxy(food.x, food.y);
			printf("■");

			she.len++;
			//chuchang = 1;
			grade = grade + 1;
			break;

		}
	}
	
}
void anjian()
{
    
	int chaoxiang;
	if (_kbhit())     // Get keyboard information 
	{
    
		fflush(stdin);
		chaoxiang = _getch();
		if (fangxiang != 'A'&&chaoxiang == 'D')	
		{
    
			fangxiang = chaoxiang;
		}
		if (fangxiang != 'W'&&chaoxiang == 'S')
		{
    
			fangxiang = chaoxiang;
		}
		if (fangxiang != 'S'&&chaoxiang == 'W')
		{
    
			fangxiang = chaoxiang;
		}
		if (fangxiang != 'D'&&chaoxiang == 'A')
		{
    
			fangxiang = chaoxiang;
		}
	}
	if (!chuchang)
	{
    
		gotoxy(she.x[she.len - 1], she.y[she.len - 1]);
		printf(" ");
	}

	for (int i = she.len - 1; i > 0; i--)
	{
    
		she.x[i] = she.x[i - 1];
		she.y[i] = she.y[i - 1];

	}



	switch (fangxiang)
	{
    
		case 'W':she.y[0]--; break;
		case 'S':she.y[0]++; break;
		case 'A':she.x[0]-= 2; break;
		case 'D':she.x[0]+= 2; break;
	}



	gotoxy(she.x[0], she.y[0]);
	printf("■");
	chuchang = 0;
	gotoxy(mapwidth + 2, 0);

}
int shezhangtai()
{
    
	if (she.y[0] == 0 || she.y[0] == mapheight || she.x[0] == 0 || she.x[0] == mapwidth)
	{
    
		return 0;
	}

	for (int k = 1; k < she.len; k++)
	{
    
		if (she.x[0] == she.x[k] && she.y[k] == she.y[0])
			return 0;
	}

	return 1;
}

int main()
{
    
	int c ;
	
	while (1)
	{
    
		printf(" Please select the speed ,1 For the ordinary ,2 Advanced ,3 For difficulties ,4 For gods \n");
		scanf_s("%d", &c);

		switch (c)
		{
    
		case 1:she.v = 500; break;
		case 2:she.v = 300; break;
		case 3:she.v = 100; break;
		case 4:she.v = 50;  break;
		default:printf(" Please enter 1,2,3 A number in \n");
		}
		if (c == 1 || c == 2 || c == 3 || c == 4)
		{
    
			break;
		}
	}

	printf(" Please open capitalization ");
	system("pause");
	
	system("cls");

	map();

	while (1)
	{
    
		gotoxy(mapwidth + 2, 0);
		printf(" score :%d", grade);
		makefood();
		Sleep(she.v);
		anjian();
		if (!shezhangtai())
		{
    
			break;
		}
		
	}

	gotoxy(mapwidth , mapheight +1);
	printf("GAME OVER\n");
	system("pause");
	return 0;
}


原网站

版权声明
本文为[Bald happiness you don't understand]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202130555560387.html