Avatar billede musse Nybegynder
17. december 2000 - 00:46 Der er 2 kommentarer

Timer med 2 tråde

Jeg kan ikke finde ud af at lave en timer med 2 tråde. Den første skal tælle ned fra 5 min og derefter start et spil, hvor der her tælles ned fra 20 sec for hvert spørgsmål. Håber der er nogle der kan hjælpe.
Avatar billede el_gnu Nybegynder
17. december 2000 - 13:15 #1
Hvis du bruger javax.swing.Timer, så er det ikke så svært

Følgende kode laver en klasse, hvor actionPerformed(ActionEvent e) bliver kaldt efter 5min og derefter hver 20. sekund

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Timertest extends Frame implements ActionListener
{
    Timer t;
   
    public Timertest()
    {
        super();
        t = new Timer(300000, this);
        t.start();
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                dispose();
                System.exit(0);
            }
        });
    }

    public void actionPerformed(ActionEvent e) {
        if (t.getDelay() == 300000) { //første kald efter 5 min
            //kald kode der starter spillet
            setTitle(\"5.min gået\");
            t.setDelay(20000);
        }
        else { //alle andre kalde med 20 sekunders mellemrum   
            setTitle(\"20.sec gået\");
        }
    }

    public static void main(String args[])
    {
        System.out.println(\"Starting Timertest...\");
        Timertest mainFrame = new Timertest();
        mainFrame.setSize(400, 400);
        mainFrame.setTitle(\"Timertest\");
        mainFrame.setVisible(true);
    }
}
Avatar billede musse Nybegynder
17. december 2000 - 14:38 #2
Det var ikke lige sådan. Jeg har lavet følgende men nedtællingen foregår først når der bliver trykket på en start knap. Men den skal tælle ned de 5min hele tiden, også når man ikke er på siden. Når de 5min er gået, skiftes til en anden side hvor der her tælles ned i 20sec. Her er koden jeg har lavet, håber det siger lidt mere.


public Ur(GUIStartside sc,GUILogPaa iq,GUIQuiz frame)
{
this.sc = sc;
this.iq = iq;
this.frame = frame;
     
if (messageThread == null) {
messageThread = new Thread(this);
}
}

// Thread action
public void run () {
  while (true) {
  //stopstring= \"Running\";
  sec1++;
  if (sec1 > 59) {min1++;sec1=0;}
  if (min1 == 5) {
  stopstring = \"Tiden er udløbet\";
  frame.timeup = true;
  repaint();
  frame.stoppressed = true;
  //frame.checkanswer();
  //frame.question = 11;
  sc.repaint();
  messageThread.suspend();
  }                   
  //messageThread.suspend();
  repaint();
  try {messageThread.sleep(1000);}
  catch (InterruptedException ire) {}
}
}
   
public void volgende () {
if (sc.succes) { // true if all spots found
  sc.repaint(); // new pictures
  }
}
   
public void paint (Graphics g) {
  g.drawString(\"MINUT(TER): \" + (4-min1),10,20);
  g.drawString(\"SEKUNDER: \" + (60-sec1),10,40);
  g.drawString(stopstring,20,60);
}

/*    public void paint (Graphics g){ //tråden  til 20 sekunder
  g.drawString(\"SEKUNDER: \" + (20-sec1),10,40);
  g.drawString(stopstring,20,60);
}*/

// resetter urets variabler
public void Clear() {

running = true;
messageThread.resume();    // Herstart de slapende Thread

sc.succes = false;
}

// pauze method
public void stopff () {
}

// New game actions, næste spørgsmål
public void opnieuw () {

   
//    frame.next.setLabel(\"Next\");
    running = true;
}

}



Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester