C# 如何在控制台模式C中删除多行#
我正在编写一个游戏,在我绘制另一个游戏之前,我正在努力删除我的stickman 我可以只使用C# 如何在控制台模式C中删除多行#,c#,console-application,C#,Console Application,我正在编写一个游戏,在我绘制另一个游戏之前,我正在努力删除我的stickman 我可以只使用Console.Clear(),但它会清除整个控制台,我只需要删除以前的stickman 我正在尝试使用: private static string path = @"c:..\..\characters\"; private string file; private int xpast = 0; private int ypast = 0; private i
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);
}
}
私有静态字符串路径=@“c:..\..\characters\”;
私有字符串文件;
私有int xpast=0;
私有int ypast=0;
林哈塞帕拉考私人酒店;
公共图形()
{
}
公共图形(字符串文件)
{
this.file=文件;
StreamReader sr=新的StreamReader(路径+文件);
LinhasSeparacao=0;
做
{
LinhasSeparacao++;
}
而(sr.ReadLine()!=“separar”);
高级关闭();
}
公共无效提款(整数x,整数y,布尔形式=真)
{
string[]persona=File.ReadAllLines(路径+文件);
LimparInterior(形式、角色、x、y);
//Console.Clear();
如果(形式)
{
对于(int i=0;i
这是我的类来绘制新的字符,它需要x和y坐标。我使用一个文件来绘制图形,并将所有行放入一个名为persona的数组中。我是在有人按下箭头让那个小家伙动之后画的
如果你需要更多的信息,说点什么。以下是github的链接:
代码不一定是您的问题,如果查看hero.txt文件,您会注意到英雄之剑右侧没有空格
_A_
0
/|\/
/ \
separar
_A_
0
\/|\X
/ \
separar
看到我把“X”字放在哪里了吗?当你的英雄面对右边时,那里有一把剑。但当你把他移到左边时,没有空间覆盖剑所在的牢房
您需要更改hero.txt文件,使其在战略位置上有空格,或者更新绘图代码,使其删除粘贴人所在的区域,然后更新其位置并在新位置上绘图
因为这似乎是一种随意的学习体验,这很好,但如果你决定变得更具冒险精神,你会想使用专门为这类事情设计的库,或者重新设计代码,通过将每个角色绘制到缓冲区,然后将完成的缓冲区带到物理屏幕,从而“合成”场景。玩得开心 代码不一定是您的问题,如果查看hero.txt文件,您会注意到英雄之剑右侧没有空格
_A_
0
/|\/
/ \
separar
_A_
0
\/|\X
/ \
separar
看到我把“X”字放在哪里了吗?当你的英雄面对右边时,那里有一把剑。但当你把他移到左边时,没有空间覆盖剑所在的牢房
您需要更改hero.txt文件,使其在战略位置上有空格,或者更新绘图代码,使其删除粘贴人所在的区域,然后更新其位置并在新位置上绘图
因为这似乎是一种随意的学习体验,这很好,但如果你决定变得更具冒险精神,你会想使用专门为这类事情设计的库,或者重新设计代码,通过将每个角色绘制到缓冲区,然后将完成的缓冲区带到物理屏幕,从而“合成”场景。玩得开心 移动到要清除的位置,然后
控制台。写入(“”)
(即,写入空格),或者,如果要清除整行内容,请移动到所需位置并Console.WriteLine()代码>请注意,后一个调用会将光标定位在下一行的开头。谢谢您的回答,但我有多行要删除,但不是整行,只是确切的字符数。请看一下GitHub的链接和文件“hero.txt”,这就是我想要删除的内容。请随意编辑这些是你真正的选择(据我所知)。如果你在位置(x,y)写一个“0”,在位置(x,z)写一个“|”,记住你在哪里写的。然后,当您要删除它们时,请返回您编写它们的位置,并用空格覆盖它们。如果要删除一行中的4个字符(水平),可以写入4个空格。其他人可能知道更好的方法。如果是这样的话,我很想看看这个建议。但问题是,我用了那种方式。我有变量来保存x和y位置。在设置它们之后,我写“”以清除,但不清除所有字符。如果你想要帮助,请在编译后下载该项目。如果你正在编写大量控制台游戏,你应该检查以下内容:移动到你想要清除的位置,然后控制台。写(“”)
(即,写入空格),或者,如果要清除整行内容,请移动到所需位置并Console.WriteLine()代码>请注意,后一个调用会将光标定位在下一行的开头。谢谢您的回答,但我有多行要删除,但不是整行,只是确切的字符数。请看一下GitHub的链接和文件“hero.txt”,这就是我想要删除的内容。请随意编辑这些是你真正的选择(据我所知)。如果你在位置(x,y)写一个“0”,在位置(x,z)写一个“|”,记住你在哪里写的。然后,当您要删除它们时,请返回您编写它们的位置,并用空格覆盖它们。如果要删除一行中的4个字符(水平),可以写入4个空格。其他人可能知道更好的方法。如果是这样的话,我很想看看这个建议。但问题是,我用了那种方式。我有变量来保存x和y位置。在a设置它们之后,我写“”以清除,但不清除a