Auf Thema antworten

Wie du willst, hier kommt mal mein ganzes Projekt (die Problemmethode is in der Klasse LABYRINTH)


[code=Java]import java.util.Random;

class SPIELSTEUERUNG

{

    //Attribute

    int punkteStand;

    int anzahlLeben;

    int levelNummer;

    int punktewertNormalerKruemel;

    int punktewertPowerkruemel;

    int timer1;

    LABYRINTH labyrinth;

    MAMPFI mampfi;

    STEUERUNGSANZEIGE steuerung;

    MONSTER[] monsterliste;

    Random zufallszahlGenerator;

    SPIELSTEUERUNG()

    {

        punkteStand = 0;

        anzahlLeben = 3;

        levelNummer = 1;

        LevelVorbereiten();

        steuerung = new STEUERUNGSANZEIGE();

        steuerung.Anmelden(this);

        punktewertNormalerKruemel = 1;

        punktewertPowerkruemel = 1;

        zufallszahlGenerator = new Random();

        monsterliste = new MONSTER[4];

        for (int zaehler = 0; zaehler <= 3; zaehler = zaehler+1)

        {

            monsterliste[zaehler] = new 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 80:

            steuerung.TickerAnhalten();

            break;

            case 83:

            if (anzahlLeben > 0)

            {

                steuerung.TickerStarten(500);

                break;

            }

            case 84:

            System.out.println(labyrinth.SindAlleKruemelGefressen());

        }

    }

    void SpielzugAuswerten()

    {

        if (labyrinth.KruemelbelegungAnzeigen(mampfi.PositionXGeben(), mampfi.PositionYGeben()) == 'P')

        {

            mampfi.UnverwundbarMachen();

            KruemelEntfernen();

            punkteStand = punkteStand+punktewertPowerkruemel;

            steuerung.PunkteStandSetzen(punkteStand);

            for (int zaehler = 0; zaehler <= 3; zaehler = zaehler +1)

            {

                monsterliste[zaehler].VerwundbarSetzen(true);

                monsterliste[zaehler].FuellungSichtbarSetzen(false);

            }

            timer1 = 30;

        }

        else

        {

            if(labyrinth.KruemelbelegungAnzeigen(mampfi.PositionXGeben(), mampfi.PositionYGeben()) == 'N')

            {

                KruemelEntfernen();

                punkteStand = punkteStand+punktewertNormalerKruemel;

                steuerung.PunkteStandSetzen(punkteStand);

            }

        }

        for (int zaehler = 0; zaehler <= 3; zaehler = zaehler +1)

            if(MonsterMampfiBegegnungTesten(zaehler) == true)

            {

                if (mampfi.VerwundbarGeben() == false)

                {

                    punkteStand = punkteStand + 200;

                    monsterliste[zaehler].AufStartpositionSpringen();

                }

                else

                {

                    if (anzahlLeben > 0)

                    {

                        anzahlLeben = anzahlLeben -1;

                        mampfi.AufStartpositionSpringen();

                    }

                    else

                    {

                        steuerung.TickerAnhalten();

                    }

                }

            }

           

    }

    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();

        }

        for (int zaehler = 0; zaehler <= 3; zaehler = zaehler +1)

        {

            switch(zufallszahlGenerator.nextInt(7))

            {   

                case 0:

                monsterliste[zaehler].NachNordenBewegen();

                SpielzugAuswerten();

                break;

                case 1:

                monsterliste[zaehler].NachWestenBewegen();

                SpielzugAuswerten();

                break;

                case 2:

                monsterliste[zaehler].NachSüdenBewegen();

                SpielzugAuswerten();

                break;

                case 3:

                monsterliste[zaehler].NachOstenBewegen();

                SpielzugAuswerten();

                break;

                case 4:

                monsterliste[zaehler].InBlickrichtungBewegen();

                SpielzugAuswerten();

                break;

                case 5:

                monsterliste[zaehler].InBlickrichtungBewegen();

                SpielzugAuswerten();

                break;

                case 6:

                monsterliste[zaehler].InBlickrichtungBewegen();

                SpielzugAuswerten();

                break;

            }

        }

        if (timer1 > 0)

        {

            timer1 = timer1 -1;

        }

        if (timer1 == 0)

        {

            mampfi.VerwundbarMachen();

            for (int zaehler = 0; zaehler <= 3; zaehler = zaehler +1)

            {

                monsterliste[zaehler].VerwundbarSetzen(false);

                monsterliste[zaehler].FuellungSichtbarSetzen(true);

            }

        }

    }

    boolean MonsterMampfiBegegnungTesten(int monsterNummer)

    {

        if (mampfi.PositionXGeben() == monsterliste[monsterNummer].PositionXGeben() && mampfi.PositionYGeben() == monsterliste[monsterNummer].PositionYGeben())

        {

            return true;

        }

        return false;

    }

    void LevelVorbereiten()

    {

        labyrinth = new LABYRINTH();

        mampfi = new MAMPFI(labyrinth, labyrinth.MampfiStartXGeben(), labyrinth.MampfiStartYGeben());

    }

}[/code]


[code=Java]//import backend.implementierung.SteuerungsAnzeige;

import backend.Ticker;

import backend.anzeige.Einstellungen;


/**Diese Klasse dient zur Anzeige der Informationen am rechten Rand und

 * zur Anmeldung des SPIELSTEUERUNGS-Objekts am backend.

 * @author Sebastian Zinkhahn

 */

class STEUERUNGSANZEIGE extends SteuerungsAnzeige

{

    /**Der Punktestand*/

    int punkteStand;

    /**Die Anzahl der Leben*/

    int anzahlLeben;

    /**Die Nummer des Levels*/

    int levelNummer;

    /**Die Farbe, in der die Schrift angezeigt wird*/

    String schriftFarbe;

    /**Die Hintergrundfarbe des Panels*/

    String hintergrundFarbe;

   

    /**Erzeugt eine neues Objekt dieser Klasse*/

    STEUERUNGSANZEIGE()

    {

        super();

    }

   

    /** Weist dem Attribut punkteStand einen neuen Wert zu

     * @param punkteStandNeu Der neue Wert

     */

    void PunkteStandSetzen(int punkteStandNeu)

    {

        super.PunkteStandSetzen(punkteStandNeu);

        punkteStand = punkteStandNeu;

    }

   

    /** Weist dem Attribut anzahlLeben einen neuen Wert zu

     * @param anzahlNeu - Der neue Wert

     */

    void LebenSetzen(int anzahlNeu)

    {

        if(anzahlNeu>=0)

        {   

            super.LebenSetzen(anzahlNeu);

            anzahlLeben = anzahlNeu;

        }

        else System.err.println("Anzahl der Leben darf nicht negativ sein");

    }

   

    /** Weist dem Attribut levelNummer einen neuen Wert zu

     * @param nummerNeu Der neue Wert

     */

    void LevelSetzen(int nummerNeu)

    {

        if(nummerNeu>=0)

        {

            super.LevelSetzen(nummerNeu);

            levelNummer = nummerNeu;

        }

        else System.err.println("Nummer des Levels darf nicht negativ sein");

    }

   

   

    /** Weist dem Attribut schriftFarbe einen neuen Wert zu

     * @param farbeNeu Der neue Wert (Name der Farbe)

     */

    void SchriftFarbeSetzen(String farbeNeu)

    {

        super.SchriftFarbeSetzen(farbeNeu);

        schriftFarbe = farbeNeu;

    }

   

    /** Weist dem Attribut hintergrundFarbe einen neuen Wert zu

     * @param farbeNeu Der neue Wert (Name der Farbe)

     */

    void HintergrundFarbeSetzen(String farbeNeu)

    {

        super.HintergrundFarbeSetzen(farbeNeu);

        hintergrundFarbe = farbeNeu;

    }

   

   

    /** Meldet das &uuml;bergebene Objekt am Backend als Spielsteurung an

     * @param steuerung Das {@link SPIELSTEUERUNG}-Objekt

     */

    void Anmelden(SPIELSTEUERUNG steuerung)

    {

        if(super.steuerungsDummy == null)

        {

            super.Anmelden(steuerung);

        }

        else System.err.println("Es wurde schon eine Spielsteuerung angemeldet");

    }

   

    /**Setzt in der Klasse {@link Einstellungen} die Anzahl Zellen

     * @param anzahl Die Anzahl der Zellen

     * @return Der resultierende Zellradius

     */

    int ZellenAnzahlSetzen(int anzahl)

    {

        Einstellungen.ZellenRadiusBerechnen(anzahl);

        return Einstellungen.ZellenRadiusGeben();

    }

   

    /**Setzt den Zellenradius (halbe Hoehe und Breite einer Zelle)auf den angegebenen Wert

     * @param zellenRadiusNeu Der Zellenradius

     */

    void ZellenRadiusSetzen(int zellenRadiusNeu)

    {

        Einstellungen.ZellenRadiusSetzen(zellenRadiusNeu);

    }

   

    /**Startet einen {@link Ticker}

     * @param zeitIntervall Der Zeitabstand in welchem die Ticks kommen sollen

     * in Millisekunden

     */

    void TickerStarten(int zeitIntervall)

    {

        if(super.steuerungsDummy != null)

        {

            super.TickerStarten(zeitIntervall);

        }

        else System.err.println("Es muss erst eine Spielsteuerung angemeldet werden");

    }

   

    void TickerAnhalten()

    {

        super.TickerAnhalten();

    }

   

    void LabyrinthAnzeigeLoeschen()

    {

        super.LabyrinthAnzeigeLoeschen();

    }

}[/code]


[code=Java]public class LABYRINTH

{

    //Attribute

    int breite;

    int hoehe;

    int mampfiStartX;

    int mampfiStartY;

    int monsterStartX[];

    int monsterStartY[];

    //Referenzattribute

    ZELLE[][] spielFlaeche;

    //Konstruktor

    LABYRINTH (int breiteNeu, int hoeheNeu)

    {

        breite = breiteNeu;

        hoehe = hoeheNeu;

        spielFlaeche = new ZELLE[breite][hoehe];

        for (int zaehlerY = 0; zaehlerY<hoehe-1; zaehlerY = zaehlerY+1)

        {

            for (int zaehlerX = 0; zaehlerX<breite-1; zaehlerX = zaehlerX+1)

            {

                spielFlaeche[zaehlerX][zaehlerY] = new ZELLE(zaehlerX, zaehlerY);

            }

        }

        mampfiStartX = 0;

        mampfiStartY = 0;

        spielFlaeche[mampfiStartX][mampfiStartY].KruemelEntfernen();

    }

    LABYRINTH()

    {

        breite = 10;

        hoehe = 10;

        spielFlaeche = new ZELLE[breite][hoehe];

        for(int zaehlerX = 0; zaehlerX < 10; zaehlerX = zaehlerX+1)

        {

            for(int zaehlerY = 0; zaehlerY < 10; zaehlerY = zaehlerY+1)

            {

                spielFlaeche[zaehlerX][zaehlerY] = new ZELLE(zaehlerX,zaehlerY);

            }

        }

        mampfiStartX = 0;

        mampfiStartY = 0;

        spielFlaeche[mampfiStartX][mampfiStartY].KruemelEntfernen();

        GaengeErstellen(1,2);

        GaengeErstellen(7,2);

        GaengeErstellen(1,3);

        GaengeErstellen(2,3);

        GaengeErstellen(6,3);

        GaengeErstellen(7,3);

        GaengeErstellen(1,4);

        GaengeErstellen(3,4);

        GaengeErstellen(5,4);

        GaengeErstellen(7,4);

        GaengeErstellen(1,5);

        GaengeErstellen(7,5);

        GaengeErstellen(1,6);

        GaengeErstellen(4,6);

        GaengeErstellen(7,6);

        GaengeErstellen(1,7);

        GaengeErstellen(7,7);

        PowerKruemelVerteilen(2,2);

        PowerKruemelVerteilen(6,2);

        PowerKruemelVerteilen(4,7);

        monsterStartX = new int [4];

        monsterStartY = new int [4];

        monsterStartX[0] = 9;

        monsterStartY[0] = 9;

        monsterStartX[1] = 9;

        monsterStartY[1] = 8;

        monsterStartX[2] = 8;

        monsterStartY[2] = 9;

        monsterStartX[3] = 8;

        monsterStartY[3] = 8;

    }

    //Methoden

    void GaengeErstellen (int positionX, int positionY)

    {

        spielFlaeche[positionX][positionY].IstMauerSetzen(true);

    }

    void PowerKruemelVerteilen (int positionX, int positionY)

    {

        spielFlaeche[positionX][positionY].PowerKruemelVerteilen();

    }

    int BreiteGeben()

    {

        return breite;

    }

    int HoeheGeben()

    {

        return hoehe;

    }

    boolean IstMauerAufZelle(int positionX, int positionY)

    {

        return spielFlaeche[positionX][positionY].IstMauerGeben();

    }

    int MampfiStartXGeben()

    {

        return mampfiStartX;

    }

    int MampfiStartYGeben()

    {

        return mampfiStartY;

    }

    char KruemelbelegungAnzeigen(int positionX, int positionY)

    {

        return spielFlaeche[positionX][positionY].KruemelbelegungAnzeigen();

    }

    void KruemelEntfernen(int positionX, int positionY)

    {

        spielFlaeche[positionX][positionY].KruemelEntfernen();

    }

    int MonsterPositionXGeben(int monsterNummer)

    {

        return monsterStartX[monsterNummer];

    }

    int MonsterPositionYGeben(int monsterNummer)

    {

        return monsterStartY[monsterNummer];

    }

    boolean IstKruemelAufZelle (int positionX, int positionY)

    {

        return spielFlaeche[positionX][positionY].IstKruemelGeben();

    }

    boolean SindAlleKruemelGefressen()

    {

        for (int zaehlerX = 0; zaehlerX == breite-1; zaehlerX++)

        {

            for (int zaehlerY = 0; zaehlerY == hoehe-1; zaehlerY++)

            {

                if (IstKruemelAufZelle(zaehlerX, zaehlerY))

                {

                    System.out.println("Feld[" + zaehlerX + "," + zaehlerY + "] ->  Krümel gefunden" );


                    return false;

                }

                System.out.println("Feld[" + zaehlerX + "," + zaehlerY + "] -> kein Krümel gefunden" );


            }       

        }

        return true;

    }

}[/code]


[code=Java]public class ZELLE

{

    // Attribute

    int positionX;

    int positionY;

    boolean istMauer;

    // Referenzattribute

    ZELLENSYMBOL zsymbol;

    KRUEMEL kruemel;

    // Konstruktor

    ZELLE (int xNeu, int yNeu)

    {

        positionX = 0;

        positionY = 0;

        istMauer= false;       

        zsymbol = new ZELLENSYMBOL(xNeu, yNeu);

        zsymbol.FuellFarbeSetzen("blau");

        zsymbol.RandFarbeSetzen("schwarz");

        zsymbol.FuellungSichtbarSetzen(false);

        zsymbol.RandSichtbarSetzen(true);

        kruemel = new KRUEMEL(xNeu, yNeu);

    }

    void IstMauerSetzen (boolean istMauerNeu)

    {

        istMauer = istMauerNeu;

        zsymbol.FuellungSichtbarSetzen(istMauerNeu);

        if(istMauerNeu == true)

        {

            if (kruemel != null)

        {  

            kruemel.KruemelSymbolEntfernen();

            kruemel = null;

        }

        }

    }

    boolean IstMauerGeben()

    {

        return istMauer;

    }

    void PowerKruemelVerteilen()

    {

        kruemel.RadiusSetzen(9);

        kruemel.MachtUnverwundbarSetzen(true);

    }

    void KruemelEntfernen()

    {

        if (kruemel != null)

        {

            kruemel.KruemelSymbolEntfernen();

            kruemel=null;

        }

    }

    char KruemelbelegungAnzeigen()

    {

        if (kruemel == null)

        {

            return 'L';

        }

        else

        {

            if( kruemel.MachtUnverwundbarGeben() == true)

            {

                return 'P';

            }

            else

            {

                return 'N';

            }

        }

    }

    boolean IstKruemelGeben()

    {

        if (kruemel == null)

        {

            return false;

        }

        else

        {

            return true;

        }

    }

}[/code]


Wäre nett wenn jemand zwischenposten könnte, dass ich die restlichen klassen auch noch posten kann.



Oben