地牢迷宫游戏-定向问题

时间:2018-09-03 08:27:57

标签: c# text console

这可能是重复的,也可能不是重复的,我在网站上发现了很多迷宫游戏和地牢游戏,但我找不到我想要的东西。

我正在尝试制作一个迷宫游戏,其中用户按下箭头键进行导航。您输入的每个地牢都可能面临威胁,或者会收到宝藏(这些部分已分类)。

我遇到的问题是,如果玩家要回到以前探索过的房间,我希望它是空的而不是重新启动。我正在为导航而苦苦挣扎,因为我目前已经对导航进行了硬编码(前三个房间)。

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;
            }

(还需要进行一些修复,但首先尝试对导航进行排序) 如果您还需要其他任何功能,请问-谢谢

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语句,该语句将看到会议室已经完成,并将向用户显示“空会议室”。