Längere Variable



  • Feld: \n
    ------------- \n
    | 7 | 8 | 9 | \n
    ------------- \n
    | 4 | 5 | 6 | \n
    ------------- \n
    | 1 | 2 | 3 | \n
    ------------- \n\n
    

    Ich mein sowas.

    Wie kann ich das mit einer Klasse machen? Geht das? Also ich dachte in einer Klasse kann man Objekte anlegen und da gibts Vererbung Polymorphie u. Kapselung...

    Wie geht das jetz mit dem Array, mein Buch hilft mir auch net weiter...

    char Feld1[2] = " ";
    char Feld2[2] = " ";
    char Feld3[2] = " ";
    char Feld4[2] = " ";
    char Feld5[2] = " ";
    char Feld6[2] = " ";
    char Feld7[2] = " ";
    char Feld8[2] = " ";
    char Feld9[2] = " ";
    

    Der Code ist auch etwas unübersichtlich.

    char Spielfeld[500] =
    

    So, jetz weiss ich auch nichtmehr weiter...

    Die Variable Spielfeld enthält dann das Spielfeld.

    Dann sind dort diese "---------------" und dazwischen kommen noch diese "|"

    Aber zwischen den "|" soll dann die "Feld1" Variable...

    Das krieg ich nicht hin. Soll also eine Variable in einer anderen Variable angezeigt werden...



  • Mal ein Anriss fürs Array:

    char Spielfeld[3][3];
    
    //Mache hier alle Spielfelder =' '
    
    for(int zeile=0;zeile<=2;zeile++)
    {
      cout << "-------------" << endl;
      cout << "| " << Spielfeld[zeile][0] << " | " << Spielfeld[zeile][1] << " | " << Spielfeld[zeile][2] << " |" << endl;
    }
    cout << "-------------" << endl;
    


  • int Zeile, und dann int i 😃

    statt zeile musst'e i nehmen, dann geht's!

    Ivch wusste nicht, dass ich auch [3][3] nehmen kann



  • Statt i Zeile LOL



  • Autsch... liegt daran daß ich zuerst mit i geschrieben habe und dann wegen der lesbarkeit auf zeile geändert habe... Da übersieht man schnell was, naja, hast es ja gefunden 🙂 ich ändere das mal...



  • char Spielfeld[1][1] = { "O" };
    char Spielfeld[1][2] = { "x" };
    
    for(int zeile=0;zeile<=2;zeile++)
    {
      cout << "-------------" << endl;
      cout << "| " << Spielfeld[zeile][0] << " | " << Spielfeld[zeile][1] << " | " << Spielfeld[zeile][2] << " |" << endl;
    }
    cout << "-------------" << endl;
    

    Nur mal als bsp. ...

    Wieso gibt das ein Fehler?



  • bei der wertzuweisung für die array- elemente muß es heißen

    char blablabla[x][y] = '0';

    und entsprechend.

    soweit ich weiß jedenfalls...



  • Japp bei einem einzelnem Element aus einem Chararray muss der Wert zwischen einzelnen Hochkommata stehen ('), ein String dagegen steht zwischen doppelten Hochkommata (")



  • #include <iostream.h>
    #include <conio.h>
    #define FARBE    ( system("color 1f") )
    #define LINIE    ( cout << "-------------" << endl )
    #define CLS      ( system("cls") )
    #define HEADLINE ( cout <<" ***** Tic-Tac-Toe ***** \n\n" )
    using namespace std;
    //------------------------------------------------------------------------------
    // Globale Variablen
    char Spielfeld[3][3];
    int Eingabe;
    //------------------------------------------------------------------------------
    // Prototypen
    int BeispielFeld(void);
    int SpielFeld(void);
    //------------------------------------------------------------------------------
    int main()
    {
    
    while (true)
    {
    CLS;
    FARBE;
    HEADLINE;
    BeispielFeld();
    SpielFeld();
    cin >> Eingabe;
    
    switch (Eingabe)
    {
    case 1: Spielfeld[2][1] = 'X'; break;
    case 2: Spielfeld[2][2] = 'X'; break;
    case 3: Spielfeld[2][3] = 'X'; break;
    case 4: Spielfeld[1][1] = 'X'; break;
    case 5: Spielfeld[1][2] = 'X'; break;
    case 6: Spielfeld[1][3] = 'X'; break;
    case 7: Spielfeld[0][1] = 'X'; break;
    case 8: Spielfeld[0][2] = 'X'; break;
    case 9: Spielfeld[0][3] = 'X'; break;
    }
    
    } // End While
    
    system("pause");
    return 0;
    }
    //------------------------------------------------------------------------------
    
    // Funktion: Beispielfeld
    // Bewirkt: Anzeigen eines Beisp. Feld, was die Tastenbelegung anzeigt
    
    int BeispielFeld()
    {
    cout <<"Tastenbelegung: \n";
    cout <<"------------- \n";
    cout <<"| 7 | 8 | 9 | \n";
    cout <<"------------- \n";
    cout <<"| 4 | 5 | 6 | \n";
    cout <<"------------- \n";
    cout <<"| 1 | 2 | 3 | \n";
    cout <<"------------- \n\n";
    return 0;
    }
    
    // Funktion: SpielFeld
    // Bewirkt: Anzeige des Spielfeld, mit den Array's
    
    int SpielFeld()
    {
    for(int zeile = 0; zeile <= 2; zeile++)
    {
    LINIE;
    cout << "| " << Spielfeld[zeile][1] << " | " << Spielfeld[zeile][2] << " | " << Spielfeld[zeile][3] << " | " << endl;
    }
    LINIE;;
    return 0;
    }
    

    Soweit bin ich jetz...

    Jetz will ich noch den Zug des PC's Programmieren.

    Sowas wird doch mit Zufalsszahlen (Zwischen 1 u. 9 ) gemacht, oder?

    Wie krieg ich es jetz hin, das der PC mein Feld nicht überdeckt? Soll also nur freie Felder wählen...



  • Das er nicht überdschreibt reicht ein einfaches if zielfeld = 'X' und zu den Arrays! Wenn Du ein Array anlegst mit [3][3] sprichst Du die elemente selbst mit [0 bis 2][0 bis 2] an. Also ein Array der Größe N geht immer von 0 bis N-1 (eins nicht "l" 🙂



  • Entspricht der Code eigentlich dem Standart? Geht nur bei Borland C++ Builder... DJGPP kompiliert ihn net!



  • Nein, natürlich nicht.

    <iostream.h> muss <iostream> heißen und dafür steht alles im Namensraum std.

    <conio.h> ist eine Borland-spezifische Bibliothek, die Teilweise auch bei andern Compiler beiliegt.


Anmelden zum Antworten