[C/C++] String verwalten

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Sn0wm4n, 1. April 2007 .

Schlagworte:
  1. 1. April 2007
    String verwalten

    hallo,

    meine Situation:
    Ich versuche gerade, eine Art Schachprogramm in der Windows Konsole zu bauen.
    Jetzt habe ich alle Felder als char's deklariert. Dann sollte man eigentlich ein Startfeld (zB a3, f6, h2, ...) und ein Zielfeld eingeben.
    Jetzt hätte ich gerne eine "einfache" Möglichkeit, die char's zu ändern.
    Denn wenn ich A3 eingebe, dann heisst das zu ändernde Feld f17. f17 soll dann leer werden und das Zielfeld soll ein zB "B" für Bauer bekommen. Jetzt kann ich aber nicht die Usereingabe umwandeln, sodass ich f17 ändere...

    Schwer zu erklären^^
    Ich hatte jetzt nur diese Idee:
    Bsp Bauer von A2 auf A3
    Code:
     if(eingabe1=="f9") f9=' ';
     if(eingabe2=="f17") f17='B';
    Aber ein Schachbrett hat 64 Felder, da kann man ja nicht alle Möglichkeiten mit if / switch machen.


    Darum bräuchte ich gute Tipps, wie man das regeln kann.


    Hoffe, dass dies einigermaßen verständlich war,
    Sn0wm4n
     
  2. 1. April 2007
    AW: String verwalten

    also ich hätte es jetzt nicht mit ner chararray gemacht, sondern direct mit 'ner struct-array
    hier mein Code:
    Code:
    #include <iostream>
    
    using namespace std;
    
    enum Figuren
    {
     BAUER,
     SPRINGER,
     TURM,
     KOENIG,
     DAME,
     // usw. mir fallen grad keine mehr ein...
    };
    
    struct EinzelFeld
    {
     bool Leer; // Falls das Feld leer ist, ist Leer = true;
     int Figur; // Int-wert der die Figur widerspiegeln soll (Bsp. 1 für Bauer, 2 für Springer ect. pp)
     bool Color; // Farbe der Figur (true ^= schwarz)
     char Name[3];
    };
    
    char intToChar(int integer)
    {
     return (char)integer+48;
    }
    
    int main(void)
    {
     EinzelFeld SchachFeld[64];
     char AktBstb;
     for(int y = 0; y < 8; y++)
     {
     if(y == 0) AktBstb = 'A';
     else if(y == 1) AktBstb = 'B';
     else if(y == 2) AktBstb = 'C';
     else if(y == 3) AktBstb = 'D';
     else if(y == 4) AktBstb = 'E';
     else if(y == 5) AktBstb = 'F';
     else if(y == 6) AktBstb = 'G';
     else if(y == 7) AktBstb = 'H';
     for(int i = 0; i < 8; i++)
     {
     SchachFeld[i+(y*8)].Name[0] = AktBstb;
     SchachFeld[i+(y*8)].Name[1] = intToChar(i+1);
     SchachFeld[i+(y*8)].Name[2] = '\0';
     cout << SchachFeld[i+(y*8)].Name << " wurde erfolgreich intialisiert!" << endl;
     }
     }
     for(int i = 0; i < 64; i++)
     {
     cout << "\nSoll Feld " << SchachFeld[i].Name << " besetzt werden?\nIhre Auswahl((J)a, (N)ein): ";
     cin >> AktBstb;
     if(AktBstb == 'j' || AktBstb == 'J')
     {
     cout << "\nWelche Farbe soll die Spielfigur auf Feld " << SchachFeld[i].Name << " haben?\nIhre Auswahl(s/w): ";
     cin >> AktBstb;
     if(AktBstb == 's' || AktBstb == 'S') SchachFeld[i].Color = true;
     else if(AktBstb == 'w' || AktBstb == 'W') SchachFeld[i].Color = false;
     else
     {
     cout << "\nUngueltige Eingabe!";
     i--;
     }
     cout << "\nWelche Spielfigur soll auf Feld " << SchachFeld[i].Name << " stehen?\nIhre Auswahl((B)auer, (D)ame, (K)oenig, (T)urm, (S)pringer): ";
     cin >> AktBstb;
     switch(AktBstb)
     {
     case 'K' : SchachFeld[i].Figur = KOENIG;
     case 'D' : SchachFeld[i].Figur = DAME;
     case 'B' : SchachFeld[i].Figur = BAUER;
     // usw ^^ lol
     }
     }
     else
     {
     cout << "\nOk denn nischt ;-)";
     }
     }
     system("PAUSE");
     return EXIT_SUCCESS;
    }
    Zum Teil hatte ich keine Lust, alles aufzuführen (Spielfiguren bei der Auswahl ect.) muss eben noch ergänzt werden... ansonsten denke ich, ist das so die mit einfachste Methode.
    Falls irgentwas unklar seien sollte meld dich!

    mfg thecoolman4rr
     
  3. 2. April 2007
    AW: String verwalten

    man könnte in dem obigen beispiel noch ein 2-dimensionales Array für das Schachfeld benutzen, bietet sich hier ja an (ist jetzt so das einzige was mir noch einfallen würde^^) Ansonsten ist die Lösung wirklich die einfachste...

    MFG
    Pacman
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.