2012-04-26 78 views
0

嘿,大家我正在做一個記憶遊戲,它是一個4x4板,你點擊瓷磚揭示下面是什麼,你必須找到相應的圖片。我在鼠標點擊後的邏輯遇到麻煩,並將它們分配給guess1和guess2。鼠標點擊2D陣列註冊

Joption面板是我如何測試,看看是否猜測1和猜測2註冊。每次猜測1都可以正常工作,但我不知道如何進行第二次猜測 這是我的嘗試。

public void displayHit(Graphics g) 
{ 
    //earlier on in the code mouseClicked provides the x and y indexes for the place where you click 
    if (mouseClicked) 
    { 
     //method I coded to assign whereever you clicked on the 400x400 board to match the 4x4 array 
     centerClick(x1,y1); 
     guess1 = board[row][column]; 
     board[row][column] = board[x1][y1]; 
     guess1 = board[x1][y1]; 
     JOptionPane.showInputDialog(guess1 + "this is guess1"); 
     guess2 = -1; 
     setColor(g); 
     centerHit(xMouse, yMouse); 
     g.fillOval(xMouse, yMouse, 40, 40); 
     mouseClicked = false; 

    if ((guess2 == -1) && (mouseClicked)) 
    { 
     centerClick(x1,y1); 
     guess2 = board[row][column]; 
     board[row][column] = board[x1][y1]; 
     guess2 = board[x1][y1]; 
     JOptionPane.showInputDialog(guess2 + "this is guess2"); 
    } 
    } 

回答

0

試試這個

boolean guess2Flag;  
if (mouseClicked) 
{ 

    if(!guess2Flag) 
    { 
    centerClick(x1,y1); 
    guess1 = board[row][column]; 
    board[row][column] = board[x1][y1]; 
    guess1 = board[x1][y1]; 
    JOptionPane.showInputDialog(guess1 + "this is guess1"); 
    guess2Flag = true; 
    setColor(g); 
    centerHit(xMouse, yMouse); 
    g.fillOval(xMouse, yMouse, 40, 40); 
    mouseClicked = false; 
    } 

    else if (guess2Flag) 
    { 
    centerClick(x1,y1); 
    guess2 = board[row][column]; 
    board[row][column] = board[x1][y1]; 
    guess2 = board[x1][y1]; 
    JOptionPane.showInputDialog(guess2 + "this is guess2"); 
    guess2Flag = false; 
    mouseClicked = false; 
    } 
} 
我本來使用if else語句我忘了改回來,我只是瞎搞
+0

,仍然有我遇到過的相同問題。當我點擊一塊瓷磚時,它會顯示「這是猜測1」,然後在「這是猜測2」之後立即顯示,所以它每次都在貫穿整個過程,而不是分開。 – user1215307 2012-04-26 18:20:14

+0

好吧,我現在明白了。我還必須添加 mouseClicked = false; 然後將其添加到第二條if語句。感謝您的建議。我應該使用布爾值而不是int – user1215307 2012-04-26 18:21:36

+0

是的,我忘記了這一點,但應該工作!如果您的問題得到解決,您可以通過點擊您認爲正確的答案的「複選標記」接受答案。 – 2012-04-26 18:21:42

0

一段時間(的mouseClicked)

這很糟糕。這意味着您要麼不釋放UI線程以獲得第二次點擊,要麼您在非UI線程中調用圖形操作。

+0

。現在更新它 – user1215307 2012-04-26 18:12:30