Damebrett Konsole



  • Huhu,

    ich habe gerade damit angefangen ein Damespiel für die Konsole zu schreiben.
    Allerdings werden mir dort an manchen Positionen Sonderzeichen ausgegeben kann mir jmd sagen woran das liegt ? 😕

    Danke 🙂

    #include <iostream>
    
    using namespace std;
    
    class Damebrett {
    public:
    
      void initBrett()
      {
        // Seite Spieler 1
        for(int i = 0; i < 3; i++) {
            for(int j = 0; j <10; j++) {
                if((j % 2) == 0) {
                    if((i % 2) == 0) {
                        Brett[i][j] = 'W';
                    } else {
                        Brett[i][(j + 1)] = 'W';
                    }
                }
            }
        }
        // Seite Spieler 2
        for(int i = 0; i < 3; i++) {
            for(int j = 0; j < 10; j++) {
                if((j % 2) == 0) {
                    if((i % 2) != 0) {
                        Brett[(i + 7)][j] = 'B';
                    } else {
                        Brett[(i + 7)][(j + 1)] = 'B';
                    }
                }
            }
        }
    }
    
    // Brett Ausgabe
    void printBrett()
    {
        // X Position
        for(int k = 0; k <10; k++)
            cout << "    " << static_cast<char> (k + 65);
    
        cout << endl << endl;
        // Y Position
        for(int i = 0; i <10; i++) {
            cout << i << "  ";
            for(int j = 0; j <10; j++) {
                if(Brett[i][j] != 0)
                    cout << "[ " << Brett[i][j] << " ]";
                else
                    cout << "[   ]";
            }
            cout << endl;
        }
    }
    private:
         char Brett [10][10];
    };
    
    int main() {
      Damebrett damebrett;
      damebrett.initBrett();
      damebrett.printBrett();
    }
    


  • manchen

    Aha, welche?
    Vielleicht die, die du nicht initialisiert hast?

    Warum gibt es eine initBrett Funktion? Benutze einen Konstruktor, dafür ist er da.


  • Mod

    chars (oder generell so ziemlich alle eingebauten Datentypen) werden in C++ nicht automatisch mit 0 initialisiert. Entweder musst du entsprechenden Code bei deinem initBrett einfügen oder bequemer mittels:

    char Brett [10][10] = {};
    

    Für letzteres musst du gegebenenfalls C++11 oder höher aktivieren, falls das bei dir nicht sowieso schon benutzt wird.



  • Erstmal vielen Dank hat super geklappt 🙂
    Allerdings stehe ich bei dem Rest der Aufgabe irgendwie total auf dem Schlauch 🙄
    Ich würde meine Aufgabe hier einfach mal verlinken und vlt. hat ja jmd ein paar Tipps und Anregungen für mich 😕

    https://picload.org/view/ddccigdi/damespiel.jpg.html

    Danke schon mal vorab 😉



  • felix92 schrieb:

    Ich würde meine Aufgabe hier einfach mal verlinken und vlt. hat ja jmd ein paar Tipps und Anregungen für mich 😕

    Bei Punkt 2 hat sich ein Tippfehler eingeschlichen "udn" --> "und".
    Bei Punkt 5 fehlt ein "ist".


  • Mod

    felix92 schrieb:

    Ich würde meine Aufgabe hier einfach mal verlinken und vlt. hat ja jmd ein paar Tipps und Anregungen für mich 😕

    Fragen dieser Art bringen in der Regel niemals nützliche Antworten, da niemand weiß, was du wissen möchtest. Die meisten antworten lieber gar nicht, als jede mögliche Antwort vorherzusehen. Oder sie antworten mit nutzlosen Allgemeinfloskeln, weil dies das einzige ist, was immer passt. Oder sie antworten wie Swordfish, technisch richtig aber nutzlos, um dir vorzuführen, wieso das keine gute Fragestellung ist.



  • Ok dann spezifiziere ich die Frage mal 😉 wie bekomme ich die einzelnen "Steine" eingelesen um ihnen einen möglichen "move" zuzuordnen ? ..und wie zur Hölle soll ich jeden Schritt abspeichern um ihn per Tastendruck ( "-" ) zurückzusetzen ? 😕


  • Mod

    felix92 schrieb:

    Ok dann spezifiziere ich die Frage mal 😉 wie bekomme ich die einzelnen "Steine" eingelesen um ihnen einen möglichen "move" zuzuordnen ?

    "Steine" einlesen? "Steinen einen 'move' zuordnen"? Warum willst du das? Was soll das überhaupt bedeuten? Verstehe ich nicht.

    Kennst du Damespiel im echten Leben? Wenn ich dir ein Damefeld mit Steinen drauf gebe und den Zug 'A1 B2', könntest du mir dann damit sagen, ob dieser Zug gültig ist? Könntest du das Damefeld sogar so verändern, dass besagter Zug (sofern erlaubt) darauf ausgeführt wurde?

    Ich hoffe mal, die Antwort auf alle Fragen im zweiten Absatz ist Ja (sonst hast du ein ernsteres Problem als diese Aufgabe). Ein Damefeld mit Belegung hast du. Etwas wie 'A1 B2' ist einfach bloß eine Zeichenfolge, die du einlesen kannst. Nun mach damit das, was du im richtigen Leben damit machen würdest.

    ..und wie zur Hölle soll ich jeden Schritt abspeichern um ihn per Tastendruck ( "-" ) zurückzusetzen ? 😕

    Im Gegensatz zum richtigen Leben, kannst du dein Damefeld ganz einfach kopieren. Und diese Kopien hinterlegst du halt irgendwo. Im echten Leben hättest du vielleicht die Belegung des Feldes auf einen Zettel geschrieben. Und dann könntest du die Zettel auf einen Stapel (*hint*hint*) legen. So wüsstest du immer, welches der letzte Zustand war (nämlich der oberste auf dem Stapel), in welcher Reihenfolge die Spielzustände dran kamen (nämlich in der Ordnung der Zettel auf dem Stapel), und könntest ganz leicht zu vorherigen Zuständen zurück gehen, indem du entsprechend viele Zettel zurück gehst.


Anmelden zum Antworten