다음 코드에서 repaint 메서드를 사용하여 사용자 입력 후 화면을 업데이트하려고합니다. 이 게임은 사용자가 자신의 사진을 공개하기 위해 두 장의 카드를 클릭해야하는 카드 게임입니다. 사진이 일치하면 카드는 계속 보이지만 사진이 일치하지 않으면 카드가 뒤집혀 사진이 다시 숨겨집니다.repaint 메서드를 사용하는 방법
두 번째 카드를 선택하면 첫 번째 카드를 볼 수있게되지만 두 번째 카드를 선택하면 일치하는 그림이 선택되거나 두 번째 그림이 공개되지 않고 첫 번째 카드 만 뒤집어지면 두 개의 카드가 모두 보입니다.
도움 주셔서 감사합니다.
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;
}
}