Tic Tac Toe programmieren

Tomsen1410

Mitglied
Hi,
ich hab jetzt vor einer Woche mit C++ angefangen. Und wollte mal meine "Skills" testen:D
Ich wollt jetzt mal ein Tic tac Toe erstellen. Erstmal mit zwei Spielern am selben PC. nur zur übung. Aber ich häng leider schon am Anfang :(
Eins schonmal vorweg. Ich denke ich weiß, dass ich richtig beschis.... gecodet hab^^
Mein Problem hier ist, dass wenn ich eine Nummer einsetzte, gleich das ganze Feld immer wiederholt... Also wenn ihr so lieb wärt und nen Anfänger helfen könntet :D

Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int X = 0;
int O = 0;

 
int main(int argc, char *argv[]){
    
    
    
    
    do
    { cout << "Eingabe fuer den Spieler X (1-9): \n";
      cin >> X;
      
      if (X == 0)
      {
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            
      }
      
      if (X == 1)
      {
            cout << "   |   |   \n";
            cout << " X |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            
      }
      if ( X == 2)
      {
            cout << "   |   |   \n";
            cout << "   | X |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
      }
      if ( X == 3)
      {
            cout << "   |   |   \n";
            cout << "   |   | X \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
      }
        if ( X == 4)
      {
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << " X |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
      }
        if ( X == 5)
      {
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   | X |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
      }
        if ( X == 6)
      {
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   | X \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
      }
        if ( X == 7)
      {
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "  X|   |   \n";
            cout << "   |   |   \n";
      }
        if ( X == 8)
      {
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |  X|   \n";
            cout << "   |   |   \n";
      }
        if ( X == 9)
      {
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   |   \n";
            cout << "___|___|___\n";
            cout << "   |   |   \n";
            cout << "   |   | X \n";
            cout << "   |   |   \n";
      }
      
    
    }while(X <= 9 );
      
      
    
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Welche Ausgabe willst du denn? z. B. sowas?

Code:
cout << "   |   |   \n";
cout << " X |   |   \n";
cout << "___|___|___\n";
cout << "   | X |   \n";
cout << "   |   |   \n";
cout << "___|___|___\n";
cout << "   |   |   \n";
cout << "   |   |   \n";
cout << "   |   |   \n";

Sry, aber ich versteh nicht ganz was du willst...
 
Zuletzt bearbeitet:
Welche Ausgabe willst du denn? z. B. sowas?

Code:
cout << "   |   |   \n";
cout << " X |   |   \n";
cout << "___|___|___\n";
cout << "   | X |   \n";
cout << "   |   |   \n";
cout << "___|___|___\n";
cout << "   |   |   \n";
cout << "   |   |   \n";
cout << "   |   |   \n";

Sry, aber ich versteh nicht ganz was du willst...

Ja, genau so. Also, dass ich neue Steine setzten kann, aber sich das Feld nicht immer verdoppelt
 
du willst sozusagen, dass das Spielfeld immer an die selbe Stelle ausgegeben wird.

Dazu kannst du vor der Ausgabe die Konsole leeren:
Code:
cout << "\E[H\E[2J";
Das ist eine Escape-Frequenz. Also ein Steuerbefehl für die Konsole (hier eben Bildschirm leeren).

Dann sind aber jedes Mal deine bisherigen Züge weg.
Die solltest du dann in einer Matrix abspeichern und jedes mal mit neu zeichnen.

Code:
if(feld[1][1] == 1) //Spieler 1
    cout << "X";
else if(feld[1][1] == 2) //Spieler 2
    cout << "O"
else
    cout << " " //kein Spieler

Im guten alten C gab es auch mal eine gotoxy-Funktion. Die gibts hier aber glaube ich nicht.
 
Zuletzt bearbeitet:
gotoxy? Sicher, dass die Funktion in einer Standardlib war? :D

Unter Windows gibts für den Zweck WriteConsoleOutputCharacter.
 
gotoxy? Sicher, dass die Funktion in einer Standardlib war? :D
ähm...nein...

hab grade nochmal nachgeforscht. Das ist (war) eine Funktion von Borland, die in der conio.h zu finden ist.

Ich habe allerdings auch eine Alternative gefunden:
Code:
#include <windows.h>
 
void gotoxy(int xpos, int ypos)
{
    COORD scrn;    
    HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
    scrn.X = xpos; scrn.Y = ypos;
    SetConsoleCursorPosition(hOuput,scrn);
}
Quelle: StarShaper @ board.gulli.com

Damit sollte es auch einfacher möglich sein die Spielermarkierungen zu setzen, ohne jedes mal die Konsole komplett neu zu schreiben.
 
Zuletzt bearbeitet:
Zurück