CodeCrafterCpp
Erfahrenes Mitglied
Hallo,
Ich hab mal wieder ein Problem und nach knapp 1 Stunde habe ich mich entschlossen euch zu fragen. Mein Problem liegt bei der Funktion gewinnPruf und der Rückgabe von gewinn.
Ich höffe der Fehler ist nicht ganz zu doof
mfG
Ich hab mal wieder ein Problem und nach knapp 1 Stunde habe ich mich entschlossen euch zu fragen. Mein Problem liegt bei der Funktion gewinnPruf und der Rückgabe von gewinn.
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);
int gewinnPruf(char *f, int gewinn, bool player_turn);
void neuesSpiel(int gewinn, char eingabe);
int main()
{
//********************************************//
//Variablen
//********************************************//
bool player_turn = true;
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';
}
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();
//********************************************//
//Game_Loop
//********************************************//
if(ki == '0')
{
while(!exit)
{
system("cls");
Render(f);
Setzen(eingabe, f, player_turn, zeichen);
gewinnPruf(f, gewinn, player_turn);
neuesSpiel(gewinn, eingabe);
cout << gewinn;
getch();
player_turn = !player_turn;
}
}
else if(ki == '1')
{
while(!exit)
{
}
}
else if(ki == '2')
{
while(!exit)
{
}
}
else if(ki == '3')
{
while(!exit)
{
}
}
else if(ki == '4')
{
while(!exit)
{
}
}
else if(ki == '5')
{
while(!exit)
{
}
}
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;
}
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;
}
void neuesSpiel(int gewinn,char eingabe)
{
if(gewinn == 1 || gewinn == 2)
{
system("cls");
cout << "Spieler "<< gewinn << " hat gewonnen!" << endl << "Neues Spiel?(Y für Ja und N für Nein)";
getch();
}
}
Ich höffe der Fehler ist nicht ganz zu doof

mfG