Permalänk
Medlem

nybörjare på java - nytt spel

Hej!
Jag håller på att försöka göra ett spel i Java vad det går ut på spelar ingen större roll, problemet är att min ActionListener inte
fungerar, jag får fel när jag försöker kompilera:
airRifle2.java:106: cannot resolve symbol
symbol : variable stoppaRull
location: class airRifle2
if(e.getSource() == stoppaRull){
^

airRifle2.java:109: cannot resolve symbol
symbol : variable nyttSpel
location: class airRifle2
else if(e.getSource() == nyttSpel){
^

så här ser koden ut:

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.applet.Applet;

public class airRifle2 extends JFrame implements ActionListener {

boolean startaVert = false;
boolean startaHori = false;

public static void main(String[] args)
{

airRifle2 blaff = new airRifle2();
blaff.setVisible(true);
}

public airRifle2(){
JButton nyttSpel, stoppaSpel, stoppaRull, stoppaRull2;
nyttSpel = new JButton("Nytt Spel");
stoppaSpel = new JButton("Stoppa spel");
stoppaRull = new JButton("Stoppa H-pilen");
stoppaRull2 = new JButton("Stoppa V-Pilen");

stoppaRull.addActionListener(this);
nyttSpel.addActionListener(this);

JPanel panel1 = new JPanel();
panel1.add(nyttSpel);
panel1.add(stoppaSpel);
panel1.add(stoppaRull);
panel1.add(stoppaRull2);
getContentPane().add(panel1, "North");

JPanel panel2 = new JPanel();
panel2.setBackground(Color.gray);
panel2.setPreferredSize(new Dimension(0,200));

getContentPane().add(panel2, "Center");
pack();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ae){
System.exit(0);
}
});
}

public void paint(Graphics g){

//Deklarera alla variablar som behövs

int[] koordinater = new int[2];

super.paint(g);

//Rita ut måltavlan

g.setColor(Color.red);
g.fillOval(175,100,100,100);

//Rita ut vertikala cirkeln, få den att röra sig

if(startaVert == true){

//Fördröjningsmekanism

for(int a = 0; a < 1000000; a++){
}
int y = 0;
for(int x = 0 ; y < 5 ; x++){
for(int b = 0; b < 100 ; b++){
}
//for(int c = 0; c < 100 ; c++){
//}

g.setColor(getBackground());
g.fillOval(150+x, 210, 10, 10);
g.setColor(Color.black);
g.fillOval(151+x, 210, 10, 10);

if(startaVert == false){

koordinater[0] = 150+x;
break;

}

if(150+x >= 300){
x = 0;
y = y + 1;
}
}
}

}

public void actionPerformed(ActionEvent e){

if(e.getSource() == stoppaRull){
startaVert = false;
}
else if(e.getSource() == nyttSpel)
{
startaVert = true;
}
}

}

Visa signatur

ERx -> Alltid Trött IWill KK400-RS | Athlon Xp 2000+ | 256mb ddr | 48x cdrw | Samsung dvd | Nec ND-1300A DVD+-RW | GF4Mx440 128mb | Wd 80GB + Ibm/Hitachi 120Gb | Tvkort
"Fascism är den enda ideologin som fungerar" - Koffe

Permalänk

Deklarera stoppaRull och nyttSpel utanför konstruktorn.

EDIT:

import java.awt.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.applet.Applet; public class airRifle2 extends JFrame implements ActionListener { boolean startaVert = false; boolean startaHori = false; private JButton stopppaRull; private JButton nyttSpel; .... }

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.

Permalänk
Medlem

Tack! men nu fick jag ett nytt problem, det går att kompilera men när jag försöker köra programet får jag felet: Exception in thread "main" java.lang.NoClassDefFoundError: airRifle. vet du vad det betyder?

Visa signatur

ERx -> Alltid Trött IWill KK400-RS | Athlon Xp 2000+ | 256mb ddr | 48x cdrw | Samsung dvd | Nec ND-1300A DVD+-RW | GF4Mx440 128mb | Wd 80GB + Ibm/Hitachi 120Gb | Tvkort
"Fascism är den enda ideologin som fungerar" - Koffe

Permalänk

Högst antagligen att du inte har current directory i din CLASSPATH. Lägg till en punkt så funkar det.

EDIT: Btw, ditt program funkar fint att kompilera och köra...

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.

Permalänk
Medlem

Felet var att jag skrev in java airRifle istället för airRifle2

Visa signatur

ERx -> Alltid Trött IWill KK400-RS | Athlon Xp 2000+ | 256mb ddr | 48x cdrw | Samsung dvd | Nec ND-1300A DVD+-RW | GF4Mx440 128mb | Wd 80GB + Ibm/Hitachi 120Gb | Tvkort
"Fascism är den enda ideologin som fungerar" - Koffe

Permalänk
Citat:

Ursprungligen inskrivet av ERx
Felet var att jag skrev in java airRifle istället för airRifle2

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av ERx
Felet var att jag skrev in java airRifle istället för airRifle2

Jag skulle vilja påstå att minst hälften av alla fel beror på felskrivningar.

Lycka till

Permalänk
Medlem

Tack Lothar

Jag la till en kodrard till i ActionPreformed nämligen
else if(e.getSource() == stoppaSpel)
{
System.exit(0);
}
men det vill inte funka, jag får inget kompileringsfel men när jag försöker klicka på stoppa spel knappen så stängs inte programet ner, vet någon varför?

Visa signatur

ERx -> Alltid Trött IWill KK400-RS | Athlon Xp 2000+ | 256mb ddr | 48x cdrw | Samsung dvd | Nec ND-1300A DVD+-RW | GF4Mx440 128mb | Wd 80GB + Ibm/Hitachi 120Gb | Tvkort
"Fascism är den enda ideologin som fungerar" - Koffe

Permalänk

Du har väl ingen ActionListener på stoppaSpel.

... stoppaSpel.addActionListener(this); ... else if(e.getSource() == stoppaSpel) { System.exit(0); } ...

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.

Permalänk
Medlem

Var ska sActionListener'na ligga någonstans utanför konstruktor får jag felmedelande...

Visa signatur

ERx -> Alltid Trött IWill KK400-RS | Athlon Xp 2000+ | 256mb ddr | 48x cdrw | Samsung dvd | Nec ND-1300A DVD+-RW | GF4Mx440 128mb | Wd 80GB + Ibm/Hitachi 120Gb | Tvkort
"Fascism är den enda ideologin som fungerar" - Koffe

Permalänk
Citat:

Ursprungligen inskrivet av ERx
Var ska sActionListener'na ligga någonstans utanför konstruktor får jag felmedelande...

Den ska ligga i konstruktorn. Eller m.a.o. på det ställe där du initierar Objectet som ska ha en ActionListener, i dethär fallet en JButton.

... public airRifle2(){ JButton nyttSpel, stoppaSpel, stoppaRull, stoppaRull2; nyttSpel = new JButton("Nytt Spel"); stoppaSpel = new JButton("Stoppa spel"); stoppaSpel.addActionListener(this); ...

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.