Schafspiel



  • Hallo,

    suche dringend die Source für ein Schafspiel

    Das Spiel soll Objektorientiert sein mir einer Klasse SCHAF
    Auf einem Spielfeld (10x10) sollen 4 Schafe zufällig verteilt sein.m Auf dem Spielfeld soll eine zufällige Anzahl an Blumen wachsen. Jedes Schaf hat am Anfang 10 Blumen im Bauch. Mit jedem Spielzug bewegen sich die Schafe einen Schritt weiter(diagonal, waagerecht oder senkrecht). Jeder Schritt kostet eine Bauchblume. Wenn auf dem Zielfeld Blumen stehen, werden diese gefressen. Falls 2 Schafe auf einem Feld stehen, bekommt das mit mehr Bauchblumen die Blumen. Wenn ein Schaf keine Blumen mehr hat stirbt es.
    Aus der Klasse Schaf sollen dann 2 neue Klassen durch Verärbung abgeleitet werden.

    Die Anzahl der Schäfinnen und Schafböck soll bei Spielbeginn festgelegt werden.
    Die Objekte sollen in Dynamischen Feldern verwaltet werden

    1. Schäfin mit folgenden Eigenschaften:
    Die Schäfen wird bei zusammentreffen mit einm Schafbock schwanger
    Während sie Schwanger ist kann sie nicht noch mal Schwanger werden
    die Schäfin bekommt nach einer gewissen Tragzeit (gemessen in Spielschritten) ein schaf(männlich oder weiblich)

    2. Schafbock
    Schafbock schwängert bei zusammentreffen mit Schäfin diese
    eine schwangere Schäfin kann nicht geschwängert werden
    Der Schafbock kann erst nach einer gewissen Anzahl von Spielschritten erneut eine Schäfin schwängern

    Die Klassen habe ich schon erstellt und auch die nötigen Funktionen habe ich schon ermittelt.

    #ifndef SCHAF_H_INCLUDED
    #define SCHAF_H_INCLUDED
    #include <string>
    
    using namespace std;
    
    class SCHAF
    {
    
            private:
                    int iX_Felder;
                    int iY_Felder;
                    int iMagenfuellstand;
                    string szName;
    
            public:
                    SCHAF();
                    virtual ~SCHAF();
                    virtual void Name(string szName);
                    string Namenausgabe();
                    virtual int Bewegen(int iX, int iY);
                    virtual int Essen(int iBlumen);
                    virtual int Bewegen(int iX, int iY, int iMagenfuellstand);
                    virtual int Magen_lesen();
                    void set_X_Wert(int Xpos);
                    int get_X_Wert();
                    void set_Y_Wert(int Ypos);
                    int get_Y_Wert();
    };
    
    class SCHAEFIN : public SCHAF
    {
            private:
                    int traechtig;
            public:
                    SCHAEFIN();
                    virtual ~SCHAEFIN();
                    virtual void Name(string szName);
                    string Namenausgabe();
                    virtual int Bewegen(int iX, int iY);
                    virtual int Essen(int iBlumen);
                    virtual int Bewegen(int iX, int iY, int iMagenfuellstand);
                    virtual int Magen_lesen();
                    void set_X_Wert(int Xpos);
                    int get_X_Wert();
                    void set_Y_Wert(int Ypos);
                    int get_Y_Wert();
    
    };
    
    class SCHAFBOCK : public SCHAF
    {
                private:
                    int decken;
    
            public:
                    SCHAFBOCK();
                    virtual ~SCHAFBOCK();
                    virtual void Name(string szName);
                    string Namenausgabe();
                    virtual int Bewegen(int iX, int iY);
                    virtual int Essen(int iBlumen);
                    virtual int Bewegen(int iX, int iY, int iMagenfuellstand);
                    virtual int Magen_lesen();
                    void set_X_Wert(int Xpos);
                    int get_X_Wert();
                    void set_Y_Wert(int Ypos);
                    int get_Y_Wert();
    
    };
    
    #endif // SCHAF_H_INCLUDED
    

    Währe echt cool wenn ihr mir helfen könnt. Danke



  • das ist mein Thema ^^
    hatte vercheckt mich anzumelden und dann erst zu posten 🙂


  • Administrator

    schwarzes_schaf_ schrieb:

    Währe echt cool wenn ihr mir helfen könnt. Danke

    Und wobei sollen wir dir nun helfen?
    Erinnert mich irgendwie ein wenig an Game Of Life. Womöglich eine abgewandelte Hausaufgabe?

    Grüssli



  • Also mein Problem liegt darin, dass ich nicht weiss wie ich die Positionen speichern und übergeben soll. Bin in C++ allgemein nicht soo bewandert 😞
    Wäre es nicht klüger anstatt zwei Variablen für X- und Y-Koordinaten nur ein Array zu nehmen? Aber dann habe ich wieder das Problem mit der Übergabe...



  • schwarzes_schaf schrieb:

    Wäre es nicht klüger anstatt zwei Variablen für X- und Y-Koordinaten nur ein Array zu nehmen? Aber dann habe ich wieder das Problem mit der Übergabe...

    Ob du jetzt x und y oder arr[0] und arr[1] übergibst sollte ja keinen so großen Unterschied machen. Die Frage ist, welchen Vorteil dir das Array bei deiner Implementierung gibt.



  • schwarzes_schaf schrieb:

    Bin in C++ allgemein nicht soo bewandert 😞

    Dann waere es doch logisch, diesen Mangel erstmal zu beheben oder eine andere Sprache zu waehlen, mit der du dich besser auskennst.



  • Der Vorteil EINES Arrays (Array[x][y]) wäre dass ich das Array dann einfach mit return übergeben kann. oder?! Das Problem ist, dass ich dieses Projekt für die Schule machen muss und ich mir keine Programmiersprache aussuchen kann 😞



  • Okay, aber spätestens wenn du irgendwas per "return übergeben" willst, solltest du ein paar Grundsätze schon nochmal nachholen.


  • Mod

    Und um dir mal einen Hinweis zu geben: Rohe Arrays verhalten sich nicht sehr intuitiv bei der Übergabe, sowohl als Funktionsparameter als auch als Rückgabewert. Viele Anfänger haben damit sehr große Schwierigkeiten.

    Bei einem Array, das man in einer Klasse gekapselt hat, sieht es jedoch anders aus. Diese tun normalerweise genau das was man erwartet.



  • wenn es eh ständig die zwei Koordinaten sind, kannst du dir auch eine kleine Klasse mit diesen beiden Werten als Member anlegen



  • schwarzes_schaf_ schrieb:

    Hallo,

    suche dringend die Source für ein Schafspiel

    .. oh! die ganze Source und 'dringend' - das ist verdächtig. Wann brauchst Du es denn?

    schwarzes_schaf_ schrieb:

    Währe echt cool wenn ihr mir helfen könnt.

    Ja - wir können wir helfen. Du solltest vielleicht noch etwas konkreter werden. Wo liegt Dein Problem?

    schwarzes_schaf schrieb:

    Also mein Problem liegt darin, dass ich nicht weiss wie ich die Positionen speichern und übergeben soll. Bin in C++ allgemein nicht soo bewandert 😞
    Wäre es nicht klüger anstatt zwei Variablen für X- und Y-Koordinaten nur ein Array zu nehmen? Aber dann habe ich wieder das Problem mit der Übergabe...

    Gespeichert werden sie doch schon in der Klasse SCHAF (Member iX_Felder, iY_Felder;) und übergibst (bei Deinem Entwurf mit den Methoden SCHAF::Bewegen) zwei Integer - wo ist das Problem? und ansonsten:

    zwutz schrieb:

    wenn es eh ständig die zwei Koordinaten sind, kannst du dir auch eine kleine Klasse mit diesen beiden Werten als Member anlegen

    ja - das würde ich auch empfehlen. Denn:

    schwarzes_schaf_ schrieb:

    Das Spiel soll Objektorientiert sein mit einer Klasse SCHAF

    und dazu gehört auch der Ort der Schafe als Objekt; genauso wie das Feld auf dem sich die Schafe tummeln.

    Bleibt noch die Frage wie die Schafe bewegt werden. Aus der SCHAF-Schnittstelle schließe ich, dass die Intelligenz dazu außerhalb eines Schafes sitzt. Gibt es eine Strategie, wie sich die Schafe bewegen sollen? Oder sollen sie gegeneinander spielen - zwei Schafe fressen einem Schaf der 'gegnerischen Mannschaft' die Blumen weg, so dass es eingeht.

    Wann wachsen die Blumen nach? wie wird das gesteuert? Was ist das Ziel des Spiels? Was hast Du für eine GUI (Konsole, Graphik, was anderes)? Kann ein Schaf 'sehen' welchen Zustand (iMagenFuellstand, traechtig, u.a.) ein anderes Schaf in der Nähe hat?

    .. aber ein interessantes Thema 🕶
    Gruß
    Werner


Anmelden zum Antworten