CodeCrafterCpp
Erfahrenes Mitglied
Also für mich hört sich das mit den Thread auch besser an weil das übersichtlicher ist.
PS: Was ist hier schon wieder für ein Fehler?
Code:
#include <iostream>
#include <conio.h>
#include <Windows.h>
using namespace std;
void Render(char *f);
char Setzen(char eingabe, char *f, bool player_turn, char zeichen);
char kiSetzen(char eingabe, char *f, bool player_turn, char zeichen, int kiEingabe, int ki);
int gewinnPruf(char *f, int gewinn, bool player_turn);
int neuesSpiel(int gewinn, char eingabe, char *f);
char meneu(char ki);
void gameloop(bool player_turn, int gewinn, char ki, char zeichen, char eingabe, bool exit, char *f);
int kiEingabe(char *f, int ki, char eingabe);
int main()
{
//********************************************//
//Variablen
//********************************************//
bool player_turn = 0;
int gewinn = 0;
char ki = ' ';
char zeichen = ' ';
char eingabe = ' ';
bool exit = false;
char f[9];
for(int i = 0; i < 9; i++)
{
f[i] = i+'1';
}
ki = meneu(ki);
gameloop(player_turn, gewinn, ki, zeichen, eingabe, exit, f);
return 0;
}
void Render(char *f)
{
for(int i = 1; i <=9; i++)
{
cout << f[i - 1];
if(!(i % 3)) cout << endl << "-+-+-" << endl;
else cout << "|";
}
}
char Setzen(char eingabe, char *f, bool player_turn, char zeichen)
{
if(player_turn)
{
cout << "Spieler 1 ist dran. Bitte waehle ein Feld: ";
zeichen = 'x';
}
if(!player_turn)
{
cout << "Spieler 2 ist dran. Bitte waehle ein Feld: ";
zeichen = 'o';
}
eingabe = getch();
while(true)
{
int zahl = eingabe - 49;
if(eingabe >= 49 && eingabe <= 57)
{
if(f[zahl] == eingabe)
{
f[zahl] = zeichen;
system("cls");
Render(f);
break;
}
else
{
system("cls");
Render(f);
cout << "Dieses Feld ist besetzt. Waehle ein neues: ";
eingabe = getch();
}
}
else
{
system("cls");
Render(f);
cout << "Flasche Eingabe" << endl
<< "Waehle ein neues Feld: ";
eingabe = getch();
}
}
return eingabe, *f, zeichen;
}
char kiSetzen(char eingabe, char *f, bool player_turn, char zeichen, int kiEingabe, int ki)
{
if(player_turn)
{
zeichen = 'x';
cout << "Spieler 1 ist dran. Bitte waehle ein Feld: ";
eingabe = getch();
}
while(true)
{
int zahl = eingabe - 49;
if(eingabe >= 49 && eingabe <= 57)
{
if(f[zahl] == eingabe)
{
f[zahl] = zeichen;
system("cls");
Render(f);
break;
}
else
{
system("cls");
Render(f);
cout << "Dieses Feld ist besetzt. Waehle ein neues: ";
eingabe = getch();
}
}
else
{
system("cls");
Render(f);
cout << "Flasche Eingabe" << endl
<< "Waehle ein neues Feld: ";
eingabe = getch();
}
}
if(!player_turn)
{
zeichen = 'o';
int zahl = kiEingabe(f, ki, eingabe);
f[zahl] = zeichen;
}
return *f;
}
int gewinnPruf(char *f, int gewinn, bool player_turn)
{
int c;
for(c = 0;c<=8;c++)
{
if(f[ c]==f[c+1]&&f[c+1]==f[c+2])
{
if( player_turn)gewinn=1;
if(!player_turn)gewinn=2;
}
else if(f[ c]==f[c+3]&&f[c+3]==f[c+6])
{
if( player_turn)gewinn=1;
if(!player_turn)gewinn=2;
}
else if(f[0]==f[4]&&f[4]==f[8])
{
if( player_turn)gewinn=1;
if(!player_turn)gewinn=2;
}
else if(f[2]==f[4]&&f[4]==f[6])
{
if( player_turn)gewinn=1;
if(!player_turn)gewinn=2;
}
else if( f[0] != '1' && f[1] != '2' && f[2] != '3' &&
f[3] != '4' && f[4] != '5' && f[5] != '6' &&
f[6] != '7' && f[7] != '8' && f[8] != '9' )
{
gewinn = 3;
}
}
return gewinn;
}
int neuesSpiel(int gewinn,char eingabe, char *f)
{
while(true)
{
if(gewinn == 1 || gewinn == 2)
{
system("cls");
cout << "Spieler "<< gewinn << " hat gewonnen!" << endl << "Neues Spiel?(Y fuer Ja und N fuer Nein)";
eingabe = getch();
if(eingabe == 'Y'|| eingabe == 'y')
{
gewinn = 0;
for(int i = 0; i < 9; i++)
{
f[i] = i+'1';
}
break;
}
else if( eingabe == 'N' || eingabe == 'n')
{
exit(0);
}
}
else if(gewinn == 3)
{
}
else
{
break;
}
}
return gewinn;
}
char meneu(char ki)
{
cout << "TicTacToe" << endl;
cout << "Waehle eine Spiel Modus aus:" << endl
<< "0: mehr Spieler Modus" << endl
<< "1: gegen Computer einfach" << endl
<< "2: gegen Computer schwerer als einfach" << endl
<< "3: gegen Computer mittel" << endl
<< "4: gegen Computer leichter als schwer" << endl
<< "5: gegen Computer schwer" << endl;
ki = getch();
return ki;
}
void gameloop(bool player_turn, int gewinn, char ki, char zeichen, char eingabe, bool exit, char *f)
{
if(ki == '0')
{
while(!exit)
{
system("cls");
Render(f);
Setzen(eingabe, f, player_turn, zeichen);
gewinn = gewinnPruf(f, gewinn, player_turn);
gewinn = neuesSpiel(gewinn, eingabe, f);
player_turn = !player_turn;
}
}
else if(ki == '1')
{
while(!exit)
{
system("cls");
Render(f);
}
}
else if(ki == '2')
{
while(!exit)
{
}
}
else if(ki == '3')
{
while(!exit)
{
}
}
else if(ki == '4')
{
while(!exit)
{
}
}
else if(ki == '5')
{
while(!exit)
{
}
}
}
int kiEingabe(char *f, int ki, char eingabe)
{
return eingabe;
}
PS: Was ist hier schon wieder für ein Fehler?
Code:
if(!player_turn)
{
zeichen = 'o';
int zahl = kiEingabe(f, ki, eingabe);
f[zahl] = zeichen;
}