2014-10-07 107 views
-1

我想設計一個java卡牌遊戲,每張卡在一張5張牌中連續3張或更多的牌中獲得1分(不一定是同一套牌) 。例2,3,K,3,4 = 2次運行(2,3,4 & 2,3,4) - (交換3)對於循環卡遊戲卡住

然而,我被困在如何編寫此代碼..有人能指導我走向正確的方向嗎?

這是我到目前爲止有:

public static int[] card; 

public static void main(String args[]) { 
    int[] card = new int[5]; 

    for (card1 = 0; card1 <= 4; card1++) { 
     if (card[1] == card[0] + 1) { 
      for (card2 = card1 + 1; card2 <= 4; card2++) { 
       if (card[2] == card[1] + 1) { 
        countvalueforRun++; 
       } 

       for (card3 = card2 + 1; card3 <= 4; card3++) { 
        if (card[3] == card[2] + 1) { 
         countvalueforRun++; 
        } 

        for (card4 = card3 + 1; card4 <= 4; card4++) { 
         if (card[3] == card[3] + 1) { 
          countvalueforRun++; 
         } 
        } 
       } 
      } 
     } 
    } 
    System.out.println((countvalueforRun)); 
} 
+0

你在問邏輯嗎?我認爲你應該自己嘗試。 – 2014-10-07 11:58:10

+0

'2,3,4,5,6'應算作多少次?在你的例子中,你可以讓這些卡片重複使用多個點,所以如果這個得分是6分,即2,3,4,5,4,5,5,6, 3,4,5','3,4,5,6','2,3,4,5,6'?如果是這樣,邏輯似乎相當複雜... – Arkku 2014-10-07 12:00:46

+0

嘗試從簡單的版本開始。例如,兩張牌的分值相同1 – talex 2014-10-07 12:01:24

回答

0

既然你問的方向只有在這裏,它是:

假設你已經發明瞭一種方法,如用戶輸入或隨機卡輸入,我會按如下方式處理該問題:

第一步:首先通過使用嵌套的&循環來初始化另一個陣列cardArranged [card.length]來安排升序排列。

第2步:在2個嵌套for循環中運行cardArranged,檢查每個卡是否在包中有「運行」。當序列越過(計數)3時,你的count值爲Run給出+1。

for(int i=0;i<cardArranged.length;i++) 
    { 
    int sequence = 0; 
    int cardCount=0; 
    for(int j=i;j<cardArranged.length;j++) //j=i because cards are arranged in ascending order 
    { 
    if(cardArranged[i]==cardArranged[cardCount]+1) 
     { 
     sequence++; 
     } 
    cardCount++; 
    } 

    if(sequence>=3) 
    { 
     countvalueforRun++; 
     } 

第3步:打印countvalueforRun

希望幫助!