Консольная игра Персонаж - PullRequest
0 голосов
/ 28 октября 2018

С самого начала разработки моей игры я многому научился.Сейчас я нахожусь на этапе, когда мне нужно, чтобы был реализован правильный характер игрока.Я пытался сделать это некоторое время, но я не могу заставить его работать с моей системой движения.Это моя система движений (со столкновением):

ConsoleKeyInfo input = Console.ReadKey(true);
                    switch (input.KeyChar)
                    {
                        case 'w':
                            if (y >= 1 && data[y - 1][x] != '#')
                            {
                                oldx = Console.CursorLeft;
                                oldy = Console.CursorTop;
                                Console.SetCursorPosition(x + 0, y - 1);
                                x = Console.CursorLeft;
                                y = Console.CursorTop;
                                //if (x == 11 && y == 11 )            
                            }
                            break;

                        case 'a':
                            if (x >= 1 && data[y][x - 1] != '#')
                            {
                                oldx = Console.CursorLeft;
                                oldy = Console.CursorTop;
                                Console.SetCursorPosition(x - 1, y + 0);
                                x = Console.CursorLeft;
                                y = Console.CursorTop;
                            }
                            break;

                        case 's':
                            if (y < Console.WindowHeight - 1 && data[y + 1][x] != '#')
                            {
                                oldx = Console.CursorLeft;
                                oldy = Console.CursorTop;
                                Console.SetCursorPosition(x + 0, y + 1);
                                x = Console.CursorLeft;
                                y = Console.CursorTop;
                            }
                            break;

                        case 'd':
                            if (x < Console.WindowWidth - 1 && data[y][x + 1] != '#')
                            {
                                oldx = Console.CursorLeft;
                                oldy = Console.CursorTop;
                                Console.SetCursorPosition(x + 1, y + 0);
                                x = Console.CursorLeft;
                                y = Console.CursorTop;
                            }
                            break;
                    }

Моя карта является картой ASCII, отображаемой в цветах, которые может предложить ConsoleColor.Позади персонажа игрока соответствующая плитка карты должна быть перерисована без перерисовки всей карты (необходимость делать это действительно раздражает во время игры)

Когда вы выходите из карты, будет нарисована новая карта и игроктелепортируется ко входу на эту карту.

Как бы я реализовал рисование персонажа как подпрограмму?

Заранее спасибо!

1 Ответ

0 голосов
/ 28 октября 2018

Дайте им попытку

protected static void WriteAt(string s, int x, int y)
{
    try
    {
       Console.SetCursorPosition(origCol+x, origRow+y);
       Console.Write(s);
    }
    catch (ArgumentOutOfRangeException e)
    {
       Console.Clear();
       Console.WriteLine(e.Message);
    }
}

Свойство Console.CursorTop

Получает или задает положение строки курсора в области буфера.

Свойство Console.CursorLeft

Получает или задает положение курсора в столбце в области буфера.

Console.SetCursorPosition (Int32, Int32) Метод

Устанавливает положение курсора.

...