Guten Abend,
programmieren in der Schule ein Spiel wo unten eine Linie ist mit der man Objekte auffängt.
Die Objekte sind bei mir Quadrate welche in einer anderen Klasse programmiert sind.
Habe 2 Probleme
Einmal bekomme ich beim JLabel die Fehlermeldung
cannot find Symbol - class JLabel
Und das schlimmere Problem ist, dass nachdem ich ein Quadrat fange wird es zum Score dazugerechnet verschwindet dann aber nicht sondern fliegt weiter runter und Game Over erscheint. Ich kriege es einfach nicht hin das Quadrat wieder nach oben zu schicken.
Vielleicht habt ihr ja Tipps für mich. Vielen Dank schonmal im Vorraus.
PS: In z. 188 anstatt dem Message Dialog müsste halt der Code hin um das Quadrat nach oben zu schicken/verschwinden zu lassen.
Noch geht die Kolisionabfrage nur mit einem Quadrat das ist aber nicht schlimm das mache ich nachher noch mit den anderen.
Edit: ok jlabel hab ich hinbekommen hab vergessen javax.swing.* zu importieren ... :/
programmieren in der Schule ein Spiel wo unten eine Linie ist mit der man Objekte auffängt.
Die Objekte sind bei mir Quadrate welche in einer anderen Klasse programmiert sind.
Habe 2 Probleme
Einmal bekomme ich beim JLabel die Fehlermeldung
cannot find Symbol - class JLabel
Und das schlimmere Problem ist, dass nachdem ich ein Quadrat fange wird es zum Score dazugerechnet verschwindet dann aber nicht sondern fliegt weiter runter und Game Over erscheint. Ich kriege es einfach nicht hin das Quadrat wieder nach oben zu schicken.
Vielleicht habt ihr ja Tipps für mich. Vielen Dank schonmal im Vorraus.
PS: In z. 188 anstatt dem Message Dialog müsste halt der Code hin um das Quadrat nach oben zu schicken/verschwinden zu lassen.
Noch geht die Kolisionabfrage nur mit einem Quadrat das ist aber nicht schlimm das mache ich nachher noch mit den anderen.
Edit: ok jlabel hab ich hinbekommen hab vergessen javax.swing.* zu importieren ... :/
Java:
/**
* Die Klasse Fenster dient als Zeichenfenster und ist von Frame vererbt.
*
* @author Maxi
* @version Fangspiel
*/
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class Fenster extends Frame implements ActionListener, KeyListener
{
//private static final long serialVersionUTD = 1L;
private Graphics g;
private Linie linie,linie2;
private Point a;
private Point b;
private Point c;
private Point d;
private Point f;
private Color farbe;
private Quadrat quadrat;
private Dreieck dreieck;
private Rechteck rechteck;
private gleichDreieck gleichdreieck;
private Kreis kreis;
private int score = 0;
private JLabel scorelabel;
private Point mittelpunkt1, mittelpunkt2, mittelpunkt3;
private int z = 50;
private Linie spiellinie;
private Kreis kreis1, kreis2, kreis3;
private Quadrat quadrat1, quadrat2, quadrat3;
private int varx = 300;
private int vary = 675;
private Random r;
private Timer t = new Timer(20, this);
public Fenster()
{
super();
g=this.getGraphics();
addWindowListener(new Windowlauscher()); //zum Schließen des Fensters
addKeyListener(this);
//a=new Point(100,100);
//b=new Point(500,500);
farbe=new Color(138,43,226);
linie=new Linie(a,b,farbe);
//a=new Point(100,500);
//b=new Point(500,100);
farbe=Color.orange;
linie2=new Linie(a,b,farbe);
t = new Timer(20, this);
t.start();
quadrat = new Quadrat(new Point(200,50), 50, Color.black);
dreieck = new Dreieck(new Point (300, 50), 50, Color.yellow);
rechteck = new Rechteck(new Point (225, 125), 50, Color.blue);
gleichdreieck = new gleichDreieck(new Point (375, 50), 50, Color.red);
kreis = new Kreis(new Point (500, 300), 100, Color.blue);
a = new Point (varx, vary);
b = new Point (varx + 100, vary);
spiellinie=new Linie(a, b, farbe);
kreis1 = new Kreis(new Point(200, 50), 30, Color.blue);
kreis2 = new Kreis(new Point(300, 50), 30, Color.blue);
kreis3 = new Kreis(new Point(400, 50), 30, Color.blue);
quadrat1 = new Quadrat(new Point(200, 50), 30, Color.blue);
quadrat2 = new Quadrat(new Point(300, 50), 30, Color.blue);
quadrat3 = new Quadrat(new Point(400, 50), 30, Color.blue);
scorelabel = new JLabel("Hier sehen Sie gleich Ihren Punktestand.");
}
public void paint(Graphics g)
{
/*
linie.nimmGrafik(g);
linie.linieZeichnen();
linie2.nimmGrafik(g);
linie2.linieZeichnen();
quadrat.nimmGrafik(g);
quadrat.zeichne();
dreieck.nimmGrafik(g);
dreieck.zeichne();
rechteck.nimmGrafik(g);
rechteck.zeichne();
gleichdreieck.nimmGrafik(g);
gleichdreieck.zeichne();
kreis.nimmGrafik(g);
kreis.zeichne();
*/
spiellinie.nimmGrafik(g);
spiellinie.linieZeichnen();
quadrat1.nimmGrafik(g);
quadrat1.zeichne();
quadrat2.nimmGrafik(g);
quadrat2.zeichne();
quadrat3.nimmGrafik(g);
quadrat3.zeichne();
/*
kreis1.nimmGrafik(g);
kreis1.zeichne();
kreis2.nimmGrafik(g);
kreis2.zeichne();
kreis3.nimmGrafik(g);
kreis3.zeichne();
*/
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
/*
if(e.getKeyCode()==KeyEvent.VK_LEFT) {
varx-=5;
spiellinie = new Linie (new Point(varx, vary), new Point(varx + 100, vary), Color.blue);
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT) {
spiellinie = new Linie (new Point(varx, vary), new Point(varx + 100, vary), Color.blue);
varx+=5;
}
*/
if(e.getKeyCode()==KeyEvent.VK_LEFT) {
a.x-=5;
b.x-=5;
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT) {
a.x+=5;
b.x+=5;
}
e.consume();
repaint();
}
//Das macht der Timer
public void actionPerformed(ActionEvent e) {
z = z + 1;
c = new Point (50, z - 50);
quadrat1 = new Quadrat (c, 50, Color.blue);
mittelpunkt1 = new Point (c.x + 25, c.y + 25);
d = new Point (250, z - 250);
quadrat2 = new Quadrat (d, 50, Color.blue);
mittelpunkt2 = new Point (d.x + 25, d.y + 25);
f = new Point (450, z - 150);
quadrat3 = new Quadrat (f, 50, Color.blue);
mittelpunkt3 = new Point (f.x + 25, f.y + 25);
if (mittelpunkt1.x > a.x && mittelpunkt1.x < b.x && mittelpunkt1.y == 650) {
score = score + 1;
scorelabelLabel.setText("Score: " + score);
JOptionPane.showMessageDialog(null, "Quadrat gefangen");
}
else if (mittelpunkt1.y == 700) {
JOptionPane.showMessageDialog(null, "Game Over! Ihre Punktzahl: " + score);
}
/*
a = new Point (75, z-60);
kreis1 = new Kreis (a, 100, Color.blue);
b = new Point (75, z-40);
kreis2 = new Kreis (b, 100, Color.blue);
c = new Point (75, z-20);
kreis3 = new Kreis (c, 100, Color.blue);
*/
repaint();
}
//Fenster schließen
protected static final class Windowlauscher extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
}
Zuletzt bearbeitet: