0

みなさん、私は4x4のボードで、タイルをクリックして下にあるものを表示し、対応する画像を見つける必要があるメモリゲームを作成しています。マウスクリックの背後にあるロジックに問題があり、それらをguess1とguess2に割り当てています。

Joptionパネルは、推測1と推測2が登録されているかどうかをテストする方法です。毎回guess1は正常に機能しますが、2番目の推測を機能させる方法がわかりません。これが私の試みです。

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");
    }
    }
4

2 に答える 2

0

while(mouseClicked)

これは悪く見えます。これは、2回目のクリックを取得するためにUIスレッドを解放していないか、非UIスレッドでグラフィックス操作を呼び出していることを意味します。

于 2012-04-26T18:11:24.440 に答える
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;
    }
}
于 2012-04-26T18:15:02.410 に答える