2015-01-12 46 views
-1

我正在尋找Java中的Mastermind。java中的策略 - 正確的錯誤位置

該代碼工作(顯然),但是有沒有辦法在較短的方式,而不是我已經做了(實際上列出每種顏色)的代碼「正確的顏色在錯誤的位置」(白色)?也許另一個循環?

如果您需要了解白色的配方,我在這裏找到它:Mastermind formula

public class Game { 

private static int white = 0; 
private static int colors = 4; 

static int[] colorsArray = { 
    1,2,3,4 
}; 
static int[] randomArray = new int[colors]; 
static int[] userArray = new int[colors]; 

static int isWhite(int[] randomArray, int[] userArray){ 

    int n1, n2, n3, n4 =0;  
    int m1, m2, m3, m4 =0; 

    //HERE'S THE PROBLEM 
    for(int i=0; i<colorsArray.length; i++){ 

     //n userArray 
     if(colorsArray[0] == userArray[i]){ 
      n1++; 
     } 
     if(colorsArray[1] == userArray[i]){ 
      n2++; 
     } 
     if(colorsArray[2] == userArray[i]){ 
      n3++; 
     } 
     if(colorsArray[3] == userArray[i]){ 
      n4++; 
     } 

     //m randomArray 
     if(colorsArray[0] == randomArray[i]){ 
      m1++; 
     } 
     if(colorsArray[1] == randomArray[i]){ 
      m2++; 
     } 
     if(colorsArray[2] == randomArray[i]){ 
      m3++; 
     } 
     if(colorsArray[3] == randomArray[i]){ 
      m4++; 
     } 

     white = (Math.min(n1, m1) + Math.min(n2, m2) + Math.min(n3, m3) + Math.min(n4, m4)) - black; 
    } 
    return white; 
} 
...other code 

任何幫助表示讚賞。提前致謝。

+5

此問題應該已發佈在[代碼評論](http://codereview.stackexchange.com/)上。 –

+0

對不起,我不知道,也許我可以編輯這個問題,只是把「白色」功能縮短了? – Raichu

回答

0

創建另外兩個數組nsms,每個數組長四個元素。在您的for循環中,創建另一個嵌套的for循環,該循環遍歷所有四個元素,比如索引j

if (colorsArray[j] == userArray[i]) 
    ns[j]++; 

if (colorsArray[j] == randomArray[i]) 
    ms[j]++; 

然後多一個for循環計算你的兩個數組nsms的各個元素之間的最小完成了。