贪吃蛇
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#include<time.h>
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor;
cursor.bVisible = FALSE;
cursor.dwSize = sizeof(cursor);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(handle, &cursor);
}
int main()
{
HideCursor();
system("title 贪吃蛇");
system("MODE CON COLS=30 LINES=18");
system("color 7B");
int move = 2;
int snake[200][3] = { {8,8,2},{8,7,2},{8,6,2} };
int len = 3;
int map[15][15] = { 0 };
int food[2] = { 0 };
while (true)
{
printf("%d分\n", (len - 3) * 10);
for (int i = 0; i < 15; i++)
{
map[0][i] = 8;
map[14][i] = 8;
map[i][0] = 8;
map[i][14] = 8;
}
map[snake[0][0]][snake[0][1]] = 1;
for (int i = 1; i < len; i++)
map[snake[i][0]][snake[i][1]] = 2;
int flag1 = 0;
for (int i = 1; i < 14; i++)
{
for (int j = 1; j < 14; j++)
{
if (map[i][j] == 5)
{
flag1 = 1;
break;
}
}
}
while (flag1 == 0)
{
srand((unsigned)time(NULL));
int x = rand() % 13 + 1;
int y = rand() % 13 + 1;
if (map[x][y] == 0)
{
map[x][y] = 5;
food[0] = x;
food[1] = y;
break;
}
}
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 15; j++)
{
switch (map[i][j])
{
case 8:
printf("■");
break;
case 0:
printf(" ");
break;
case 1:
printf("☆");
break;
case 2:
printf("□");
break;
case 5:
printf("★");
break;
}
}
printf("\n");
}
if (_kbhit() == 0)
{
Sleep(1000);
}
else
{
int userkey = _getch();
switch (userkey)
{
case 'w':
case 'W':
case 72:
if (move != 4)
{
move = 3;
}
break;
case 's':
case 'S':
case 80:
if (move != 3)
{
move = 4;
}
break;
case 'A':
case 'a':
case 75:
if (move != 2)
{
move = 1;
}
break;
case 'd':
case 'D':
case 77:
if (move != 1)
{
move = 2;
}
break;
default:
break;
}
}
int flag2 = 0;
switch (snake[0][2])
{
case 1:
if (map[snake[0][0]][snake[0][1] - 1] == 5)
{
flag2 = 1;
len++;
}
break;
case 2:
if (map[snake[0][0]][snake[0][1] + 1] == 5)
{
flag2 = 1;
len++;
}
break;
case 3:
if (map[snake[0][0] - 1][snake[0][1]] == 5)
{
flag2 = 1;
len++;
}
break;
case 4:
if (map[snake[0][0] + 1][snake[0][1]] == 5)
{
flag2 = 1;
len++;
}
break;
}
map[snake[len - 1][0]][snake[len - 1][1]] = 0;
if (flag2 == 0)
{
for (int i = len - 1; i >= 0; i--)
{
if (i == 0)
snake[0][2] = move;
else
{
snake[i][2] = snake[i - 1][2];
}
switch (snake[i][2])
{
case 1:
snake[i][1] -= 1;
break;
case 2:
snake[i][1] += 1;
break;
case 3:
snake[i][0] -= 1;
break;
case 4:
snake[i][0] += 1;
break;
}
}
}
else
{
for (int i = len - 1; i >= 0; i--)
{
if (i == 0)
{
snake[0][0] = food[0];
snake[0][1] = food[1];
snake[0][2] = move;
}
else
{
for (int j = 0; j < 3; j++)
snake[i][j] = snake[i - 1][j];
}
}
}
if (map[snake[0][0]][snake[0][1] ] == 8 || map[snake[0][0]][snake[0][1]] == 2)
break;
system("cls");
}
printf("GameOver\n");
system("pause");
return 0;
}