如何在控制台模式C#中删除多行

时间:2019-02-21 22:41:31

标签: c# console-application

我正在编写游戏,并且在我画另一个游戏之前努力删除我的火柴人。

我可以只使用Console.Clear(),但它会清除整个控制台,而我只需要删除以前的火柴人。

我正在尝试使用:

    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坐标。我在绘图中使用文件,并将所有行放入名为“角色”的数组中。我正在画画,是有人按下箭头使小家伙移动。

如果您需要更多信息,请说些什么。这是指向github的链接: https://github.com/digaso/Wizardoft

1 个答案:

答案 0 :(得分:0)

代码不一定是您的问题,如果查看hero.txt文件,您会发现英雄之剑的右边没有空格...

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

看看我在哪里放置“ X”字符?当英雄面对时,那里有一把剑。但是当您将他向左移动时,没有空间可以覆盖剑所在的单元。

您要么需要更改hero.txt文件,使其在关键位置具有空格,要么更新您的绘图代码,以擦除火柴人 所在的区域,然后更新其位置并绘制新位置。

由于这似乎是一种偶然的学习经验,所以很好,但是如果您决定冒险,那么您将需要使用专门为此类设计的库或重新设计代码,以“组成”场景,方法是将每个角色绘制到缓冲区,然后将完成的缓冲区移到物理屏幕。玩得开心!