C# 控制台游戏角色放置
所以我仍然在做我的游戏,从第一天起我就一直在努力调整角色的位置。我想在我的地图上放置一个“@”符号,表示玩家所在的位置。一旦“@”符号移动,应在其后面重新绘制地图分幅。这里的问题是地图是用ASCII(在控制台中)绘制的,特定的地图字符有特定的颜色(例如使用C# 控制台游戏角色放置,c#,console-application,ascii,C#,Console Application,Ascii,所以我仍然在做我的游戏,从第一天起我就一直在努力调整角色的位置。我想在我的地图上放置一个“@”符号,表示玩家所在的位置。一旦“@”符号移动,应在其后面重新绘制地图分幅。这里的问题是地图是用ASCII(在控制台中)绘制的,特定的地图字符有特定的颜色(例如使用console.Foregroundcolor=ConsoleColor.DarkYellow) 地图存储在.txt文件中,使用streamreader逐个字符读取。然后将其存储在一个称为“数据”的二维数组中,用于将颜色应用于此平铺,程序检查它
console.Foregroundcolor=ConsoleColor.DarkYellow
)
地图存储在.txt文件中,使用streamreader逐个字符读取。然后将其存储在一个称为“数据”的二维数组中,用于将颜色应用于此平铺,程序检查它在switch语句中的字符,并相应地应用颜色
这是我最接近我想要达到的角色位置:
public static void DrawCharacter()
{
lastmapchar = data[oldy][oldx];
Console.SetCursorPosition(oldx, oldy);
Console.Write(lastmapchar);
Console.ForegroundColor = ConsoleColor.White;
Console.SetCursorPosition(x, y);
Console.Write("@");
Console.SetCursorPosition(x, y);
ClearKeyBuffer();
Randomnumber = 100;
}
这将以白色绘制“@”字符,但也会以白色绘制“lastmapchar”,这会导致玩家在自己身后留下白色轨迹
卸下Console.ForegroundColor=ConsoleColor.White代码>行使播放器与它所在的第一个平铺颜色相同
因此,我的问题是:如何让游戏用白色书写“@”字符,同时用正确的颜色重新绘制后面的地图?您可以做以下两件事之一:
public static void DrawCharacter()
{
lastmapchar = data[oldy][oldx];
Console.SetCursorPosition(oldx, oldy);
// Change foreground color here, like so:
switch (lastmapchar)
{
case "#":
Console.Foregroundcolor = ConsoleColor.DarkYellow;
break;
//.... etc
}
Console.Write(lastmapchar);
Console.ForegroundColor = ConsoleColor.White;
Console.SetCursorPosition(x, y);
Console.Write("@");
Console.SetCursorPosition(x, y);
ClearKeyBuffer();
Randomnumber = 100;
}