Hey Leute!
Ich habe mich eben hier angemeldet, da ich bei einem Projekt nicht weiter weiß.
Ich versuche ein kleines Spiel zu programmieren, bei dem man für eine bestimmte Zeit Bällen ausweichen soll, die zufällig durch den JFrame "fliegen". Für die Animation verwende ich einen Swing Timer. Diesen möchte ich nach Ablauf der Zeit stoppen, um das Bild anzuhalten. Die Zeit messe ich in einer Klasse, die ich aus der main aufrufe, da sich mein Programm sonst für die Zeit in der While-Schleife festgesetzt. Nun möchte ich nach dem Ablaufen der Zeit von dort aus den Timer stoppen. Zu erst habe ich es mit timer.stop(); versucht. Beim testen wurde mir an der Stelle eine NullPointerException ausgegeben. Also habe ich ein bisschen gegoogelt und es mit timer = null; probiert. Beim testen habe ich wieder die gleiche Fehlermeldung ausgegeben bekommen.
Nun hoffe ich auf eure Hilfe und frage euch nach hilfreichen Ideen und Tipps, wie ich das Problem lösen könnte.
Da ist mein Code:
Grüße Moritz
Ich habe mich eben hier angemeldet, da ich bei einem Projekt nicht weiter weiß.
Ich versuche ein kleines Spiel zu programmieren, bei dem man für eine bestimmte Zeit Bällen ausweichen soll, die zufällig durch den JFrame "fliegen". Für die Animation verwende ich einen Swing Timer. Diesen möchte ich nach Ablauf der Zeit stoppen, um das Bild anzuhalten. Die Zeit messe ich in einer Klasse, die ich aus der main aufrufe, da sich mein Programm sonst für die Zeit in der While-Schleife festgesetzt. Nun möchte ich nach dem Ablaufen der Zeit von dort aus den Timer stoppen. Zu erst habe ich es mit timer.stop(); versucht. Beim testen wurde mir an der Stelle eine NullPointerException ausgegeben. Also habe ich ein bisschen gegoogelt und es mit timer = null; probiert. Beim testen habe ich wieder die gleiche Fehlermeldung ausgegeben bekommen.
Nun hoffe ich auf eure Hilfe und frage euch nach hilfreichen Ideen und Tipps, wie ich das Problem lösen könnte.
Da ist mein Code:
Java:
package code;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Board extends JPanel implements ActionListener {
private Character character;
private Background bg;
private Time time;
public Timer timer;
private final int Delay = 5;
public Board() {
init();
}
public void init(){
setFocusable(true);
setDoubleBuffered(true);
addKeyListener(new TAdapter());
character = new Character();
bg = new Background();
timer = new Timer(Delay, this);
timer.start();
}
@Override
public void paintComponent(Graphics g) {
doDrawing(g);
Toolkit.getDefaultToolkit().sync();
}
private void doDrawing(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(bg.getImage(), bg.getX(), bg.getY(), this);
g2d.drawImage(character.getImage(),character.getX(),character.getY(),this);
}
@Override
public void actionPerformed(ActionEvent e) {
move();
}
private void move() {
character.move();
repaint(character.getX()-1, character.getY()-1, character.getW()+2, character.getH()+2);
}
private class TAdapter extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
character.keyPressed(e);
}
@Override
public void keyReleased(KeyEvent e) {
character.keyReleased(e);
}
}
}
class Time {
private int startTime = (int) System.currentTimeMillis();
private int actualTime = 0;
private int wantedTime = 10000;
private Board board;
public Time() {
while(actualTime <= wantedTime) {
actualTime = (int) System.currentTimeMillis();
actualTime -= startTime;
}
System.out.println("you won");
try{
board.timer.stop();
}
catch(NullPointerException ex) {
System.out.println(ex.getMessage());
}
}
}
Grüße Moritz
Zuletzt bearbeitet: