迷宫游戏,创建2D对象数组
本文关键字:对象 数组 2D 创建 游戏 迷宫 | 更新日期: 2023-09-27 18:31:36
我有学院的项目,我应该创建一个迷宫游戏(玩家,不同类型的礼物,不同类型的墙壁。等)。其中一个要求是"你必须制作一个 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
{
}