M
MichaelAnfänger
Gast
Hi,
wir sollen in unserem Semester ein Memory-Spiel programmieren, und sind dabei auf ein Problem gestoßen, das wir auch nach mehreren Stunden nicht lösen konnten. Ehrlich gesagt, habe ich das selbe Problem schon mehrfach hier im Forum gefunden, es aber nicht geschafft, die angebotenen Lösungen zu verstehen, bzw. umzusetzen. Es geht darum, dass, nachdem zwei nicht zusammengehörende Karten geöffnet wurden, diese nach einer kurzen Wartezeit wieder zugedeckt werden. Auftretendes Problem ist halt, dass die letzte der beiden geöffneten Karten erst garnicht angezeigt wird, da beide schon vorher wieder zugedeckt werden. Ich habe hier mal, die wie ich denke, relevanten Code-Teile hinzugefügt. Die Memory-Karten sind auf Buttons angezeigte Icons, die actionPerformed-methode gehört daher ebenfalls zu diesen Buttons:
Ich hoffe das ist halbwegs übersichtlich und das mir das jemand für totale Anfänger erklären kann.
Freundliche Grüße
Michael
wir sollen in unserem Semester ein Memory-Spiel programmieren, und sind dabei auf ein Problem gestoßen, das wir auch nach mehreren Stunden nicht lösen konnten. Ehrlich gesagt, habe ich das selbe Problem schon mehrfach hier im Forum gefunden, es aber nicht geschafft, die angebotenen Lösungen zu verstehen, bzw. umzusetzen. Es geht darum, dass, nachdem zwei nicht zusammengehörende Karten geöffnet wurden, diese nach einer kurzen Wartezeit wieder zugedeckt werden. Auftretendes Problem ist halt, dass die letzte der beiden geöffneten Karten erst garnicht angezeigt wird, da beide schon vorher wieder zugedeckt werden. Ich habe hier mal, die wie ich denke, relevanten Code-Teile hinzugefügt. Die Memory-Karten sind auf Buttons angezeigte Icons, die actionPerformed-methode gehört daher ebenfalls zu diesen Buttons:
Java:
public void pause()
{
try
{
Thread.sleep(5000);
}
catch (Exception e)
{
}
}
public void setCardBlind()
{
buttonCardOne.setIcon(ico);
buttonCardTwo.setIcon(ico);
}
private class SwingAction_3 extends AbstractAction {
public SwingAction_3() {
putValue(NAME, "");
putValue(SHORT_DESCRIPTION, "Some short description");
}
public void actionPerformed(ActionEvent e)
{
setActiveElement(e);
allCards.get(activeElement).setOpened(true);
ImageIcon ico = new ImageIcon(allCards.get(activeElement).getPath());
ico.setImage(ico.getImage().getScaledInstance(100,100,Image.SCALE_DEFAULT));
((AbstractButton) e.getSource()).setIcon(ico);
if (alreadyClicked == false)
{
CardOne = allCards.get(activeElement);
buttonCardOne = (JButton) e.getSource();
alreadyClicked = true;
}
else
{
CardTwo = allCards.get(activeElement);
buttonCardTwo = (JButton) e.getSource();
alreadyClicked = false;
if (CardOne.getID() == CardTwo.getIdenticCardID())
{
currPlayer.setPoints(1);
lbl2.setText("Punktzahl: " + String.valueOf(currPlayer.getPoints()));
CardOne.setOpened(true);
CardTwo.setOpened(true);
}
else
{
currPlayer = currPlayer.getFollowingPlayer();
lbl1.setText("Aktueller Spieler: " + String.valueOf(currPlayer.getID()));
lbl2.setText("Punktzahl: " + String.valueOf(currPlayer.getPoints()));
CardOne.setOpened(false);
CardTwo.setOpened(false);
pause();
setCardBlind();
}
}
}
Ich hoffe das ist halbwegs übersichtlich und das mir das jemand für totale Anfänger erklären kann.
Freundliche Grüße
Michael