尝试文字冒险游戏。 Visual Studios 2019,控制台应用程序。
我有这样的房间课程
public class Room
{
public string name;
public string description;
public int roomNumber;
public int lightLevel;
public int trap;
public int flag1;
public int flag2;
public int north;
public int northeast;
public int east;
public int southeast;
public int south;
public int southwest;
public int west;
public int northwest;
public int up;
public int down;
}
和带有“房间”数据的文本文件。
{front street}
{standing in a dirt road.}
{1 10 0 0 0 0 0 2 0 0 0 0 0 0 0}
{front street}
{standing on a dirt road on the edge of town.}
{2 10 0 0 0 0 0 3 0 0 0 1 0 0 0}
我有112个房间(或街区),它们被读入列表。我计划将此列表扩展到大约400个房间。我需要将一些房间传递给几种不同的方法。我可以通过整个列表,这并不是一个好主意。这需要传递大量数据,并且了解gremlins在大量多余数据中找到了自己的方式。我可以这样传递单个元素...
PrintRoom(ref rooms[currentRoom].name);
但是我似乎找不到通过单个房间的正确语法。我想一次通过一个房间/一个街区。实际上,我只需要确定最后的十个要素,就可以确定玩家是否可以朝某个方向前进,但是我认为对于所有工作而言,通过整个房间会比较容易。 那么,传递单个房间(或街区)的正确语法是什么? 该函数的标题是什么样的?
我先谢谢你。
答案 0 :(得分:1)
如果将它们读入列表,为什么不尝试使用LINQ?您可以使用lambda表达式来获取所需的信息,并且如果您想投影到一个对象中,该对象具有多个属性,而该属性却少于整个属性集合,则可以使用这种方法获得更大的灵活性。>
public class LinqExample
{
public void LinqMethod()
{
var rooms = new List<Room>
{
new Room
{
name = "roomA",
description = "Desc Abc",
roomNumber = 1,
// etc
},
new Room
{
name = "roomB",
description = "Desc Def",
roomNumber = 1,
// etc
}
};
var room = rooms.FirstOrDefault(x => x.name == "roomB");
PassRoomExample(room);
}
public void PassRoomExample(Room room)
{
Console.WriteLine($"name: { room.name }, Description: { room.description }, Room #: {room.roomNumber}");
}
}