我有大学的项目,我应该创建一个迷宫游戏(玩家,不同类型的礼物,不同类型的墙壁......等等)。其中一个要求是 "你必须制作一个2D数组的对象(实体),其中实体可以是玩家/墙/ bomp /礼物" - 我没有得到那个?什么对创建2D对象数组有用?感谢
答案 0 :(得分:1)
据推测,您创建了一个2D对象数组,代表了" world"迷宫玩家在他的坐标所代表的迷宫中的某个位置(例如[4,7])他的动作受到他周围的墙壁的约束,并且当他被移动到蹦床/礼物/等时表示事件。 p>
示例(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
现在他可能会向上和向下移动,但他不能向左移动。
我认为当一个玩家移动到一个蹦极或礼物的指数时(在我们的情况下,当玩家在[5,6]时他遇到了一个笨蛋而且在[3,7]中他会遇到礼物一些事件应该发生(例如:当他遇到一个bomp时,他不能移动2秒,当他遇到礼物时他赢了游戏)。
我希望我能正确理解你的问题然后回答。
答案 1 :(得分:0)
当你谈论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();
}
}
Out Put:
1 - 你一直试图传递一个Cell。
2 - 你一直试图通过礼品盒!
3 - 你一直试图通过一个炸弹!
答案 2 :(得分:-1)
试试这个
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
{
}