2016-01-24 82 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 - 你一直在試圖傳遞一個炸彈單元!