@Igorr2121212

Как сделать так чтобы ИИ при передвижении стирал за собой свои шаги?

Здраствуйте уважаемые программисты. На данный момент я пишу игру в стиле 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);

            }
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы