Tic Tace Toe Auswertung dynamisch gestalten

tklustig

Erfahrenes Mitglied
Hallo Leute, folgende Funktion soll eigentlich auswerten, ob beim Tic Tac Toe einer der beiden Spieler gewonnen hat. Ich bekomme jedoch die Exception:
Code:
conflicting type for 'player_win'
Was mache ich falsch?
C++:
#include <stdio.h>
#include <stdbool.h>>
#include <stdlib.h>
#ifdef __unix__
    #define clrscr() printf("\x1B[2J")
#elif __BORLANDC__ && __MSDOS__
    #include <conio.h>
#elif __WIN32__ || _MSC_VER
    #define clrscr() system("cls")
#else
    #define clrscr() printf("clrscr() - Fehler!!\n")
#endif

#define X 'X'
#define O 'O'
#define LEER ' '
#define GAME_OVER 0
#define A_WINNER 1
#define CONTINUE 2

/* Inhalt des 3 x 3 großen Felds */
char TicTacToe[3][3] = { {' ',' ',' '},
                         {' ',' ',' '},
                         {' ',' ',' '} };
/* Spieler1 hat das Zeichen 'X'. */
char Spieler1 = X;
.
.
.
int auswertung(void) {
    if(player_win(Spieler1)){
        printf("Spieler1 hat gewonnen\n");
        return A_WINNER;
    }else if(player_win(Spieler2)){
        printf("Spieler1 hat gewonnen\n");
        return CONTINUE;
    }
}

bool check_line(char player,int xstart,int ystart,int xadd,int yadd)
{
   unsigned counter=0;
   const int fieldsize=3;
   while(xstart<fieldsize && ystart<fieldsize)
   {
      if(TicTacToe[xstart][ystart]==player) counter++;
      xstart+=xadd;
      ystart+=yadd;
   }
   return counter==fieldsize;
}

bool player_win(char player)
{
   const int fieldsize=3;
   for(int i=0;i<fieldsize;i++)
   {
      if(check_line(player,i,0,0,1)||check_line(player,0,i,1,0)||check_line(player,0,0,1,1)||check_line(player,fieldsize-1,0,-1,1))
      {
         return true;
      }
   }
   return false;
}

Kennt vielleicht jemand einen geeigneteren Algorithums, den ich verwenden könnte?
 
Zuletzt bearbeitet:

tklustig

Erfahrenes Mitglied
Uuups. ich hatte vergessen, einen Prototypen zu initialiseren. Mit dem Prototypen funktioniert der Code, auch für ein dynamisch generiertes Spielfeld. Dazu muss ich halt die Schleifen ebenfalls dynamisch initialisieren. So long...