Hallo,
jetzt wird's kompliziert, denke ich. Also, mein Programm gibt einen Datensatz aus, danach soll auf einen Mausklick innerhalb eines bestimmten Bereiches (Abfrage über x- und y-Koordinaten) gewartet werden. Erfolgt ein Klick oder sind 20 Sekunden vergangen, so soll der nächste Datensatz angezeigt werden usw. Das Ganze erinnert an ein Fragenspiel, bei dem der Spieler max. 20 Sekunden Zeit zum Beantworten einer Frage hat. Mein Problem ist das Anhalten der Fragenausgabe, damit der Spieler Zeit zum Klicken hat. Nach spätestens 20 Sekunden soll die nächste Frage erscheinen.
Hier mal ein wenig Code:
weiter unten frage ich ab, wo gecklickt wurde:
Sobald also eine der vier letzten if-Bedingungen erfüllt ist, soll's weitergehen, oder spätestens nach 20 Sekunden.
Wer kann mir helfen? Ich weiss, Gegenstück zu wait() ist notify(), aber wie mache ich das, dass es funzt???
D a n k e![/code]
jetzt wird's kompliziert, denke ich. Also, mein Programm gibt einen Datensatz aus, danach soll auf einen Mausklick innerhalb eines bestimmten Bereiches (Abfrage über x- und y-Koordinaten) gewartet werden. Erfolgt ein Klick oder sind 20 Sekunden vergangen, so soll der nächste Datensatz angezeigt werden usw. Das Ganze erinnert an ein Fragenspiel, bei dem der Spieler max. 20 Sekunden Zeit zum Beantworten einer Frage hat. Mein Problem ist das Anhalten der Fragenausgabe, damit der Spieler Zeit zum Klicken hat. Nach spätestens 20 Sekunden soll die nächste Frage erscheinen.
Hier mal ein wenig Code:
Code:
try{
stmt = con.createStatement();
rs=stmt.executeQuery("Select * from politikfragen1");
while(rs.next()){
rs.getString(1);
anzahlfragenintabelle++; //zählen der Datensätze in Tabelle
}
rs.beforeFirst(); //setze result-set auf ersten Datensatz
repaint();
for (zz1=1;zz1<=anzahlfragenintabelle;zz1++) //gebe Fragen aus
{
rs.next();
richtigeantwort=rs.getInt("richtig");
aktfrage=rs.getString("Frage");
antworta=rs.getString("A");
antwortb=rs.getString("B");
antwortc=rs.getString("C");
antwortd=rs.getString("D");
repaint();
th1.wait(); <---------------------------------------hier will ich thread1 in den Wartezustand setzen
}
}catch(Exception e){e.printStackTrace();}
weiter unten frage ich ab, wo gecklickt wurde:
Code:
class MyMouseListener extends MouseAdapter implements Runnable
{
public void run()
{
}
public void mousePressed(MouseEvent event)
{
koorx=event.getX();
koory=event.getY();
if ((koorx>=500&&koorx<=600)&&(koory>=400&&koory<=500)) //Abfrage, ob Start gedrückt
{
if(wahlzeit>0) //wenn Zeitfaktor ausgewählt wurde
{
aktiv=1; //Spiel darf starten
}
koorx=koory=0;
repaint();
}
if ((koorx>=500&&koorx<=658)&&(koory>=220&&koory<=253)) //Zeit 15 sec angeklickt
{
zeitbild15=getImage(getCodeBase(),"zeitbild15h.jpg");
zeitbild20=getImage(getCodeBase(),"zeitbild20.jpg");
repaint();
wahlzeit=15;
}
if ((koorx>=500&&koorx<=658)&&(koory>=260&&koory<=293)) //Zeit 20 sec angeklickt
{
zeitbild15=getImage(getCodeBase(),"zeitbild15.jpg");
zeitbild20=getImage(getCodeBase(),"zeitbild20h.jpg");
repaint();
wahlzeit=20;
}
if ((koorx>=82&&koorx<=100)&&(koory>=70&&koory<=95))
{
gegebeneantwort=1; //Antwort A wurde angeklickt
antwortgegeben=1; //Frage gilt als beantwortet
if (gegebeneantwort==richtigeantwort) //wenn Frage richtig beantwortet
{
korrekt=1; //antwort korrekt, richtig-Logo anzeigen
}else{korrekt=0;} //antwort falsch, falsch-Logo anzeigen
repaint();
koorx=koory=0;
}
if ((koorx>=82&&koorx<=100)&&(koory>=110&&koory<=135))
{
gegebeneantwort=2; //Antwort B wurde angeklickt
antwortgegeben=1; //Frage gilt als beantwortet
if (gegebeneantwort==richtigeantwort) //wenn Frage richtig beantwortet
{
korrekt=1; //antwort korrekt, richtig-Logo anzeigen
}else{korrekt=0;} //antwort falsch, falsch-Logo anzeigen
repaint();
koorx=koory=0;
}
if ((koorx>=82&&koorx<=100)&&(koory>=150&&koory<=175))
{
gegebeneantwort=3; //Antwort C wurde angeklickt
antwortgegeben=1; //Frage gilt als beantwortet
if (gegebeneantwort==richtigeantwort) //wenn Frage richtig beantwortet
{
korrekt=1; //antwort korrekt, richtig-Logo anzeigen
}else{korrekt=0;} //antwort falsch, falsch-Logo anzeigen
repaint();
koorx=koory=0;
}
if ((koorx>=82&&koorx<=100)&&(koory>=190&&koory<=215))
{
gegebeneantwort=4; //Antwort D wurde angeklickt
antwortgegeben=1; //Frage gilt als beantwortet
if (gegebeneantwort==richtigeantwort) //wenn Frage richtig beantwortet
{
korrekt=1; //antwort korrekt, richtig-Logo anzeigen
}else{korrekt=0;} //antwort falsch, falsch-Logo anzeigen
repaint();
koorx=koory=0;
}
}
Sobald also eine der vier letzten if-Bedingungen erfüllt ist, soll's weitergehen, oder spätestens nach 20 Sekunden.
Wer kann mir helfen? Ich weiss, Gegenstück zu wait() ist notify(), aber wie mache ich das, dass es funzt???
D a n k e![/code]