2016-01-24 51 views
0

我有大学的项目,我应该创建一个迷宫游戏(玩家,不同类型的礼物,不同类型的墙..等)。其中一个要求是 “你必须制作一个二维数组的对象(实体),其中实体可以是玩家/墙/炸弹/礼物” - 我没有得到那个?创建二维数组对象有什么用处?由于迷宫游戏,创建二维数组对象

+3

“创建二维数组对象有什么用处?” - 如果这个问题与您认为更有用的替代方法形成对比,这个问题将更容易以有用的方式回答。 –

+0

有用吗?相反,这是无用的原因,你会最终做大量的铸造/拳击。相反,您应该考虑使用通用二维数组或基本类型的二维数组。 – Rahul

+1

我不认为“二维数组对象”实际上是指数据类型,而是指对象作为类的一个实例的概念。类型可以根据最方便的选择自由选择。 –

回答

-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 
    { 
    } 
1

想必您创建对象的二维数组代表了迷宫的“世界”。一个玩家坐在由他的坐标表示的迷宫中的某个地方(例如[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]和我们的二维数组将现在这个样子:

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]他会遇到礼物),一些事件应该发生(例如:当他遇到一个激流时,他不能移动2秒,当他遇到他赢得比赛的礼物时)。

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

0

当你在谈论一个二维的对象数组时,这意味着你正在潜意识地思考面向对象编程的一个最强大的方面,它被称为多态。在这种情况下,您所在领域的所有视觉单元都被分组到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-你一直在试图传递一个Gift Cell!

3 - 你一直在试图传递一个炸弹单元!