这可能是重复的,也可能不是重复的,我在网站上发现了很多迷宫游戏和地牢游戏,但我找不到我想要的东西。
我正在尝试制作一个迷宫游戏,其中用户按下箭头键进行导航。您输入的每个地牢都可能面临威胁,或者会收到宝藏(这些部分已分类)。
我遇到的问题是,如果玩家要回到以前探索过的房间,我希望它是空的而不是重新启动。我正在为导航而苦苦挣扎,因为我目前已经对导航进行了硬编码(前三个房间)。
ChasePlayer
就像上面的代码一样,我有3个房间完全相同,但方向都不同。然后我注意到即使在我的房间里,我也会遇到这个问题。如果用户返回两个房间,我嵌套的IF语句将绝对庞大,这不正是我想要的...
我的房间等级目前如下
bool check = room.CheckCompletetion(room);
if(check == true)
{
Console.WriteLine("[Directions: North]\n");
Console.WriteLine("The entrance room is complete, choose where you want to go.");
ConsoleKeyInfo DirectionE = Console.ReadKey();
}
else
{
room.GenerateInteraction(room, hero);
room.Completed = 1;
}
(还需要进行一些修复,但首先尝试对导航进行排序) 如果您还需要其他任何功能,请问-谢谢
答案 0 :(得分:1)
在您的房间类别中,您可以捕获北,东,南和西的值,它们可以对应于在该方向上连接的房间,请参见下文:
class Room
{
public int ID;
public string Name;
public int Completed = 0;
public Random r = new Random();
public static Random r1 = new Random();
public int North;
public int East;
public int South;
public int West;
public Room(int id, string name, int north, int east, int south, int west)
{
this.ID = id;
this.Name = name;
this.North = north;
this.East = east;
this.South = south;
this.West = west;
}
在创建新的房间实例时,可以手动创建,也可以随机提供每个方向连接的房间号。
例如下面是一个房间的新实例,其中id = 1,名称=“ Room1”,北= 2,东= 0,南= 0,西=0。
Room room1 = new Room(1, "Room1", 2, 0, 0, 0);
位于1号房间以北的2号房间可能看起来像
Room room2 = new Room(2, "Room2", 0, 0, 1, 3);
这意味着两个房间由南部的room1和西方的room3连接在一起。
在您的代码中,您可以捕获当前房间以及确定下一个房间的方向选择,例如,
Room currentRoom;
choice = Console.ReadLine();
if (choice.ToLower() == "n" || choice == "north")
{
nextroom = room.north;
}
switch (nextRoom)
{
case 1:
currentRoom = room1;
room = currentRoom;
break;
}
首次创建房间时,将让您的roomCompleted bool为false,一旦房间被播放,则将其更改为true。您可以添加一条if语句,该语句将看到会议室已经完成,并将向用户显示“空会议室”。