D
Deady1
Gast
Hi,
ich bin Anfänger und komme bei meinem Spielversuch "Herr der Fliegen" nicht so recht weiter.
Bei dem Spiel soll es darum gehen, fliegen beim Pinkeln abzuschießen.
Wenn ich versuche, den POINT, den mir der MotionListener gibt, als Zielpunkt zu benutzen, kommt die Exception.
Außerdem funktioniert das Update meines labelPanels nicht so recht (Zeit, Fliegen, Punkte), obwohl die Berechnung hinhaut.
Habe jetzt schon zu lange rumprobiert und nach einer Lösung gesucht. Aber irgendwie habe ich mich wohl verrannt.
Kann mir jemand einen Tipp geben, was in beiden Fällen falsch gelaufen ist?
Einige Sachen habe ich nur zum Testen eingebaut, wie z.B. die beiden Button in EAST und WEST.
Hier mal der Teil des Codes, der für das Hauptfenster zuständig ist.
Bin für jede Hilfe dankbar!
Deady1
ich bin Anfänger und komme bei meinem Spielversuch "Herr der Fliegen" nicht so recht weiter.
Bei dem Spiel soll es darum gehen, fliegen beim Pinkeln abzuschießen.
Wenn ich versuche, den POINT, den mir der MotionListener gibt, als Zielpunkt zu benutzen, kommt die Exception.
Außerdem funktioniert das Update meines labelPanels nicht so recht (Zeit, Fliegen, Punkte), obwohl die Berechnung hinhaut.
Habe jetzt schon zu lange rumprobiert und nach einer Lösung gesucht. Aber irgendwie habe ich mich wohl verrannt.
Kann mir jemand einen Tipp geben, was in beiden Fällen falsch gelaufen ist?
Einige Sachen habe ich nur zum Testen eingebaut, wie z.B. die beiden Button in EAST und WEST.
Hier mal der Teil des Codes, der für das Hauptfenster zuständig ist.
Bin für jede Hilfe dankbar!
Deady1
Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Lordfly implements Runnable {
JFrame frame;
JPanel labelPanel = new JPanel();
JPanel buttonPanel = new JPanel();
JButton button1 = new JButton("Ich muss nochmal");
JButton button2 = new JButton("Sound ausschalten");
JButton button3 = new JButton("Ergebnis merken");
JButton test = new JButton("Fliege");
JButton daneben = new JButton("daneben");
Point src;
int startx = 150;
int starty = 370;
int zielx = 0;
int ziely = 0;
int dm = 5;
int zeit = 30;
int alter = 99;
int punkte = 0;
int fliegen = 0;
int abzuege = 0;
JLabel alterLabel = new JLabel("Alter: " + alter + " ");
JLabel zeitLabel = new JLabel("Zeit: " + zeit + " ");
JLabel punkteLabel = new JLabel("Punkte: " + punkte + " ");
JLabel fliegenLabel = new JLabel("Fliegen: " + fliegen + " ");
Font ft = new Font("Monospaced", Font.BOLD, 16);
Thread timer;
public Lordfly() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buttonPanel.add(button1);
buttonPanel.add(button2);
buttonPanel.add(button3);
zeitLabel.setFont(ft);
alterLabel.setFont(ft);
punkteLabel.setFont(ft);
fliegenLabel.setFont(ft);
labelPanel.add(alterLabel);
labelPanel.add(zeitLabel);
labelPanel.add(punkteLabel);
labelPanel.add(fliegenLabel);
FliegenPanel flp = new FliegenPanel();
if (timer == null) {
timer = new Thread(this);
timer.start();
}
frame.add(BorderLayout.NORTH, labelPanel);
frame.add(BorderLayout.CENTER, flp);
frame.add(BorderLayout.SOUTH, buttonPanel);
frame.add(BorderLayout.WEST, daneben);
frame.add(BorderLayout.EAST, test);
frame.setSize(450, 500);
frame.setTitle("Lord of the Flies");
frame.setVisible(true);
button1.addActionListener(new NeustartListener());
button2.addActionListener(new SoundListener());
button3.addActionListener(new SpeichernListener());
test.addActionListener(new TrefferTestListener()); //Simulation
daneben.addActionListener(new DanebenTestListener()); //Simulation
flp.addMouseMotionListener(new ZielpunktListener());
}
public static void main(String[] args) {
Lordfly lf = new Lordfly();
// lf.los();
}
public void run() {
while (true) {
for (int i = 30; i > 0; i--) {
zeit--;
frame.repaint();
try {
timer.sleep(1000);
}
catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
}
public void los() {
Fragen Spieloptionen = new Fragen();
Spieloptionen.einstellen();
}
class ZielpunktListener implements MouseMotionListener {
public void mouseMoved(MouseEvent event) {}
public void mouseDragged(MouseEvent event) {
src = event.getPoint();
System.out.println("Mousepointer: " + src);
}
}
class TrefferTestListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
fliegen++;
punkte = (fliegen * 3) - abzuege;
}
}
class DanebenTestListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
abzuege++;
punkte--;
}
}
class NeustartListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
if (button1.getText() == "Kurze Pause") {
button1.setText("Geht weiter");
//Spiel stoppen
}
else if (button1.getText() == "Geht weiter") {
button1.setText("Kurze Pause");
//Spiel fortsetzen
}
else {
button1.setText("Kurze Pause");
zeit = 30;
punkte = 0;
fliegen = 0;
frame.repaint();
//Spiel neu starten
}
}
}
class SoundListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
if (button2.getText() == "Sound ausschalten")
button2.setText("Sound einschalten");
else
button2.setText("Sound ausschalten");
//Sound ändern
}
}
class SpeichernListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
//Ergebnis abspeichern
}
}
class FliegenPanel extends JPanel implements Runnable {
Thread runner;
Image becken[] = new Image[3];
int current = 1;
int x = 0;
int y = 0;
public FliegenPanel() {
super();
setBackground(Color.black);
String backs[] = {"U1_black.gif", "U2_white.gif", "U3_brown.gif"};
Toolkit kit = Toolkit.getDefaultToolkit();
for (int i = 0; i < becken.length; i++) {
becken[i] = kit.getImage(backs[i]);
}
if (runner == null) {
runner = new Thread(this);
runner.start();
}
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(becken[current], x, y, this);
g2d.setColor(Color.yellow);
g2d.fillOval(startx, starty, dm, dm);
}
public void run() {
zielx = src.x;
ziely = src.y;
System.out.println("Test: " + src.y + " " + ziely);
/* if (ziely > starty) {
for (int i = starty; i < ziely; i++) {
for (int j = startx; j > zielx; j--) {
ziely++;
zielx--;
}
}
}
else {
for (int i = starty; i > ziely; i--) {
for (int j = startx; j > zielx; j--) {
ziely--;
zielx--;
}
}
}*/
frame.repaint();
}
}
}