2014-01-15 39 views
1

嘿傢伙和女孩。 這是我在這裏的第一篇文章,所以如果你可以溫柔。[JAVA] [功課] Pickomino遊戲

我要創建一個名爲Pickomino棋盤遊戲的Java版本。在這場比賽中,你是一隻雞,你擲骰子,你從桌上收集蟲子。桌上有16張牌。如果一名球員拿起一張牌,他將其放在他的「堆疊」中,並將其從桌子上移開。

在我的「主要手段」我從表中,但你會看到越來越點這個代碼是不是100%正確的,所以我會想聽聽你的意見,也許有更好的解決方案。

if (player1.canIPick(pickedDice)){ 
     switch (sumOfDice) { 
      case 21: 
      case 22: 
      case 23: 
      case 24: 
       player1.setPoints(1); 
       break; 
      case 25: 
      case 26: 
      case 27: 
      case 28: 
       player1.setPoints(2); 
       break; 
      case 29: 
      case 30: 
      case 31: 
      case 32: 
       player1.setPoints(3); 
       break; 
      case 33: 
      case 34: 
      case 35: 
      case 36: 
       player1.setPoints(4); 
       break; 
     } 
    } 

有兩件事情,我不要在此代碼想,第一,它是錯的原因,如果有人接從表一卡,並獲得積分,另一個玩家可以選擇相同的卡。 還喜歡像我說的,這是我的主要方法的一部分,我不喜歡這樣,所以我想在另一個類來創建一個陣列,並有機會獲得從那裏進入卡,但我有這個有點麻煩。 有沒有其他建議可以幫助我? 陣列會工作還是這是一個錯誤的方式嗎?

感謝您的時間。

+0

究竟是不工作/右?您發佈的代碼並不涉及您在問題中提及的卡片。 – JNYRanger

+0

想象卡上有2個數字。一個號碼是您可以訪問該卡的號碼,它是我的*個案*中的號碼。 * setPoint()方法中的數字是玩家獲得的點數(=蠕蟲)數量。如果我是球員1,並且總共得到25分,我會得到2分。如果你輪到25分,在我的代碼中,你也會得到2分。這是錯誤的。你不能從董事會選擇該卡。 – Akumu

回答

1

我不知道這個遊戲究竟是如何發揮。 但我會建議在桌面上創建一個卡片陣列(就像你說的)。 並重新設置新遊戲開始時的值。

ArrayList<Integer> cardsOnTable = new ArrayList<Integer>(); 

for(int i = minPoint; i<=maxPoint;i++) { 
    cardsOnTable.add(i); 
} 

並且當您取出卡時,您可以檢查該卡是否仍在桌子上(在列表中)。

if (player1.canIPick(pickedDice)){ 
    if(cardsOnTable.contains(sumOfDice)) { 
     /* check for points here*/ 
     cardsOnTable.remove(sumOfDice)); 
    } 
} 

或者你可以嘗試使用帶有整數和布爾一個HashMap和有布爾表示,如果卡被取出。

+0

聽起來不錯。我會嘗試,我會回來。謝謝。 – Akumu