次のコードで repaint メソッドを使用して、ユーザー入力後に画面を更新しようとしています。このゲームは、ユーザーが 2 枚のカードをクリックして自分の絵を表示するカード ゲームです。写真が一致する場合、カードは表示されたままですが、写真が一致しない場合、カードを裏返して写真をもう一度非表示にします。
最初のカードをクリックすると表示されますが、2 番目のカードを選択すると、一致する画像が選択されている場合は両方のカードが表示されるか、2 番目の画像が表示されずに最初のカードが裏返されます。
ご協力いただきありがとうございます。
addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
int row = e.getX() / (Card.SIZE*2);
int col = e.getY() / (Card.SIZE*3);
//OPEN means the picture is visible
if(cards[row][col].getState() == Card.CLOSED)
cards[row][col].setState(OPEN);
repaint();
compareCards(row,col);
}
});
}
public void compareCards(int row, int col){
if(clickNum == 1){
r1 = row;
c1 = col;
clickNum++;
}
else if(clickNum == 2){
r2 = row;
c2 = col;
//The OR accounts for clicking twice on the same tile
if(cards[r1][c1].getNum() != cards[r2][c2].getNum() || (r1 == r2 && c1 == c2)){
cards[r1][c1].setState(CLOSED);
cards[r2][c2].setState(CLOSED);
}
clickNum = 1;
}
}