迷宫游戏,创建2D对象数组



我有学院的项目,我应该创建一个迷宫游戏(玩家,不同类型的礼物,不同类型的墙壁。等)。其中一个要求是"你必须制作一个 2D 对象(实体)数组,其中实体可以是玩家/墙壁/bomp/礼物"——我没有得到那个?创建对象的 2D 数组有什么用处?谢谢

大概你创建了一个代表迷宫"世界"的 2D 对象数组。玩家在迷宫中的某个位置由他的坐标表示(例如[4,7]),他的动作受到周围墙壁的限制,当他移动到邦普斯/礼物/等时,事件被表示。

示例(P = 玩家,W = 墙壁,B = bomp,G = 礼物):

WWWWWWWWWWWWW
W  W        W
W  W  WWW  WW
W  W  WGW   W
W  W  W W P W
W     B W   W
WWWWWWWWWWWWW

现在,在这个例子中,玩家在索引 [4, 10] 中,他可以向任何方向移动。

如果他决定向左移动一个空格,他将在索引 [4, 9] 中,我们的 2D 数组现在看起来像这样:

WWWWWWWWWWWWW
W  W        W
W  W  WWW  WW
W  W  WGW   W
W  W  W WP  W
W     B W   W
WWWWWWWWWWWWW

现在他可以向上、向右和向下移动,但他不能向左移动。

我假设当玩家移动到一个 bomp 或礼物的索引上时(在我们的例子中,当玩家在 [5,6] 中他遇到了一个 bomp 并且在 [3,7] 中他会遇到一个礼物)应该会发生一些事件(例如:当他遇到一个 bomp 时,他不能移动 2 秒, 当他遇到礼物时,他赢得了比赛)。

我希望我正确理解了你的问题并回答了它。

当你谈论一个2D对象数组时,这意味着你正在下意识地思考面向对象编程最强大的方面之一,称为多态性。在这种情况下,字段的所有可视单元格都分组在 4 个不同的对象中。细胞只不过是炸弹,礼物,墙壁或播放器,因此您可以认为单元格对象是所有这些类型的父对象,因此您可以轻松地以类似的方式对待它们。例如,假设如果你的索引试图通过墙壁、炸弹或礼物,你将显示一条公开的简单消息。您想为每个单元格实现此方法还是为所有单元格实现一次?我认为拥有 2D 对象数组或自定义对象的主要优势是,当它们试图显示其不同的行为时,能够以类似的方式管理和控制整个数组。

 abstract class Cell
  {
        public virtual void passCell()
        {
            Console.WriteLine("Yo have been trying to pass a cell");
        }
  }
class Bomb:Cell
 {
    public override void passCell()
    {
        Console.WriteLine("You have been trying to pass Bomb Cell !");
    }
 }
class Gift:Cell
 {
    public override void passCell()
    {
        Console.WriteLine("You have been trying to pass Gift Cell !");
    }
  }
class Wall:Cell
 {
 }
 class Program
    {
        static void Main(string[] args)
        {
            Cell[] cellArray=new Cell[3];
            cellArray[2]=new Bomb();
            cellArray[1]=new Gift();
            cellArray[0]=new Wall();
            for (byte i = 0; i < 3; i++)
            {
                cellArray[i].passCell();
            }
            Console.ReadKey();
        }
    }

输出 :

1-您一直在尝试传递单元格。

2-你一直在尝试传递礼物细胞!

3-你一直在试图通过一个炸弹单元!

试试这个

    class Program
    {
        static void Main(string[] args)
        {
            object[,] entities = {
                    { new Player(), new Wall(), new Bomp(), new Gift()},
                    { new Player(), new Wall(), new Bomp(), new Gift()},
                    { new Player(), new Wall(), new Bomp(), new Gift()},
                    { new Player(), new Wall(), new Bomp(), new Gift()}
            };
        }
    }
    public class Player
    {
    }
    public class Wall
    {
    }
    public class Bomp
    {
    }
    public class Gift
    {
    }

最新更新