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;
}
}