我正在構建河內遊戲塔,可以從控制檯或命令行播放。請注意,這不是一個遞歸程序;我正在嘗試構建一個可以由用戶播放的遊戲。我正在使用ArrayList的ArrayList存儲用戶選擇的釘(1,2,3)和光盤(N)。陣列列表ArrayList的掛鉤和光盤在河內遊戲塔
我的實例變量和構造函數:
private ArrayList lists;
private ArrayList peg1 = new ArrayList<>();
private ArrayList peg2 = new ArrayList<>();
private ArrayList peg3 = new ArrayList<>();
//Constructor
public TowersOfHanoi() {
ArrayList<Integer>[] lists = new ArrayList[3];
lists[0]= this.peg1;
lists[1]= this.peg2;
lists[2]= this.peg3;
}
如何初始化遊戲
public ArrayList initializeGame(int n) {
for (int i = 1; i < n; i++) {
peg1.add(i);
}
}
我試圖讓,將採取兩個整數作爲從和崗位參數的移動方法。 I.E.用戶將光盤從帖子N移到帖子N,並檢查該移動是否合法。
我試圖找出過去幾個小時的情況,但我甚至無法弄清楚如何獲得適當的掛鉤並將磁盤從一個掛鉤移動到另一個掛鉤,更別說檢查一個更大的磁盤是不是' t被移動到較小的磁盤上。這是我想出來的方法,我得到一個空指針異常,這讓我認爲lists
未正確初始化。這是我明顯錯誤的方法。
public void move(int moveFrom, int moveTo){
lists.get(moveTo)
lists.add(0, moveTo);
}
因此,誰能幫助我瞭解如何使用int作爲索引,以獲得相應的PEG(int值由用戶輸入)和移動盤?
你'lists'陣列被遮蔽了'lists'場(這是一個ArrayList,而不是一個數組, 順便一提)。因此,該字段永遠不會被分配,並將'null'作爲默認值。 – 2014-10-03 01:38:34
好吧,我明白你在說什麼,我改成'this.lists = new ArrayList [3]'。但是,我的移動方法仍然是錯誤的,只是不確定如何處理這裏的邏輯。 – 2014-10-03 01:55:38