我需要一些帮助。我一直坚持这个,我需要一些帮助。所以我们应该创建一个使用OOP主体的游戏。游戏网格是使用我们在名为Map.cs的抽象类中创建的2D数组创建的。但是我一直试图弄清楚如何让玩家对象('@')在地图上打印出来,而在Player.cs类中 我只能向你展示Map.cs中的这段代码,因为玩家类是一团糟
Map.cs
abstract class Map
{
public const int RAD = 10;
public const int KOLUMN = 19;
public string[,] table = new string[RAD, KOLUMN];
public Map()
{
//Creates the map
for (int i = 0; i < RAD; i++)
{
for (int j = 0; j < KOLUMN; j++)
{
table[i, j] = ".";
}
}
}
}
答案 0 :(得分:0)
使用你的Map类(我已经将常量重命名为ROWS和COLUMNS),我为播放器编写了以下示例类。
public class Player
{
public int PositionX { get; set; }
public int PositionY { get; set; }
// constructors
}
然后在主课程中你可以得到以下内容。注意,这将打印左上角的(0,0)并且可能会弄乱列和行,但是在理解了非常基本的想法之后,您应该能够使它工作。
static void Main(string[] args)
{
Map map = new Map();
Player player = new Player();
PrintMap(map, player);
}
static void PrintMap(Map map, Player player)
{
for (int i = 0; i < Map.ROWS; i++)
{
for (int j = 0; j < Map.COLUMNS; j++)
{
if (player.PositionX == i && player.PositionY == j)
{
Console.Write('@');
}
else
{
Console.Write(map.table[i, j]);
}
}
Console.WriteLine();
}
}
要记住的一件事是,在OOP编程中(遵循SOLID设计原则),每个类应该只负责一件事。保持地图状态并打印地图是两个完全不同的任务:创建一个保存状态并在其他地方实施打印的地图类更好。