# "Cannot find variable x" [Akanoid]



## LinuxUser (8. Feb 2007)

Hallo,
wir versuchen gerade die Kollisionsabfrage fertigzustellen. (Zwischen Ball/Steine/Schlaeger)

Als Fehlermeldung kommt im Copiler immer ""Cannot find variable x".

Was hat das zu bedeuten?

Was müssen wir ändern?
Ich füge hier den Text mal ein 


```
import java.awt.*;
import java.util.*;

public class Ball
{

    
    Random r=new Random();
    int x=r.nextInt(255);
    int y=r.nextInt(255);
    int z=r.nextInt(255);
    Color farbe=new Color(x,y,z);
    int radius=18;
    double posx, posy;
    double richtung, speed=5;
    Graphics g;
    int maxx, maxy;
    Schlaeger schlaeger;
    
    public Ball(Graphics g, int breite, int hoehe, Schlaeger schlaeger)
    {
        this.g=g;
        maxx=breite;
        maxy=hoehe;
        this.schlaeger=schlaeger;
    }
    
    public void bewegeUm()
    {
        posx=posx+speed*Math.cos(richtung*Math.PI/180);
        posy=posy-speed*Math.sin(richtung*Math.PI/180);
    }
    
    public void kollision()
    {
        this.bewegeUm();
        
        int x=schlaeger.x-schlaeger.breite/2;
        int y=schlaeger.y-schlaeger.hoehe/2;
        int w=schlaeger.breite;
        int h=schlaeger.hoehe;
        
        int testX=(int)posx;
        int testY=(int)posy;
        if (testX<x) testX=x;
        if (testX>(x+w)) testX=(x+w);
        if (testY<y) testY=y;
        if (testY>(y+h)) testY=(y+h);
        
        if(((posx+radius)>=maxx) || (posx<=0))
            richtung=180-richtung;
        if(posy<=0)
            richtung=360-richtung;
            
        if ((posy+radius+schlaeger.hoehe/2)>=schlaeger.posy)
        {
          if ((schlaeger.posx-schlaeger.breite/2)<=(posx+radius))
          {
            if ((schlaeger.posx+schlaeger.breite/2)>=(posx-radius))
            { richtung=360-richtung;
            }
          }
        }
        
            
     }
    
    public void abschuss()
    {
        posx=schlaeger.posx;
        posy=schlaeger.posy-schlaeger.hoehe/2-radius;
        //Random r=new Random();
        //-richtung=r.nextInt(180);
        richtung=80;
    }
    
    public void zeichne()
    {
        Random r=new Random();
    int x=r.nextInt(255);
    int y=r.nextInt(48);
    int z=r.nextInt(211);
        g.setColor(new Color (x,y,z));
        g.fillOval((int)posx-radius,(int)posy-radius,radius*2,radius*2);
    }
}
```
THX


----------



## KSG9|sebastian (8. Feb 2007)

Wie formatiert ihr eigentlich euren Code? Augen zu und dann abwechselnd Leertaste, Backspace und Enter drücken (meine Augen tränen gleich).

Da ihr ca. 8 Variablen mit x benannt habt würd ich nach nem Blick in die Glaskugel sagen dass die Klasse Schlaeger kein Attribute mit dem Namen "x" hat. EInfacher wäre es wenn ihr nicht in der Klasse und in jeder Funktion eine Variable x definieren würdet.


----------



## LinuxUser (8. Feb 2007)

@KSG9|sebastian

die formatierung hat wohl den weg zwischen editor und forum nicht ganz überlebt^^ 
Sieht hier ein wenig anders aus 

 


Das mit den vielen "x" wurd uns von unserem Meister so gesagt, mal schauen was er so sagt... ^^

Aber wir haben das "x" nun durch "posx" ersetzt und es funktioniert so einigermaßen


----------



## EOB (8. Feb 2007)

ich wuerd erstmal _ctrl+shift+f_ druecken und zwar in eclipse...ist ja gar schrecklich. poste ma den fehler....

gruesse


----------



## KSG9|sebastian (8. Feb 2007)

Euer Meister hat also vorgeschlagen dass ihr so viel wie möglich mit x festlegt? Ich geh kurz zu meinem Chef und schlag ihm das mal vor..und dannach wird er mich wohl auch schlagen.

Ihr könntet eurem Meister beibringen dass das nicth so toll ist, soviele x-Variablen. Am besten mit nem Prügel


----------



## WieselAc (8. Feb 2007)

Ach das ist bestimmt so ein alter Fortran Guru. Ich hatte auch so einen Prof, der bestand auf Speicheroptimierung durch kurze Bezeichner!?!? 

Solche Leute sind die Väter der modernen IT, huldigt ihnen, die kennen sich noch mit Lochkarten aus


----------



## KSG9|sebastian (8. Feb 2007)

Ja..am besten setzt man sie ihn irgenwelche Positionen die vom Grundsatz her Elektronisches Karton Zerreißen darstellen.Dann noch Türe abschließen und den Rest der Firma ans andere Ende von Deutschland versetzen.
Aber gut..lassen wir das


----------

