TIC TAC TOE (gegen Computer)
-
Aloa!
hab mal wieder nen Tic Tac Toe geschrieben.
Den Mehrspielermodus hab ihc weggelassen, weil der wie ich finde eh nichts bringt.
Besonderheiten:
-Man kann gegen Computer spielel(logisch^^)
-3 Schwierigkeitsstufen
-Spielfeld und die Symbole sind farblich unterschiedlich
-und noch nen paar sachen
code:
[hide]//////////////Projekt TIC TAC TOE #include <iostream> #include <conio.h> #include <windows.h> #include <stdlib.h> #include <fstream> #include <time.h> using namespace std; char a='1', b='2', c='3', d='4', e='5', f='6', g='7', h='8', i='9'; int main(); int spielerzug(); char name[20]; char cheat[20]; float count = 0; int z = 0; int anzahlgewonnen = 0; int anzahlverloren = 0; int anzahlunentschieden = 0; int schwierigkeit; int eingabe; int spiel; int cerstesmal = 0; void gotoxy(short x, short y) { HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X=x-1; pos.Y=y-1; SetConsoleCursorPosition(hCon, pos); } int statistik() { cheat[0]= 'w'; cheat[1]= 'i'; cheat[2]= 'n'; cheat[3]= 'n'; cheat[4]= 'e'; cheat[5]= 'r'; if ((name[0]==cheat[0]) && (name[1]==cheat[1]) && (name[2]==cheat[2]) && (name[3]==cheat[3]) && (name[4]==cheat[4]) && (name[5]==cheat[5]) && (name[6]==cheat[6])) { anzahlgewonnen = 99; anzahlverloren = 0; anzahlunentschieden = 0; } gotoxy(62, 6); cout << "Statistik:" << endl; gotoxy(62, 7); cout << "Gewonnen: " << anzahlgewonnen; gotoxy(62, 8); cout << "Verloren: " << anzahlverloren; gotoxy(62, 9); cout << "Unentschieden: " << anzahlunentschieden; } void schreibezahlen(int spieler=0, int nummer=0) { HANDLE hL = GetStdHandle(STD_OUTPUT_HANDLE); if (spieler==1) { SetConsoleTextAttribute(hL,FOREGROUND_GREEN); if (nummer == 1) { gotoxy (4, 8); cout << a; } if (nummer == 2) { gotoxy (8, 8); cout << b; } if (nummer == 3) { gotoxy (11, 8); cout << c; } if (nummer == 4) { gotoxy (4, 6); cout << d; } if (nummer == 5) { gotoxy (8, 6); cout << e; } if (nummer == 6) { gotoxy (11, 6); cout << f; } if (nummer == 7) { gotoxy (4, 4); cout << g; } if (nummer == 8) { gotoxy (8, 4); cout << h; } if (nummer == 9) { gotoxy (11, 4); cout << i; } SetConsoleTextAttribute(hL,FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN); } if (spieler==2) { SetConsoleTextAttribute(hL,FOREGROUND_BLUE); if (nummer == 1) { gotoxy (4, 8); cout << a; } if (nummer == 2) { gotoxy (8, 8); cout << b; } if (nummer == 3) { gotoxy (11, 8); cout << c; } if (nummer == 4) { gotoxy (4, 6); cout << d; } if (nummer == 5) { gotoxy (8, 6); cout << e; } if (nummer == 6) { gotoxy (11, 6); cout << f; } if (nummer == 7) { gotoxy (4, 4); cout << g; } if (nummer == 8) { gotoxy (8, 4); cout << h; } if (nummer == 9) { gotoxy (11, 4); cout << i; } SetConsoleTextAttribute(hL,FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN); } if (spieler==3) { SetConsoleTextAttribute(hL,FOREGROUND_RED); if (nummer == 1) { gotoxy (4, 8); cout << a; } if (nummer == 2) { gotoxy (8, 8); cout << b; } if (nummer == 3) { gotoxy (11, 8); cout << c; } if (nummer == 4) { gotoxy (4, 6); cout << d; } if (nummer == 5) { gotoxy (8, 6); cout << e; } if (nummer == 6) { gotoxy (11, 6); cout << f; } if (nummer == 7) { gotoxy (4, 4); cout << g; } if (nummer == 8) { gotoxy (8, 4); cout << h; } if (nummer == 9) { gotoxy (11, 4); cout << i; } } if (spieler==0) { gotoxy (4, 8); cout << a; gotoxy (8, 8); cout << b; gotoxy (11, 8); cout << c; gotoxy (4, 6); cout << d; gotoxy (8, 6); cout << e; gotoxy (11, 6); cout << f; gotoxy (4, 4); cout << g; gotoxy (8, 4); cout << h; gotoxy (11, 4); cout << i; } SetConsoleTextAttribute(hL,FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN); } void copyright() { string a = "Copyright by Gnomecoder"; int c = 22; int b; gotoxy(30, 20); for (b=0; b<=c; b++) { cout << a[b]; } } int untentschieden() { anzahlunentschieden++; gotoxy(1, 15); cout << "Das Spiel ist Unentschieden!" << endl; cout << "Das Spiel ist vorbei!" << endl; int frage; cout << "Startet Spiel..."; Sleep(1000); a='1'; b='2'; c='3'; d='4'; e='5'; f='6'; g='7'; h='8'; i='9'; main(); } int gewonnenn(int spieler, int abfrage = 1) { if (spieler == 1) { gotoxy(1, 15); cout << name << " hat gewonnen" << endl; anzahlgewonnen++; } if (spieler == 2) { if (abfrage==2) { gotoxy(1, 15); cout << "Computer hat gewonnen!" << endl; anzahlverloren++; } } cout << "Das Spiel ist vorbei!" << endl; cout << "Startet Spiel..."; Sleep(1000); a='1'; b='2'; c='3'; d='4'; e='5'; f='6'; g='7'; h='8'; i='9'; main(); } int kontrolle() { int gewonnen; if (((a=='X') && (b=='X') && (c=='X')) || ((d=='X') && (e=='X') && (f=='X')) || ((g=='X') && (h=='X') && (i=='X')) || ((a=='X') && (e=='X') && (i=='X')) || ((g=='X') && (e=='X') && (c=='X')) || ((a=='X') && (d=='X') && (g=='X')) || ((b=='X') && (e=='X') && (h=='X')) || ((c=='X') && (f=='X') && (i=='X'))) { if ((a=='X') && (b=='X') && (c=='X')) { schreibezahlen(3, 1); schreibezahlen(3, 2); schreibezahlen(3, 3); Sleep(500); schreibezahlen(1, 1); schreibezahlen(1, 2); schreibezahlen(1, 3); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 2); schreibezahlen(3, 3); Sleep(500); schreibezahlen(1, 1); schreibezahlen(1, 2); schreibezahlen(1, 3); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 2); schreibezahlen(3, 3); } if ((d=='X') && (e=='X') && (f=='X')) { schreibezahlen(3, 4); schreibezahlen(3, 5); schreibezahlen(3, 6); Sleep(500); schreibezahlen(1, 4); schreibezahlen(1, 5); schreibezahlen(1, 6); Sleep(500); schreibezahlen(3, 4); schreibezahlen(3, 5); schreibezahlen(3, 6); Sleep(500); schreibezahlen(1, 4); schreibezahlen(1, 5); schreibezahlen(1, 6); Sleep(500); schreibezahlen(3, 4); schreibezahlen(3, 5); schreibezahlen(3, 6); } if ((g=='X') && (h=='X') && (i=='X')) { schreibezahlen(3, 7); schreibezahlen(3, 8); schreibezahlen(3, 9); Sleep(500); schreibezahlen(1, 7); schreibezahlen(1, 8); schreibezahlen(1, 9); Sleep(500); schreibezahlen(3, 7); schreibezahlen(3, 8); schreibezahlen(3, 9); Sleep(500); schreibezahlen(1, 7); schreibezahlen(1, 8); schreibezahlen(1, 9); Sleep(500); schreibezahlen(3, 7); schreibezahlen(3, 8); schreibezahlen(3, 9); } if ((a=='X') && (e=='X') && (i=='X')) { schreibezahlen(3, 1); schreibezahlen(3, 5); schreibezahlen(3, 9); Sleep(500); schreibezahlen(1,1); schreibezahlen(1,5); schreibezahlen(1,9); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 5); schreibezahlen(3, 9); Sleep(500); schreibezahlen(1,1); schreibezahlen(1,5); schreibezahlen(1,9); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 5); schreibezahlen(3, 9); } if ((g=='X') && (e=='X') && (c=='X')) { schreibezahlen(3, 7); schreibezahlen(3, 5); schreibezahlen(3, 3); Sleep(500); schreibezahlen(1,7); schreibezahlen(1,5); schreibezahlen(1,3); Sleep(500); schreibezahlen(3, 7); schreibezahlen(3, 5); schreibezahlen(3, 3); Sleep(500); schreibezahlen(1,7); schreibezahlen(1,5); schreibezahlen(1,3); Sleep(500); schreibezahlen(3, 7); schreibezahlen(3, 5); schreibezahlen(3, 3); } if ((a=='X') && (d=='X') && (g=='X')) { schreibezahlen(3, 1); schreibezahlen(3, 4); schreibezahlen(3, 7); Sleep(500); schreibezahlen(1,1); schreibezahlen(1,4); schreibezahlen(1,7); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 4); schreibezahlen(3, 7); Sleep(500); schreibezahlen(1,1); schreibezahlen(1,4); schreibezahlen(1,7); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 4); schreibezahlen(3, 7); } if ((b=='X') && (e=='X') && (h=='X')) { schreibezahlen(3, 2); schreibezahlen(3, 5); schreibezahlen(3, 8); Sleep(500); schreibezahlen(1,2); schreibezahlen(1,5); schreibezahlen(1,8); Sleep(500); schreibezahlen(3, 2); schreibezahlen(3, 5); schreibezahlen(3, 8); Sleep(500); schreibezahlen(1,2); schreibezahlen(1,5); schreibezahlen(1,8); Sleep(500); schreibezahlen(3, 2); schreibezahlen(3, 5); schreibezahlen(3, 8); } if ((c=='X') && (f=='X') && (i=='X')) { schreibezahlen(3, 3); schreibezahlen(3, 6); schreibezahlen(3, 9); Sleep(500); schreibezahlen(1,3); schreibezahlen(1,6); schreibezahlen(1,9); Sleep(500); schreibezahlen(3, 3); schreibezahlen(3, 6); schreibezahlen(3, 9); Sleep(500); schreibezahlen(1,3); schreibezahlen(1,6); schreibezahlen(1,9); Sleep(500); schreibezahlen(3, 3); schreibezahlen(3, 6); schreibezahlen(3, 9); } gewonnen = 1; } if (gewonnen == 1) { gewonnenn(1); } if ((a!='1') && (b!='2') && (c!='3') && (d!='4') && (e!='5') && (f!='6') && (g!='7') && (h!='8') && (i!='9')) { untentschieden(); } } int kontrollea(int abfrage=0) { int gewonnena; if (((a=='O') && (b=='O') && (c=='O')) || ((d=='O') && (e=='O') && (f=='O')) || ((g=='O') && (h=='O') && (i=='O')) || ((a=='O') && (e=='O') && (i=='O')) || ((g=='O') && (e=='O') && (c=='O')) || ((a=='O') && (d=='O') && (g=='O')) || ((b=='O') && (e=='O') && (h=='O')) || ((c=='O') && (f=='O') && (i=='O'))) { if ((a=='O') && (b=='O') && (c=='O')) { schreibezahlen(3, 1); schreibezahlen(3, 2); schreibezahlen(3, 3); Sleep(500); schreibezahlen(2,1); schreibezahlen(2,2); schreibezahlen(2,3); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 2); schreibezahlen(3, 3); Sleep(500); schreibezahlen(2,1); schreibezahlen(2,2); schreibezahlen(2,3); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 2); schreibezahlen(3, 3); } if ((d=='O') && (e=='O') && (f=='O')) { schreibezahlen(3, 4); schreibezahlen(3, 5); schreibezahlen(3, 6); Sleep(500); schreibezahlen(2, 4); schreibezahlen(2, 5); schreibezahlen(2, 6); Sleep(500); schreibezahlen(3, 4); schreibezahlen(3, 5); schreibezahlen(3, 6); Sleep(500); schreibezahlen(2, 4); schreibezahlen(2, 5); schreibezahlen(2, 6); Sleep(500); schreibezahlen(3, 4); schreibezahlen(3, 5); schreibezahlen(3, 6); } if ((g=='O') && (h=='O') && (i=='O')) { schreibezahlen(3, 7); schreibezahlen(3, 8); schreibezahlen(3, 9); Sleep(500); schreibezahlen(2, 7); schreibezahlen(2, 8); schreibezahlen(2, 9); Sleep(500); schreibezahlen(3, 7); schreibezahlen(3, 8); schreibezahlen(3, 9); Sleep(500); schreibezahlen(2, 7); schreibezahlen(2, 8); schreibezahlen(2, 9); Sleep(500); schreibezahlen(3, 7); schreibezahlen(3, 8); schreibezahlen(3, 9); } if ((a=='O') && (e=='O') && (i=='O')) { schreibezahlen(3, 1); schreibezahlen(3, 5); schreibezahlen(3, 9); Sleep(500); schreibezahlen(2,1); schreibezahlen(2,5); schreibezahlen(2,9); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 5); schreibezahlen(3, 9); Sleep(500); schreibezahlen(2,1); schreibezahlen(2,5); schreibezahlen(2,9); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 5); schreibezahlen(3, 9); } if ((g=='O') && (e=='O') && (c=='O')) { schreibezahlen(3, 7); schreibezahlen(3, 5); schreibezahlen(3, 3); Sleep(500); schreibezahlen(2,7); schreibezahlen(2,5); schreibezahlen(2,3); Sleep(500); schreibezahlen(3, 7); schreibezahlen(3, 5); schreibezahlen(3, 3); Sleep(500); schreibezahlen(2,7); schreibezahlen(2,5); schreibezahlen(2,3); Sleep(500); schreibezahlen(3, 7); schreibezahlen(3, 5); schreibezahlen(3, 3); } if ((a=='O') && (d=='O') && (g=='O')) { schreibezahlen(3, 1); schreibezahlen(3, 4); schreibezahlen(3, 7); Sleep(500); schreibezahlen(2,1); schreibezahlen(2,4); schreibezahlen(2,7); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 4); schreibezahlen(3, 7); Sleep(500); schreibezahlen(2,1); schreibezahlen(2,4); schreibezahlen(2,7); Sleep(500); schreibezahlen(3, 1); schreibezahlen(3, 4); schreibezahlen(3, 7); } if ((b=='O') && (e=='O') && (h=='O')) { schreibezahlen(3, 2); schreibezahlen(3, 5); schreibezahlen(3, 8); Sleep(500); schreibezahlen(2,2); schreibezahlen(2,5); schreibezahlen(2,8); Sleep(500); schreibezahlen(3, 2); schreibezahlen(3, 5); schreibezahlen(3, 8); Sleep(500); schreibezahlen(2,2); schreibezahlen(2,5); schreibezahlen(2,8); Sleep(500); schreibezahlen(3, 2); schreibezahlen(3, 5); schreibezahlen(3, 8); } if ((c=='O') && (f=='O') && (i=='O')) { schreibezahlen(3, 3); schreibezahlen(3, 6); schreibezahlen(3, 9); Sleep(500); schreibezahlen(2,3); schreibezahlen(2,6); schreibezahlen(2,9); Sleep(500); schreibezahlen(3, 3); schreibezahlen(3, 6); schreibezahlen(3, 9); Sleep(500); schreibezahlen(2,3); schreibezahlen(2,6); schreibezahlen(2,9); Sleep(500); schreibezahlen(3, 3); schreibezahlen(3, 6); schreibezahlen(3, 9); ; } gewonnena = 1; } if (gewonnena == 1) { if (abfrage == 1) { gewonnenn(2, 2); } gewonnenn(2); } if ((a!='1') && (b!='2') && (c!='3') && (d!='4') && (e!='5') && (f!='6') && (g!='7') && (h!='8') && (i!='9')) { untentschieden(); } } void zeichnespielfeld() { HANDLE hL = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hL,FOREGROUND_RED); Sleep(50); gotoxy(6, 3); cout << (char) ('A' + 114); gotoxy(9, 3); cout << (char) ('A' + 114);Sleep(30); gotoxy(6, 4); cout << (char) ('A' + 114);Sleep(30); gotoxy(9, 4); cout << (char) ('A' + 114);Sleep(30); gotoxy(6, 5); cout << (char) ('A' + 132);Sleep(30); gotoxy(9, 5); cout << (char) ('A' + 132);Sleep(30); gotoxy(3, 5); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); gotoxy(7, 5); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); gotoxy(10, 5); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); gotoxy(6, 6); cout << (char) ('A' + 114);Sleep(30); gotoxy(9, 6); cout << (char) ('A' + 114);Sleep(30); gotoxy(6, 7); cout << (char) ('A' + 132);Sleep(30); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 132);Sleep(30); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); gotoxy(3, 7); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); cout << (char) ('A' + 131);Sleep(30); gotoxy(6, 8); cout << (char) ('A' + 114);Sleep(30); gotoxy(9, 8); cout << (char) ('A' + 114);Sleep(30); gotoxy(6, 9); cout << (char) ('A' + 114);Sleep(30); gotoxy(9, 9); cout << (char) ('A' + 114);Sleep(30); cout << endl; SetConsoleTextAttribute(hL,FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN); } int computerzug() { gotoxy (1, 10); cout << " " << endl; cout << " " << endl; int ceingegeben; ceingegeben = 0; gotoxy (1, 10); cout << " " << endl; while (ceingegeben == 0) { gotoxy (1, 10); if (schwierigkeit == 1) { srand( time( 0 ) ); eingabe = rand() % 9 + 1; ceingegeben = 2; } if (schwierigkeit == 3) { if ((cerstesmal==0) && (5!='X')) { eingabe = 5; ceingegeben = 2; cerstesmal++; } if ((a!='O') && (a!='X') && (ceingegeben == 0)) { if ((b=='O') && (c=='O') && (ceingegeben == 0)) { eingabe = 1; ceingegeben = 2; } if ((e=='O') && (i=='O') && (ceingegeben == 0)) { eingabe = 1; ceingegeben = 2; } if ((d=='O') && (g=='O') && (ceingegeben == 0)) { eingabe = 1; ceingegeben = 2; } } if ((b!='O') && (b!='X') && (ceingegeben == 0)) { if ((a=='O') && (c=='O') && (ceingegeben == 0)) { eingabe = 2; ceingegeben = 2; } if ((e=='O') && (h=='O') && (ceingegeben == 0)) { eingabe = 2; ceingegeben = 2; } } if ((c!='O') && (c!='X') && (ceingegeben == 0)) { if ((a=='O') && (b=='O') && (ceingegeben == 0)) { eingabe = 3; ceingegeben = 2; } if ((f=='O') && (i=='O') && (ceingegeben == 0)) { eingabe = 3; ceingegeben = 2; } if ((e=='O') && (g=='O')) { eingabe = 3; ceingegeben = 2; } } if ((d!='O') && (d!='X') && (ceingegeben == 0)) { if ((a=='O') && (g=='O') && (ceingegeben == 0)) { eingabe = 4; ceingegeben = 2; } if ((e=='O') && (f=='O') && (ceingegeben == 0)) { eingabe = 4; ceingegeben = 2; } } if ((e!='O') && (e!='X') && (ceingegeben == 0)) { if ((a=='O') && (i=='O') && (ceingegeben == 0)) { eingabe = 5; ceingegeben = 2; } if ((g=='O') && (c=='O') && (ceingegeben == 0)) { eingabe = 5; ceingegeben = 2; } if ((d=='O') && (h=='O') && (ceingegeben == 0)) { eingabe = 5; ceingegeben = 2; } } if ((f!='O') && (f!='X') && (ceingegeben == 0)) { if ((i=='O') && (c=='O') && (ceingegeben == 0)) { eingabe = 6; ceingegeben = 2; } if ((d=='O') && (e=='O') && (ceingegeben == 0)) { eingabe = 6; ceingegeben = 2; } } if ((g!='O') && (g!='X') && (ceingegeben == 0)) { if ((h=='O') && (i=='O') && (ceingegeben == 0)) { eingabe = 7; ceingegeben = 2; } if ((e=='O') && (c=='O') && (ceingegeben == 0)) { eingabe = 7; ceingegeben = 2; } if ((d=='O') && (a=='O') && (ceingegeben == 0)) { eingabe = 7; ceingegeben = 2; } } if ((h!='O') && (h!='X') && (ceingegeben == 0)) { if ((g=='O') && (i=='O') && (ceingegeben == 0)) { eingabe = 8; ceingegeben = 2; } if ((b=='O') && (e=='O') && (ceingegeben == 0)) { eingabe = 8; ceingegeben = 2; } } if ((i!='O') && (i!='X') && (ceingegeben == 0)) { if ((g=='O') && (h=='O') && (ceingegeben == 0)) { eingabe = 9; ceingegeben = 2; } if ((a=='O') && (e=='O') && (ceingegeben == 0)) { eingabe= 9; ceingegeben = 2; } if ((c=='O') && (f=='O') && (ceingegeben == 0)) { eingabe = 9; ceingegeben = 2; } } } ////////////////////// if (schwierigkeit > 1) { if (a!='O') { if ((b=='X') && (c=='X') && (ceingegeben == 0)) { eingabe = 1; ceingegeben = 2; } if ((e=='X') && (i=='X') && (ceingegeben == 0)) { eingabe = 1; ceingegeben = 2; } if ((d=='X') && (g=='X') && (ceingegeben == 0)) { eingabe = 1; ceingegeben = 2; } } if (b!='O') { if ((a=='X') && (c=='X') && (ceingegeben == 0)) { eingabe = 2; ceingegeben = 2; } if ((e=='X') && (h=='X') && (ceingegeben == 0)) { eingabe = 2; ceingegeben = 2; } } if (c!='O') { if ((a=='X') && (b=='X') && (ceingegeben == 0)) { eingabe = 3; ceingegeben = 2; } if ((f=='X') && (i=='X') && (ceingegeben == 0)) { eingabe = 3; ceingegeben = 2; } if ((e=='X') && (g=='X') && (ceingegeben == 0)) { eingabe = 3; ceingegeben = 2; } } if (d!='O') { if ((a=='X') && (g=='X') && (ceingegeben == 0)) { eingabe = 4; ceingegeben = 2; } if ((e=='X') && (f=='X') && (ceingegeben == 0)) { eingabe = 4; ceingegeben = 2; } } if (e!='O') { if ((a=='X') && (i=='X') && (ceingegeben == 0)) { eingabe = 5; ceingegeben = 2; } if ((g=='X') && (c=='X') && (ceingegeben == 0)) { eingabe = 5; ceingegeben = 2; } if ((d=='X') && (f=='X') && (ceingegeben == 0)) { eingabe = 5; ceingegeben = 2; } if ((b=='X') && (h=='X') && (ceingegeben == 0)) { eingabe = 5; ceingegeben = 2; } } if (f!='O') { if ((i=='X') && (c=='X') && (ceingegeben == 0)) { eingabe = 6; ceingegeben = 2; } if ((d=='X') && (e=='X') && (ceingegeben == 0)) { eingabe = 6; ceingegeben = 2; } } if (g!='O') { if ((h=='X') && (i=='X') && (ceingegeben == 0)) { eingabe = 7; ceingegeben = 2; } if ((e=='X') && (c=='X') && (ceingegeben == 0)) { eingabe = 7; ceingegeben = 2; } if ((d=='X') && (a=='X') && (ceingegeben == 0)) { eingabe = 7; ceingegeben = 2; } } if (h!='O') { if ((g=='X') && (i=='X') && (ceingegeben == 0)) { eingabe = 8; ceingegeben = 2; } if ((b=='X') && (e=='X') && (ceingegeben == 0)) { eingabe = 8; ceingegeben = 2; } } if (i!='O') { if ((g=='X') && (h=='X') && (ceingegeben == 0)) { eingabe = 9; ceingegeben = 2; } if ((a=='X') && (e=='X') && (ceingegeben == 0)) { eingabe = 9; ceingegeben = 2; } if ((c=='X') && (f=='X') && (ceingegeben == 0)) { eingabe = 9; ceingegeben = 2; } } } if (ceingegeben == 0) { srand( time( 0 ) ); eingabe = rand() % 9 + 1; ceingegeben = 2; } } if (eingabe == 1) { if (a == '1') { a = 'O'; ceingegeben = 1; schreibezahlen(2, 1); kontrollea(1); } else { cout << "Denke nach..."; computerzug(); } } if (eingabe == 2) { if (b == '2') { b = 'O'; ceingegeben= 1; schreibezahlen(2, 2); kontrollea(1); } else { cout << "Denke nach..."; computerzug(); } } if (eingabe == 3) { if (c == '3') { c = 'O'; ceingegeben= 1; schreibezahlen(2, 3); kontrollea(1); } else { cout << "Denke nach..."; computerzug(); } } if (eingabe == 4) { if (d == '4') { d = 'O'; ceingegeben= 1; schreibezahlen(2, 4); kontrollea(1); } else { cout << "Denke nach..."; computerzug(); } } if (eingabe == 5) { if (e == '5') { e = 'O'; ceingegeben= 1; schreibezahlen(2, 5); kontrollea(1); } else { cout << "Denke nach..."; computerzug(); } } if (eingabe == 6) { if (f == '6') { f = 'O'; ceingegeben= 1; schreibezahlen(2, 6); kontrollea(1); ceingegeben= 1; } else { cout << "Denke nach..."; computerzug(); } } if (eingabe == 7) { if (g == '7') { g = 'O'; ceingegeben= 1; schreibezahlen(2, 7); kontrollea(1); ceingegeben= 1; } else { cout << "Denke nach..."; computerzug(); } } if (eingabe == 8) { if (h == '8') { h = 'O'; ceingegeben= 1; schreibezahlen(2, 8); kontrollea(1); ceingegeben= 1; } else { cout << "Denke nach..."; computerzug(); } } if (eingabe == 9) { if (i == '9') { i = 'O'; ceingegeben= 1; schreibezahlen(2, 9); kontrollea(1); } else { cout << "Denke nach..."; computerzug(); } } spielerzug(); } int spielerzug() { int seingegeben; seingegeben = 0; while (seingegeben == 0) { gotoxy (1, 10); cout << " " << endl; cout << " " << endl; gotoxy (1, 10); cout << name << ", gib eine Zahl ein" << endl; cin >> eingabe; if (eingabe == 1) { if (a == '1') { a = 'X'; schreibezahlen(1, 1); kontrolle(); seingegeben = 1; } else { cout << "Feld ist besetzt!" << endl; Sleep(1000); gotoxy(1, 12); cout << " " << endl; } } if (eingabe == 2) { if (b == '2') { b = 'X'; schreibezahlen(1, 2); kontrolle(); seingegeben = 1; } else { cout << "Feld ist besetzt!" << endl; Sleep(1000); gotoxy(1, 12); cout << " " << endl; } } if (eingabe == 3) { if (c == '3') { c = 'X'; schreibezahlen(1, 3); kontrolle(); seingegeben = 1; } else { cout << "Feld ist besetzt!" << endl; Sleep(1000); gotoxy(1, 12); cout << " " << endl; } } if (eingabe == 4) { if (d == '4') { d = 'X'; schreibezahlen(1, 4); kontrolle(); seingegeben = 1; } else { cout << "Feld ist besetzt!" << endl; Sleep(1000); gotoxy(1, 12); cout << " " << endl; } } if (eingabe == 5) { if (e == '5') { e = 'X'; schreibezahlen(1, 5); kontrolle(); seingegeben = 1; } else { cout << "Feld ist besetzt!" << endl; Sleep(1000); gotoxy(1, 12); cout << " " << endl; } } if (eingabe == 6) { if (f == '6') { f = 'X'; schreibezahlen(1, 6); kontrolle(); seingegeben = 1; } else { cout << "Feld ist besetzt!" << endl; Sleep(1000); gotoxy(1, 12); cout << " " << endl; } } if (eingabe == 7) { if (g == '7') { g = 'X'; schreibezahlen(1, 7); kontrolle(); seingegeben = 1; } else { cout << "Feld ist besetzt!" << endl; Sleep(1000); gotoxy(1, 12); cout << " " << endl; } } if (eingabe == 8) { if (h == '8') { h = 'X'; schreibezahlen(1, 8); kontrolle(); seingegeben = 1; } else { cout << "Feld ist besetzt!" << endl; Sleep(1000); gotoxy(1, 12); cout << " " << endl; } } if (eingabe == 9) { if (i == '9') { i = 'X'; schreibezahlen(1, 9); kontrolle(); seingegeben = 1; } else { cout << "Feld ist besetzt!" << endl; Sleep(1000); gotoxy(1, 12); cout << " " << endl; } } if (eingabe > 9 || eingabe < 1) { cout << "Eingabe ungueltig! Waehle neues Feld" << endl; Sleep(1000); gotoxy(1, 12); cout << " "; } } computerzug(); } int namenseingabe() { cout << "Name: "; cin.get(name, 20); } void schwierigkeitsfrage() { int frageschwierigkeit=0; while(frageschwierigkeit == 0) { gotoxy(1,2); cout << "Waehlen Sie die Schwierigkeit" << endl << " 1 = Leicht 2 = Mittel 3 = Schwer" << endl; cin >> schwierigkeit; gotoxy(1, 2); cout << " " << endl; cout << " " << endl << " "; if (schwierigkeit>0 && schwierigkeit < 4) { frageschwierigkeit = 1; } } } int main() { cerstesmal=0; int anfang; if (z == 0) { namenseingabe(); z++; } system("cls"); cout << " !-TIC TAC TOE-!" << endl; schwierigkeitsfrage(); statistik(); copyright(); zeichnespielfeld(); schreibezahlen(0, 0); srand( time( 0 ) ); anfang = rand() % 2 + 1; if (anfang == 2) { gotoxy (1, 10); cout << "Computer faengt an!" << endl; Sleep(1000); gotoxy (1, 10); cout << " "; computerzug(); } if (anfang == 1) { gotoxy (1, 10); cout << name << " faengt an!" << endl; Sleep(1000); gotoxy (1, 10); cout << " "; spielerzug(); } }
[/hide]
achja noch ne Frage: ich hab das so gemacht, dass wenn ein Spiel zu ende ist die main aufgerufen wird, ich weiß dass das nicht gut ist, mir ist aber nichts besseres eingefallen.
Falls jemand ne Idee hat bitte posten.
goto wollte ich auch net benutzen.
Bitte um Feedback.
edit: sry für den langen code, aber gibt es hier keine hide funktion?
mfg
-
Hallo
Warum benutzt du nicht std::string?
chrische
-
Warum benutzt du nicht switch-case?
Warum benutzt du nicht eine do-while Schleife?Gruß Tobi.
-
Jetzt hört mal auf mit diesen dummen und arroganten Fragen. Viel besser ist es doch, einen Anfänger (höflich) darauf hinzuweisen, was er besser machen könnte, und ihn nicht so hinterhältig fragen, warum er etwas nicht benutzt...
@Gnomecoder: std::string erleichtert dir den Umgang mit Strings ungemein, guck dir mal dieses Tutorial dazu an:
std::string
Switch-Konstrukte
Do SchleifeHoffe, es hilft dir etwas weiter. Du musst deinen Code viel kompakter schreiben. Denk dir aber nichts, ist häufig so bei Anfängern. :xmas1:
-
danke danke, do schleife und case kenne ich natürlich
aber hab das projekt ganz klein angefangen, und dann immer nen bisschen mehr dazu...
hab den code schon hauptsächlich überarbeitet, hatte vorher fsat alles in der main und hab auch viel mit goto gearbeitet, die hab ich alle beseitigt^^
naja, war eh nur nen langeweile projekt, lohnt sich net großararit dran weiter zu arbeiten, interessiert doch eh keinen^^
also danke fürs feedbackmfg
-
Hallo
Ich habe die Frage weder gestellt, weil ich unhöflich bin, noch weil ich dumm bin, sondern weil ich wissen wollte, warum er es ohne macht. Es soll da ja auch hardocre Programmierer geben. Da aber in der Signatur auch noch c++ steht, habe ich mich eben gewundert.
chrische
-
Wegen deinem Posting hätte ich nichtmal was gesagt, aber Tobi sein Kommentar hat dem dann noch die Krone aufgesetzt...
-
Hallo
mikey schrieb:
Wegen deinem Posting hätte ich nichtmal was gesagt...
Na da bin ich ja beruhigt.
chrische
-
in dem code da oben^^ wird std::string nicht viel helfen. besser ist's eher, irgendwelche dinge zu 'berechnen' und mit lookup-tables zu arbeiten etc. damit kann man diesen umständlichen code ganz schön zusammenstauchen.
-
so, das mit dem main hab ich dann mal anders geklärt.
achja wieso soll ich denn lieber case benutzen?
ist nicht so umständlich ja, aber könnt ich doch eh nur an paar stellen benutzen, und wenn ich eh schon auf if angewiesen bin, hab ichs halt ganz mit if gemacht.
Und zu do schleifen: wo genau sollte ich die verwenden, und warum sind sie besser als while schleifen?
std::string kenn ich ehrlich gesagt nicht wirklich, hab kurz in den link reingeschaut, werds mir moin nochmal genauer ansehn.mfg
-
mikey schrieb:
Wegen deinem Posting hätte ich nichtmal was gesagt, aber Tobi sein Kommentar hat dem dann noch die Krone aufgesetzt...
Jetzt bin ich hier der Buhmann
jaja... ich wiess wie des ist ich wurde so auch auf meine Fehler aufmerksam gemacht und habs ewig net begriffen. schau dir ruhig meine ersten Posts hier an xD
Es war sicher nicht böse gemeint.
Gruß Tobi.
-
T0bi schrieb:
Jetzt bin ich hier der Buhmann
Aber nur einbisschen.
T0bi schrieb:
jaja... ich wiess wie des ist ich wurde so auch auf meine Fehler aufmerksam gemacht und habs ewig net begriffen. schau dir ruhig meine ersten Posts hier an xD
Selbsterkenntnis führt ja bekanntlicherweise zur Besserung.
-
:p na und wenn schon ^^
-
Was mir grad so einfällt... Du könntest deinen Code um einiges kürzen, wenn du (mal abgesehen von den grundlegendsten Dingen) mit einem std::valarray und der std::gslice Klasse arbeitest. So kannst du Teilvektoren senkrecht, waagrecht und diagonal aus der Matrix (also dem Spielfeld) extrahieren, und ermitteln, ob die Teilmatrix (stellt einen Ausschnitt des Spielfeldes dar) aus z.B. '0' (steht für einen Kreis) oder '1' (steht für Kreuz) besteht. Wenn ja, dann hat natürlich der entsprechende Spieler gewonnen. Zumindest mal soviel zum Thema Gewinnerermittlung.
Beim Setzen eines neuen Kreises/Kreuzes füllst du das (zweidimensionale, x und y Achse) valarray dann eben mit Einsen und Nullen, um später den Gewinner ermitteln zu können.
-
müsste man dann nicht immer das ganze Spielfeld neu ausgeben?
naja eh egal ich hab eh keine Lust mehr daran weiter zu machen.
aber danke für die antworten.
-
Gnomecoder schrieb:
müsste man dann nicht immer das ganze Spielfeld neu ausgeben?
Wäre das schlimm (für dich)?
-
Ich würde gerne wissen wi man das so hinbekommt das das spielfeld da so Rot ist?
hab das nem nirgends gefunden^^
-
Creazy231 schrieb:
Ich würde gerne wissen wi man das so hinbekommt das das spielfeld da so Rot ist?
hab das nem nirgends gefunden^^Sieh dir die Funktion ab Zeile 715 an. Dort findest du z.B.:
HANDLE hL = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hL,FOREGROUND_RED); // [...] SetConsoleTextAttribute(hL,FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN);