我只想问你一件事。我不希望您提供任何代码。我想做一个贪吃蛇游戏。我的想法是创建一个数组并使用GetAsyncKeyState()函数控制蛇。我还没有决定如何移动蛇,但我正在考虑使用链表将蛇身体的坐标保存在数组中的想法。
我有两个问题: 1. 你喜欢我使用链表的想法吗?2.我需要以某种方式清除控制台并再次输出表格。但是如果我使用system("CLS"),屏幕会闪烁。有没有更好的方法来清除控制台而不闪烁?
任何其他想法将不胜感激。:)
这是我现在的代码。
#include<iostream>
#include<windows.h>
using namespace std;
int matrix[20][40];
void FillMatrix()
{
for(int i = 0; i < 20; i++)
for(int j = 0; j < 40; j++)
matrix[i][j] = 0;
}
void Show()
{
COORD pos = {0, 0};
SetConsoleCursorPosition(cout, pos);
for(int i = 0; i < 20; i++)
{
for(int j = 0; j < 40; j++)
{
if(i == 0 || j == 0 || i == 19 || j == 39) cout << "#";
else if(matrix[i][j] == 0) cout << " ";
else cout << ".";
}
cout << endl;
}
}
void Change(int i, int j)
{
matrix[i][j] = 1;
}
int main()
{
FillMatrix();
int x, y;
x = 4;
y = 4;
while(!GetAsyncKeyState(VK_ESCAPE))
{
Sleep(100);
//system("cls");
if(GetAsyncKeyState(VK_LEFT))
{
y = y-1;
Change(x, y);
}
else
if(GetAsyncKeyState(VK_UP))
{
x = x-1;
Change(x, y);
}
else
if(GetAsyncKeyState(VK_RIGHT))
{
y = y+1;
Change(x, y);
}
else
if(GetAsyncKeyState(VK_DOWN))
{
x = x+1;
Change(x, y);
}
Show();
}
system("pause");
return 0;
}