Здраствуйте уважаемые программисты. На данный момент я пишу игру в стиле Pacman на консоле. И вот я разработал ИИ и он работает так как надо, но минус в том, что он изначально при работе оставляет за собой следы.
Выглядело это так: Символ ИИ ("T").
Передвижение: TTTTTTTTT, тоесть он оставляет за собой следы и я решил добавить Console.Clear(); Следы конечно он за собой стал убирать, но полетела карта, она просто исчезла.
Помогите пожалуйста уже полтора часа сижу незнаю, что придумать.
Вот код:
int botX = 1, botY = 1;
int bag = 0;
int playerX = 1, playerY = 1;
char[,] map =
{
{'#', '#', '#', '#', '#', '#', '#', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', '%', '%', '%', ' ', '#'},
{'#', ' ', ' ', '%', '%', '%', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', '.', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', '#', '#', '#', '#', '#', '#', '#'}
};
Console.CursorVisible = false;
while (true)
{
Console.SetCursorPosition(0, 0);
for (int i = 0; i < map.GetLength(0); i++)
{
for (int i2 = 0; i2 < map.GetLength(1); i2++)
{
Console.Write(map[i, i2]);
}
Console.WriteLine();
}
Console.SetCursorPosition(botX, botY);
Console.Write("T");
Console.SetCursorPosition(playerX, playerY);
Console.Write("C");
Console.ReadKey();
ConsoleKeyInfo move = Console.ReadKey();
// управление игроком
switch (move.Key)
{
case ConsoleKey.W:
if (map[playerY - 1, playerX] != '#')
{
playerY--;
}
break;
case ConsoleKey.S:
if (map[playerY + 1, playerX] != '#')
{
playerY++;
}
break;
case ConsoleKey.D:
if (map[playerX + 1, playerY] != '#')
{
playerX++;
}
break;
case ConsoleKey.A:
if (map[playerX - 1, playerY] != '#')
{
playerX--;
}
break;
case ConsoleKey.K:
Game = false;
break;
}
if (playerY == map[6, 1])
{
bag++;
}
// Искусственный интеллект и его передвижение
for (int i = 0; botY < 6; i++)
{
Console.SetCursorPosition(botX, botY);
Console.Write("T");
Thread.Sleep(400);
botY++;
Console.Clear();
if(botY == 6)
{
for(int i2 = 0; botX < 6; i++)
{
Console.SetCursorPosition(botX, botY);
Console.Write("T");
Thread.Sleep(400);
botX++;
Console.Clear();
}
}
if (botX == 6)
{
for (int i3 = 0; botY > 1; i3--)
{
Console.SetCursorPosition(botX, botY);
Console.Write("T");
Thread.Sleep(400);
botY--;
Console.Clear();
if(botY == 1)
{
for(int i5 = 0; botX > 1; i5++)
{
Console.SetCursorPosition(botX, botY);
Console.Write("T");
Thread.Sleep(400);
botX--;
Console.Clear();
}
}
}
}
}
// while()
Console.Clear();
Console.SetCursorPosition(9, 9);
Console.WriteLine("В сумке" + bag);
}