ちょっとお聞きしたいことがあります。あなたからのコードは期待していません。スネークゲームを作りたいです。私の考えは、配列を作成し、GetAsyncKeyState()関数を使用してヘビを制御することです。ヘビの動かし方はまだ決めていませんが、連結リストを使ってヘビの体の座標を配列に保持することを考えています。
2 つの質問があります。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;
}