我正在编写游戏,并且在我画另一个游戏之前努力删除我的火柴人。
我可以只使用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
答案 0 :(得分:0)
代码不一定是您的问题,如果查看hero.txt文件,您会发现英雄之剑的右边没有空格...
_A_
0
/|\/
/ \
separar
_A_
0
\/|\X
/ \
separar
看看我在哪里放置“ X”字符?当英雄面对时,那里有一把剑。但是当您将他向左移动时,没有空间可以覆盖剑所在的单元。
您要么需要更改hero.txt文件,使其在关键位置具有空格,要么更新您的绘图代码,以擦除火柴人 所在的区域,然后更新其位置并绘制新位置。
由于这似乎是一种偶然的学习经验,所以很好,但是如果您决定冒险,那么您将需要使用专门为此类设计的库或重新设计代码,以“组成”场景,方法是将每个角色绘制到缓冲区,然后将完成的缓冲区移到物理屏幕。玩得开心!