Jäger-Beute-Spiel



  • Hallo,
    ich bin dabei eine Art Fangspiel zu programmieren, vorläufig jagt ein Räuber auf einem 18 * 18 großen spielfeld(arrays) 4 Beutetiere.
    Der Jäger soll nun immer auf das ihm nächste Beutetier losgehen(es wird gewürfelt, wieweit der Räuber sich bewegen kann) und wie gesagt, das Spielfeld hat 2 Koordinaten. Mein Problem ist, dass ich es nicht schaffe, dass der Jäger sich nun auch bewegt. Ich habe es allerdings geschafft den abstand zwischen beute und jäger zu ermitteln. Also, wie schaffe ich es, dass der jäger sich nun auch bewegt?

    Spielfeld:
    string feld[18][18] = {
    {"a1","a2","a3"........
    {"b1","b2","b3".....
    {"c1","...
    ...
    ...
    ...};



  • 1. Was willst du genau machen?
    2. Etwas mehr Code wäre hilfreich
    3. Stellst du das Spielfeld etwa durch strings dar?



  • 1. Den räuber auf die beute zulaufen lassen. find meine erklärung schon recht ausreichend.
    2.ich dnek nicht das das hilft, außer dem spielfeld welches ich schon so gepostet hab ist der code irrelevant.ich füg die ausgabe an.
    3.ja, warum?

    Runde 1:
    Es gibt zur Zeit 4 Beutetiere
    und 1 Räuber!
    
    Der/Die Rauber befindet/n sich auf Feld i10 und kann/konnen 6 Felder weit gehen.
    
    Die Beute befindet sich auf folgenden Feldern:
    >e9 >h2 >q13 >q14
    Abstand zu Beute1: 4/1, also 5 Felder.
    Abstand zu Beute2: 1/8, also 9 Felder.
    Abstand zu Beute3: 8/3, also 11 Felder.
    Abstand zu Beute4: 8/4, also 12 Felder.
    
    Kleinster Abstand ist somit 5, der Rõuber bewegt sich also auf das Feld e9 zu.
    


  • Strings für Positionsangaben sind Unfug. Koordinaten sind Zahlenpaare, keine Texte. Und wie du ja schon gemerkt hast, kann man mit Strings eben nicht so gut rechnen. Also nimm int und deine Probleme sind gelöst.



  • ja da ich aber die namen der Xaxgse der übersichtlichkeit halber mit buchstaben benannt hab geht das so nochnicht... muss ich mal schauen wie ich es dann nennen sollte...



  • Da im Spielfeld offenbar nur die Namen der Felder gespeichert werden, scheint es mir komplett überflüssig zu sein, da man diese auch aus Zeilen- und Spaltennummer generiert werden können.



  • Du kannst die Position natürlich auch aus einem String ermitteln:

    string pos="e7";
    int x=pos[0]-'a';
    int y=pos[1]-'0';
    

    Dann wiederholst du für x Schritte eben x mal:
    - Ein Schritt Richtung nächster Beute gehen.

    int schritte=6;
    int opferX=...;
    int opferY=...;
    int raeuberX=...,raeuberY=...;
    for (int i=0;i<schritte;i++)
    {
      if (raeuberX<opferX)raeuberX++;
      else if (raeuberX>opferX)raeuberX--;
      else if (raeuberY<opferY)raeuberY++;
      else if (raeuberY>opferY)raeuberY--;
      else break;
    }
    


  • alles klar danke soweit bin ich, doch wie kann ich die erwischte beute nun löschen, sicher, mit ner schleife, aber das wäre ein wenig kompliziert, vorallem muss ich daran denken, dass sich Beute und Räuber noch vermehren....



  • Du hast doch die Position der Beute, dann brauchst du sie doch nur noch aus dem Array Speichern und mit nichts oder was auch immer bei dir ein leeres Feld ist belegen.

    Dein Jäger bewegt sich doch zu der Stelle, somit hast du doch die Koordinaten.



  • CyroZ schrieb:

    Xaxgse

    OMFG 😮



  • inflames2k schrieb:

    Du hast doch die Position der Beute, dann brauchst du sie doch nur noch aus dem Array Speichern und mit nichts oder was auch immer bei dir ein leeres Feld ist belegen.

    Dein Jäger bewegt sich doch zu der Stelle, somit hast du doch die Koordinaten.

    gut ich werds versuchen, hatte diesen ansatz auch aber bei der umsetzung gabs fehler...

    hustbaer schrieb:

    CyroZ schrieb:

    Xaxgse

    OMFG 😮

    jo der Button X ist neben C, der Button G ist neben H 😉
    keine angst, hab mich nur vertippt und konnte nicht editieren^^


Anmelden zum Antworten