Syntaxproblem

Endymion

Bekanntes Mitglied
Ich bekomme beim Übersetzen der Klasse SPIELSTEUERUNG die Fehlermeldung "cannot find symbol - method MONSTER(LABYRINTH,int,int)" für die Zeile . Alle relevanten Quellvodes habe ich unten noch einmal aufgeschrieben. Kann mir jemand helfen?

Java:
import java.util.Random;
class SPIELSTEUERUNG
{
    //Attribute
    int punkteStand;
    int leben;
    int level;
    int punktewertNormalerKruemel;
    int punktewertPowerkruemel;
    LABYRINTH labyrinth;
    MAMPFI mampfi;
    STEUERUNGSANZEIGE steuerung;
    MONSTER[] monsterliste;
    Random zufallszahlGenerator;
    SPIELSTEUERUNG()
    {
        punkteStand = 0;
        leben = 3;
        level = 1;
        labyrinth = new LABYRINTH();
        mampfi = new MAMPFI(labyrinth, labyrinth.MampfiStartXGeben(), labyrinth.MampfiStartYGeben());
        steuerung = new STEUERUNGSANZEIGE();
        steuerung.Anmelden(this);
        punktewertNormalerKruemel = 1;
        punktewertPowerkruemel = 1;
        monsterliste = new MONSTER[4];
        zufallszahlGenerator = new Random();
        for (int zaehler = 0; zaehler <= 3; zaehler = zaehler+1)
        {
            monsterliste[zaehler].MONSTER(labyrinth, labyrinth.MonsterPositionXGeben(zaehler), labyrinth.MonsterPositionYGeben(zaehler));
        }
    }
    void AufTasteReagieren(int taste)
    {
        switch(taste)
        {
            case 37:
            mampfi.NachWestenBlicken();
            break;
            case 38:
            mampfi.NachNordenBlicken();
            break;
            case 39:
            mampfi.NachOstenBlicken();
            break;
            case 40:
            mampfi.NachSüdenBlicken();
            break;
            case 83:
            steuerung.TickerStarten(500);
            break;
        }
    }
    void SpielzugAuswerten()
    {
        if (labyrinth.KruemelbelegungAnzeigen(mampfi.PositionXGeben(), mampfi.PositionYGeben()) == 'P')
        {
            mampfi.UnverwundbarMachen();
            KruemelEntfernen();
            punkteStand = punkteStand+punktewertPowerkruemel;
            steuerung.PunkteStandSetzen(punkteStand);
        }
        else
        {
            if(labyrinth.KruemelbelegungAnzeigen(mampfi.PositionXGeben(), mampfi.PositionYGeben()) == 'N')
            {
                KruemelEntfernen();
                punkteStand = punkteStand+punktewertNormalerKruemel;
                steuerung.PunkteStandSetzen(punkteStand);
            }
        }
    }
    void KruemelEntfernen()
    {
        labyrinth.KruemelEntfernen(mampfi.PositionXGeben(), mampfi.PositionYGeben());
    }
    void Tick()
    {
        switch (mampfi.BlickRichtungGeben())
        {
            case 'N':
            mampfi.NachNordenBewegen();
            SpielzugAuswerten();
            break;
            case 'S':
            mampfi.NachSüdenBewegen();
            SpielzugAuswerten();
            break;
            case 'W':
            mampfi.NachWestenBewegen();
            SpielzugAuswerten();
            break;
            case 'O':
            mampfi.NachOstenBewegen();
            SpielzugAuswerten();
            break;
            for (int zaehler = 0; zaehler == 3; zaehler = zaehler +1)
            {
                switch(zufallszahlGenerator.nextInt(7))
                {    
                    case 0:
                    monsterliste[zaehler].NachNordenBewegen();
                    SpielzugAuswerten();
                    break;
                    case 1:
                    monsterliste[zaehler].NachWestenBewegenBewegen();
                    SpielzugAuswerten();
                    break;
                    case 2:
                    monsterliste[zaehler].NachSüdenBewegen();
                    SpielzugAuswerten();
                    break;
                    case 3:
                    monsterliste[zaehler].NachOstennBewegen();
                    SpielzugAuswerten();
                    break;
                    case 4:
                    monsterliste[zaehler].InBlickrichtungBewegen();
                    SpielzugAuswerten();
                    break;
                    case 5:
                    monsterliste[zaehler].InBlickrichtungBewegen();
                    SpielzugAuswerten();
                    break;
                    case 6:
                    monsterliste[zaehler].InBlickrichtungBewegen();
                    SpielzugAuswerten();
                    break;
                }
            }
        }
    }
}
Java:
class MONSTER extends SPIELFIGUR
{
    int geschwindigkeit;
    int intelligenz;
    MONSTERSYMBOL monsterSymbol;
    MONSTER(LABYRINTH labyrinthNeu, int StartX, int StartY)
    {
        super(labyrinthNeu, StartX, StartY);
        verwundbar = false;
        intelligenz = 0;
        geschwindigkeit = 5;
        monsterSymbol = new MONSTERSYMBOL(StartX, StartY);
        monsterSymbol.FuellFarbeSetzen("rot");
        monsterSymbol.BlickRichtungSetzen('N');
    }
    void SymbolAktualisieren()
    {
        if ( verwundbar == false)
        {
            monsterSymbol.FuellFarbeSetzen("rot");
        }
        else
        {
            monsterSymbol.FuellFarbeSetzen("gelb");
        }
        monsterSymbol.PositionXSetzen(positionX);
        monsterSymbol.PositionYSetzen(positionY);
        monsterSymbol.BlickRichtungSetzen(blickrichtung);
    }
    void InBlickrichtungBewegen()
    {
        switch (blickrichtung)
        {
            case 'N':
            NachNordenBewegen();
            break;
            case 'S':
            NachSüdenBewegen();
            break;
            case 'W':
            NachWestenBewegen();
            break;
            case 'O':
            NachOstenBewegen();
            break;
        }
    }
}
 
G

Gast2

Gast
Du meinst vermutlich eher sowas wie:
Java:
monsterliste[zaehler] = new MONSTER(labyrinth, labyrinth.MonsterPositionXGeben(zaehler), labyrinth.MonsterPositionYGeben(zaehler));
Klassen schreibt man für gewöhnlich in CamelCase.
 

Michael...

Top Contributor
Ich bekomme beim Übersetzen der Klasse SPIELSTEUERUNG die Fehlermeldung "cannot find symbol - method MONSTER(LABYRINTH,int,int)" für die Zeile . Alle relevanten Quellvodes habe ich unten noch einmal aufgeschrieben. Kann mir jemand helfen?
Es gibt keine Methode MONSTER(LABYRINTH,int,int), aber es gibt einen passenden Konstruktor.
Du willst ja an dieser Stelle auch ein neues Objekt erzeugen und nicht eine Methode aufrufen.

Ansonsten wurdest Du des Öfteren schon auf die Java Coding Convetions hingewiesen ;-)
 

Murray

Top Contributor
Das dürfte die for-Schleife nach dem break sein (auch wenn das im ursprünglichen Code Zeile 98 ist). Mit dem break springt das Programm an das Ende des umgebenden switch-Blocks. Insofern kann diese for-Schleife niemals aufgrufen werden, und das mag der Compiler nicht.
 

Ähnliche Java Themen

Neue Themen


Oben