验证中...
Languages: C/C++
Categories: 微信开发
Latest update 2019-11-09 21:45
源.cpp
Raw Copy
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#define high 15
#define width 25
int food_x, food_y;
int canvas[high][width] = { 0 };//0为空格,-1为边框,1为蛇头,>1为蛇身
int movedirection;
void gotoxy(int x, int y)//清屏函数
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
void HideCursor()//隐藏光标
{
CONSOLE_CURSOR_INFO cursor_info = { 1,0 };
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
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;
food_x = rand() % (high - 5) + 2;
food_y = rand() % (width - 5) + 2;
canvas[food_x][food_y] = -2;
}
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("*");
else if (canvas[i][j] == -2)
printf("F");
}
printf("\n");
}
Sleep(500);
}
void movesnakebydirection()
{
int i, j;
int max = 0;
int oldtail_i, oldtail_j;
int oldhead_i, oldhead_j;
for (i = 1; i < high - 1; i++)
for (j = 1; j < width - 1; j++)
{
if (canvas[i][j] > 0)
{
canvas[i][j]++;
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;
}
}
}
int newhead_i, newhead_j;
if (movedirection == 1)
{
newhead_i = oldhead_i - 1;
newhead_j = oldhead_j;
}
if (movedirection == 2)
{
newhead_i = oldhead_i + 1;
newhead_j = oldhead_j;
}
if (movedirection == 3)
{
newhead_i = oldhead_i;
newhead_j = oldhead_j - 1;
}
if (movedirection == 4)
{
newhead_i = oldhead_i;
newhead_j = oldhead_j + 1;
}
if (canvas[newhead_i][newhead_j] == -2)
{
canvas[food_x][food_y] = 0;
food_x = rand() % (high - 5) + 2;
food_y = rand() % (width - 5) + 2;
canvas[food_x][food_y] = -2;
}
else
{
canvas[oldtail_i][oldtail_j] = 0;
}
if (canvas[newhead_i][newhead_j] > 0 || canvas[newhead_i][newhead_j] == -1)
{
printf("游戏失败\n");
exit(0);
}
else
{
canvas[newhead_i][newhead_j] = 1;
}
}
void updateWithoutInput()
{
movesnakebydirection();
}
void updateWithInput()
{
char input;
if (kbhit())
{
input = getch();
if (input == 'a')
movedirection = 3;
if (input == 'd')
movedirection = 4;
if (input == 'w')
movedirection = 1;
if (input == 's')
movedirection = 2;
}
}
int main()
{
startup();//游戏初始化
while (1)
{
HideCursor();
show();//游戏布局
updateWithoutInput();//控制无关的更新
updateWithInput();// 控制有关的更新
}
return 0;
}

Comment list( 0 )

Sign in for post a comment

Help Search

191139_cd20d5fd_5186603 191143_ebef6f8d_5186603