"Karte" mit Koordinaten



  • Hallo Leute ^^ Ich arbeite weiter an meinem Text Based rRPG und bin nun an einem Problem angelangt, von dem ich keine Ahnung habe, wie ich dieses lösen könnte 😃
    Ich möchte eine Karte generieren lassen, auf der sich der Spieler mit den Befehlen "Nord", "Ost", "Süd" oder "West" bewegen kann. Mein Lösungsvorschlag wäre jetzt gewesen, der Struct "Spieler" bekommt noch zwei Integer, einen für X, einen für Y. Doch ich weiter weiß ich nicht. 😞 Da das Spiel später eine Speicher-Funktion bekommen soll, sollte die Karte irgendwie in einer .txt Datei abspeicherbar sein 😕 Noch dazu soll quasi jedes "Feld" (z.B. (8|5), etc) zwei Integer bekommen soll. Eine für den Typ, also z.B. 0 = Wald, 1 = Wüste, 2 = Dschungel,usw.
    und eine für das Special, z.B. 0 = Nichts, 1 = Dungeon, 2 = Stadt.

    Soo, ist es denn jetzt möglich das auch so zu realisieren? :3


  • Mod

    morice1999 schrieb:

    Soo, ist es denn jetzt möglich das auch so zu realisieren? :3

    Ja, klingt ok. Der Spieler ist ein Objekt mit gewissen Eigenschaften, dazu zählt auch seine Position. Die Spielfelder sind auch Objekte mit gewissen Eigenschaften, dazu zählt auch ihr Geländetyp. Das lässt sich beides 1:1 so im Programm umsetzen und auch Speichern und Laden solcher Daten ist direkt machbar, indem man eben diese Daten rausschreibt/einliest.



  • SeppJ schrieb:

    morice1999 schrieb:

    Soo, ist es denn jetzt möglich das auch so zu realisieren? :3

    Ja, klingt ok. Der Spieler ist ein Objekt mit gewissen Eigenschaften, dazu zählt auch seine Position. Die Spielfelder sind auch Objekte mit gewissen Eigenschaften, dazu zählt auch ihr Geländetyp. Das lässt sich beides 1:1 so im Programm umsetzen und auch Speichern und Laden solcher Daten ist direkt machbar, indem man eben diese Daten rausschreibt/einliest.

    Jaa, aber wie? 😃 Soll ich die Felder als Structs erstellen, oder was? 😕 🙄


  • Mod

    morice1999 schrieb:

    Jaa, aber wie? 😃 Soll ich die Felder als Structs erstellen, oder was? 😕 🙄

    Eher voll funktionsfähige Klassen, aber: Ja!

    Vielleicht solltest du vorher noch ein paar Übungsaufgaben zum Lernen der Sprache machen? Das ist eher einer der einfacheren Teile bei dem Projekt, nach dem du gerade fragst. Wenn du hier schon ratlos bist, dann wäre es gut, die Möglichkeiten der Sprache besser kennen zu lernen und auch mehr Erfahrung an der Lösung von einfacheren Problemen zu sammeln.



  • Ich möchte ja die Sprache durch dieses Projekt gleichzeitig lernen, aber irgendwie finde ich kein gutes Tutorial, dass mir das zeigt, was ich brauche, vor allem aber fängt jedes anders an und verwendet unterschiedliche befehle.. Ich komm damit nicht klar 😞


  • Mod

    morice1999 schrieb:

    Ich möchte ja die Sprache durch dieses Projekt gleichzeitig lernen, aber irgendwie finde ich kein gutes Tutorial, dass mir das zeigt, was ich brauche, vor allem aber fängt jedes anders an und verwendet unterschiedliche befehle.. Ich komm damit nicht klar 😞

    In meiner Signatur findest du Links zu Listen guter Bücher. Internettutorials zu C++ sind erfahrungsgemäß nicht so gut, um es mal freundlich auszudrücken. Kann es sein, dass du (oder möglicherweise deine Tutorials, siehe meine Bemerkung zur Qualität) C++ mit anderen Sprachen, mit ähnlichem Namen, verwechselst? Deine Beschreibungen klingen teils sehr nach C. Das erklärt auch deine Verwirrung bezüglich sehr unterschiedlicher Tutorials.



  • Nein, ich verwechsle da nichts, aber sobald ich sowas wie "Vectors Tutorial C++" google, finde ich maximal 2 Stück, die auf Sachen aufbauen, die ich noch nicht kann, ansonsten finde ich nur zeugs für C, C# oder gar Java, also ich guck mir mal die Links an 🙂



  • Hallo morice1999,

    ich habe zwar keine Ahnung von Gamedesign, aber als beherzter Rollenspieler finde ich das Thema spannend. 😉

    Ich habe allerdings den Eindruck, dass bei dir zwei Sachen durcheinandergehen: Zum Einen redest du von den Himmelsrichtungen und X und Y Koordinaten, d.h. Bewegung in einer Ebene. Als zweites soll in deinem Tupel der erste Eintrag das Gelände angeben und der zweite Eintrag was sich dort findet.

    Also wenn sich der Abenteurer bei (1|2) befindet, dann ist er 'nicht' eins nach rechts gegangen und zwei nach oben, sondern ist in der Wüste und findet dort eine Stadt? Ist etwas unintuitiv. 😉

    Vielleicht solltest du einfacher anfangen und deinen Helden sich zunächst in 1D bewegen lassen, sagen wir links / rechts oder hoch / runter. Das kannst du durch einen einfachen Integer in der Klasse festhalten, samt Bewegung.

    class abenteurer
    {
      public:
        void gehe_rechts() { ++position; }
        void gehe_links()  { --position; }
    
      private:
        unsigned int position;
    };
    

    Dann überlege wie du anhand der Position eine Begegnung ausmachst. Ich würde spontan z.B. an eine modulo Rechnung denken. Sagen wir, dass sich der Abenteurer umsehen kann (ja, macht auch nicht viel Sinn, dass die Begegnung davon abhängt ob er sich umguckt 😉 )

    void abenteurer::umsehen()
    {
      if( position mod 5 == 0 )
        // Stadt
      if( position mod 5 == 1 )
        // Dungeon
      if( position mod 5 == 2 )
        // Kampf
      else
        // nichts
    }
    

    Das ganze würde dann z.B. so aussehen

    abenteurer gandalf;
    
    gandalf.gehe_rechts();
    
    gandalf.umsehen();
    

    Gruß,
    -- Klaus.


Anmelden zum Antworten