2016-07-29 51 views
-1

作爲一種發展我的編程技能的手段(迄今我已經參加過一門課),我給了自己一個自我分配的項目。我正在嘗試構建一個可玩的國際象棋遊戲。Java;全局類實例?

方法:我想要設計它,所以會有一個位置(列和行)的類,類型爲(int表示,int值,字符串名稱,運動x)的類,其中運動是另一個類的引用。

然後,有一個方形類(位置,類型)。例如,每個方塊都會被賦予一個位置和一個類型(例如空白,典當等)。我想初始化每個類型的廣場或'play'類,因爲我希望這些是預定義的。所以當我宣佈Square 1 =新的Square(P1,EMPTY)時,我可以使用預設的類型和位置初始化Square。問題是我需要將'Empty'聲明爲全局類型,我不知道該怎麼做。有沒有人看到我能做到這一點的任何方式?非常感謝您的幫助。如果有幫助,我使用的是Oracle的一個版本。

+2

我不知道你爲什麼要重新'null'(這意味着*沒有價值*)。 –

+1

使類型成爲一個枚舉,並在常量中添加EMPTY。 –

+0

然後,它可能會簡化一些事物,將板子建模爲Type [] [] board = new Type [8] [8]',而忘掉方形類。 –

回答

0

我不會去「類型」,因爲它沒有太大的意義,一個正方形基於與它相關的棋子改變類型。如果你堅持這樣做,那就這樣吧,並按照評論建議使用enum

public enum SquareType { 
    KING, QUEEN, ... , EMPTY 
} 

如果我不想這樣做,我不這樣做,我會做兩件事情之一:

  1. 溝件的position,並用Square因爲更換那也是地點。
  2. 添加對Square中的棋子的引用;如果參考是null你知道它是空的。

因爲一塊不能放在板上的位置上,也不能放在正方形上,所以可以減少冗餘,因此不需要「全局」標識符。

當分配遊戲板,其中我會做一個二維數組(也建議)我會做:

// For a non-empty square 
board[row][col] = new Square(new ChessPiece(...), ...); 
// For an empty square 
board[row][col] = new Square(null, ...);