Jestem nowy na huśtawce, każda pomoc doceniona.Poprawnie aktualizujesz komponenty zamachowe?
W tym kawałku kodu odwracam kartę do góry, jeśli okaże się, że nie pasują, chcę, aby odwrócili ją ponownie twarzą do dołu.
W tej chwili co się dzieje: 1. po kliknięciu pierwsza karta odwraca 2. gdy druga karta kliknięciu jednej z dwóch rzeczy dzieją (a) jeżeli są one takie same oboje zatrzymać się co jest co chcę (b) jeśli nie są one takie same, nigdy nie widzę drugiej karty, ponieważ natychmiast wyświetla ona ponownie tył karty (i tył poprzedniej karty również zgodnie z definicją w mojej metodzie).
Pomyślałem, że wprowadzenie timera uśpienia może spowodować, że druga karta będzie wyświetlana przez pewien czas, zanim się odwróci, ale tak się nie stanie.
Podjęto próbę użycia contentPane.revalidate(); & contentPane.repaint(); ale nic nie zmienia.
Włożyłem w niektórych wyjściach konsoli:
Console output:
Card: 0 set
Card: 6 set
Sleeping now
Card: 6 unset
Card: 0 unset
powyżej jest Wynikiem konsola po kliknięciu dwie karty, które nie pasują
@Override
public void actionPerformed(ActionEvent e)
{
String buttonPressed = e.getActionCommand();
int pos = Integer.valueOf(buttonPressed);
action = Control.model.ReceiveCardsTurned(pos);
keypadArray[pos].setIcon(myIcons[pos]);
System.out.println("Card: "+pos+" set");
currentTime.setText("" + Control.model.time);
currentScore.setText("" + Control.model.score);
//contentPane.revalidate();
//contentPane.repaint();
if(Control.model.twoCardsTurned == false)
{
if (action == "unturn")
{
System.out.println("Sleeping now");
try
{
Thread.sleep(1000);
}
catch (InterruptedException e1)
{
e1.printStackTrace();
}
keypadArray[pos].setIcon(back);
keypadArray[Control.model.lastCard].setIcon(back);
System.out.println("Card: "+pos+" unset");
System.out.println("Card: "+Control.model.lastCard+" unset");
}
}
}
Jeszcze raz dziękuję, bardzo pomocna i bardzo pouczająca odpowiedź. Będę musiał jeszcze trochę przeczytać na temat podstawowych pojęć związanych z huśtaniem – Ron