Я хочу сделать змею в c ++, но я не знаю, как заставить змею двигаться в одном направлении, пока я не изменю ее, какие-нибудь идеи?Я не хочу что-то вроде Press escape для выхода, я уже сделал весь код, я просто хочу знать, как заставить его работать, и просто менять направление, а не менять направление на каждом шаге.Спасибо за совет Вот мой код, если вы можете мне помочь:
#include <iostream>
#include <unistd.h>
#include <conio.h>
using namespace std;
int xs[100000], ys[100000];
int dx[5] = { 1,0,0,-1 };
int dy[5] = { 0,-1,1,0 };
int a[101][101];
int main()
{
int z = 1, u, c, n, OK = 0, x, y, i, j, Repet = 0;
char key;
while (OK == 0)
{
x = rand() % 25 + 1;
y = rand() % 25 + 1;
if (a[x][y] == 0)
OK = 1;
}
a[x][y] = 3;
u = 1;
xs[u] = x;
ys[u] = y;
c = 1;
u = 1;
for (i = 1; i <= 25; i++)
{
a[1][i] = 9;
a[i][1] = 9;
a[25][i] = 9;
a[i][25] = 9;
}
OK = 0;
while (OK == 0)
{
x = rand() % 25 + 1;
y = rand() % 25 + 1;
if (a[x][y] == 0)
OK = 1;
}
a[x][y] = 5;
for (i = 1; i <= 25; i++)
{
for (j = 1; j <= 25; j++)
{
if (a[i][j] == 0) cout << " ";
if (a[i][j] == 3) cout << "@ ";
if (a[i][j] == 5) cout << "* ";
if (a[i][j] == 9) cout << "# ";
}
cout << '\n';
}
while (z)
{
key = getch();
if (key == 'w' || key == 'W') n = 8;
if (key == 'a' || key == 'A') n = 4;
if (key == 's' || key == 'S') n = 2;
if (key == 'd' || key == 'D') n = 6;
OK = 0;
if (Repet != 1)
c++;
else Repet = 0;
u++;
xs[u] = xs[u - 1] + dx[n / 2 - 1];
ys[u] = ys[u - 1] + dy[n / 2 - 1];
a[xs[c - 1]][ys[c - 1]] = 0;
if (a[xs[u]][ys[u]] == 9 || a[xs[u]][ys[u]] == 3)
{
cout << "YOU LOST";
cout << "SCORE: " << u - c + 1;
return 0;
}
a[xs[u]][ys[u]] = 3;
a[xs[c - 1]][ys[c - 1]] = 0;
if (xs[u] == x&&ys[u] == y) {
Repet = 1;
a[x][y] = 3;
x = rand() % 25 + 1;
y = rand() % 25 + 1;
while (a[x][y] != 0)
{
x = rand() % 10 + 1;
y = rand() % 10 + 1;
}
a[x][y] = 5;
}
usleep(1000);
system("CLS");
for (i = 1; i <= 25; i++)
{
for (j = 1; j <= 25; j++)
{
if (a[i][j] == 0) cout << " ";
if (a[i][j] == 3) cout << "@ ";
if (a[i][j] == 5) cout << "* ";
if (a[i][j] == 9) cout << "# ";
}
cout << '\n';
}
cout << "Your score is " << u - c + 1 << '\n';
}
}