# CountDown



## monster2812 (21. Apr 2008)

Hallo zusammen,

habe folgendes Problem:

Muss für ein Java-Spiel einen CountDown erstellen der von 60 Sekunden bis Null herunterzählt. Hab leider wenig Ahnung von Java, kann mir da jemand helfen? Bitte!

monster2812


----------



## Maeher (21. Apr 2008)

Für das regelmäßige Herunterzählen würde ich mal einen Blick in die Timer-Klasse werfen.


----------



## monster2812 (22. Apr 2008)

Komme leider damit nicht richtig zurecht, kann mir jemand einen Beispielcode zur Verfügung stellen?


----------



## ARadauer (22. Apr 2008)

```
import java.util.TimerTask;
import java.util.Timer;



public class Test2 extends TimerTask {

	private int countDown = 0;
	private Timer t;
	
	
	public static void main(String[] args) {
		new Test2(20);
	}
	
	public Test2(int countDown){
		this.countDown = countDown;
		t = new Timer();
		t.scheduleAtFixedRate(this, 0, 1000);
	}

	public void run(){
		countDown--;
		System.out.println(countDown);
		if(countDown<=0){
			System.out.println("vorbei");
			t.cancel();
		}

	}

}
```

infos zum Timer
http://java.sun.com/javase/6/docs/api/java/util/Timer.html


----------



## Niki (22. Apr 2008)

```
Timer timer = new Timer("Countdown");
		TimerTask tt = new TimerTask(){
			
			private int counter = 60;
			
			@Override
			public void run() {
				if(counter < 0){					
					cancel();
					return;
				}				
				System.out.println(counter--);				
			}			
		};
		timer.scheduleAtFixedRate(tt, new Date(), 1000);
```


----------



## monster2812 (22. Apr 2008)

Danke für den Quellcode, das von ARadauer hat funktioniert. Habe folgendes Spiel bisher programmiert, wie implementiere ich den CountDownzähler für das Spiel? Soll in einem kleinen Fenster oder eben direkt im Spiel angzeigt werden. Danke für die Hilfe!!!

Quellcode:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import java.lang.Math;


public class CSpielfeld{

  JFrame frame = new JFrame("Hau drauf");
  static CSpielfeld spiel = new CSpielfeld();
  CFeld [] feld;
  static int feldzahl;
  JMenuBar menubar;
  //Atribut für die Maximale Spaltenbreite um ein Quadrat zu bekommen
  int max = 0;


  CSpielfeld(){

    menubar = new JMenuBar();
    frame.setSize(500, 500);
    frame.setVisible(true);

    JMenu mspiel = new JMenu("Spiel");                  //  mspiel  = Menu variable

    JMenuItem mispiel1 = new JMenuItem("Neues Spiel");          //  mispiel = MenuItem variable
    JMenuItem mispiel2 = new JMenuItem("Highscore");
    JMenuItem mispiel3 = new JMenuItem("Beenden");

    mspiel.add(mispiel1);
    mspiel.add(mispiel2);
    mspiel.addSeparator();
    mspiel.add(mispiel3);
    menubar.add(mspiel);
    frame.setJMenuBar(menubar);

  }

  //methode um ein neues Spielfeld zu erstellen
  public void neuesSpiel(int feldanzahl){
    feldzahl = feldanzahl;
    feld = new CFeld[feldanzahl];

    max = (int) Math.sqrt((double)feldanzahl);
    frame.getContentPane().setLayout(new GridLayout(max,max));
    // Spielfelder initialisieren
    for(int zähler=0; zähler<feldzahl; zähler++){
      feld[zähler] = new CFeld();
      feld[zähler].setBorderPainted(false);
      feld[zähler].addActionListener(new CMeinActionLauscher());
      frame.getContentPane().add(feld[zähler]);
    }
  }

  // Methode um den das Spielfeld beim richtigen Button druck wieder neu zu kalibrieren
  public void nextTake(int feldzahl){

    Random zufall = new Random();
    int zufallszahl = zufall.nextInt(feldzahl);
    // Spielfeld mit default feldern füllen
    for(int i=0;i<feldzahl;i++){
        feld_.setIcon(new ImageIcon("gras.gif"));
        feld.setActionCommand("niete");
      }
    // Das Ziel setzen
    feld[zufallszahl].setIcon(new ImageIcon("Soldat2.png"));
    feld[zufallszahl].setActionCommand("treffer");
    feld[zufallszahl].setTreffer(true);

  }
  // Methode um um das Änderungintervall zu setzen
  public void setSleep(long time){
    try {
        Thread.sleep(time);
      }
      catch(Exception e)
      {return;}
  }

  public static void main(String [] args){
    spiel.neuesSpiel(36);
      while (true){ 
      spiel.nextTake(36);
      spiel.setSleep(1000);
      } 
  }

  //überwachung der Treffer
  class CMeinActionLauscher implements ActionListener {
      public void actionPerformed(ActionEvent e) {

        String Label = new String();
        Label = e.getActionCommand();

        if(Label.equals("treffer")){
          System.out.println("richtig");
          spiel.nextTake(feldzahl);

        }
      }
  }
}

// Button Klasse
class CFeld extends JButton{

  boolean treffer = false; 

  void setTreffer(boolean getroffen){
    treffer = true;
  }

  boolean getTreffer(){
    return treffer;
  }
}_


----------



## Quaxli (23. Apr 2008)

Eigentlich kannst Du gar kein Java, oder?


----------



## Guest (23. Apr 2008)

Bin eben Anfänger, hab halt wenig Erfahrung, darum bitte ich ja um Hilfe.


----------

