Как удалить несколько строк в режиме консоли C # - PullRequest
0 голосов
/ 22 февраля 2019

Я кодирую игру, и я изо всех сил пытаюсь удалить своего Stickman, прежде чем я начну рисовать другой.

Я мог бы просто использовать Console.Clear(), но он очищает всю консоль, и мне нужно только удалить предыдущуюstickman.

Я пытаюсь использовать:

    private static string path =  @"c:..\..\characters\";
    private string file;
    private int xpast = 0;
    private int ypast = 0;
    private int LinhasSeparacao;

    public Graphics()
    {
    }

    public Graphics(string file)
    {
        this.file = file;
        StreamReader sr = new StreamReader(path + file);
        LinhasSeparacao = 0;
        do
        {
            LinhasSeparacao++;
        }
        while (sr.ReadLine() != "separar");
        sr.Close();            
    }

    public void Draw(int x, int y,bool forma = true)
    {
        string[] persona = File.ReadAllLines(path + file);
        LimparAnterior(forma,persona,x,y);
        //Console.Clear();
        if (forma)
        {
            for (int i = 0; i < LinhasSeparacao - 1; i++)
            {
                Console.SetCursorPosition(x, y + i);
                Console.Write(persona[i]);
            }
        }
        else
        {
            int j= 0;
            for (int i = LinhasSeparacao; i <persona.Length-1; i++)
            {
                Console.SetCursorPosition(x, y + j);
                Console.Write(persona[i]);
                j++;
            }
        }

        xpast = x;
        ypast = y;
    }

    private  void LimparAnterior(bool forma,string[] persona, int xlive, int ylive)
    {
        int i = 0;

        for (i = 0 ; i < LinhasSeparacao; i++)
        {
            Console.SetCursorPosition(xpast > 0? xpast -1:xpast,ypast  + i);
            Console.Write(" ",persona[i].Length);  
        }
    }

Это мой класс для рисования нового персонажа, ему нужны координаты x и y.Я использую файл для рисования и помещаю все строки в массив с именем persona.Я рисую после того, как кто-то нажимает стрелки, чтобы заставить маленького парня двигаться.

Если вам нужна дополнительная информация, скажите что-нибудь.Вот ссылка на github: https://github.com/digaso/Wizardoft

1 Ответ

0 голосов
/ 22 февраля 2019

Код не обязательно ваша проблема, если вы посмотрите на файл hero.txt, то заметите, что справа от меча героя нет места ...

_A_
 0 
/|\/
/ \
separar
 _A_
  0 
\/|\X 
 / \
separar

См.где я положил символ «Х»?Когда ваш герой стоит лицом к лицу, там есть меч.Но когда вы двигаете его влево, нет места для перезаписи клетки, в которой находился меч.

Вам необходимо либо изменить файл hero.txt, чтобы он занимал пробелы в стратегических местах, либо обновить код чертежа, чтобы он стирал область, где ваш крупье был , затем обновите свою позицию и нарисуйте новую позицию.

Так как это кажется случайным опытом обучения, это хорошо, но если вы решите стать более предприимчивым, вы захотите использовать библиотеку, специально разработаннуюдля такого рода вещей или переделайте свой код так, чтобы он «составлял» сцену, рисуя каждый символ в буфер, а затем выводя готовый буфер на физический экран.Веселитесь!

...