"Cannot find variable x" [Akanoid]

Status
Nicht offen für weitere Antworten.

LinuxUser

Neues Mitglied
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 ;)

Code:
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

Top Contributor
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

Neues Mitglied
@KSG9|sebastian

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

:cool:


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

Top Contributor
ich wuerd erstmal ctrl+shift+f druecken und zwar in eclipse...ist ja gar schrecklich. poste ma den fehler....

gruesse
 

KSG9|sebastian

Top Contributor
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 :D
 

WieselAc

Top Contributor
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

Top Contributor
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 :D
 
Status
Nicht offen für weitere Antworten.

Oben