Anuncios Google

Juego de tres en raya

Hola tengo que entregar el juego para este domingo y aun no sé porque me da error al devolver las estadísiticas de las partidas.

Seríais muy amables si me echarais una mano en el programa al menos para que devuelva los contadores de partida correctamente. Tienen que ser justamente esas funciones en el proyecto que he puesto,está en catalán pero supongo que no es problema.

El problema está a la hora de devolver las partidas ganadas y empatadas me devuelve siempre cero y antes me devolvía basura, no sé sacar el error y eso que he escrito yo el código.

Gracias por adelantado añado el código.

 

//Llibreries
 
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <windows.h>
 
//Defines per fer servir el tipus bool
 
#define bool int
#define true 1
#define false 2
 
 
 
//PROJECTE JOC TRES EN RATLLA.
/*
    1.Establir  variables per inici partida : startgame()
    2.Turn jugador 1 jugador1()
    3.Turn jugador 2 jugador2()
    4.Marcacasella marcacasella() comprova si es correcte la casella.
    5.Ganarempatarperdre comprobar()
    6.Tornar a jugar tornarjugar().
    7.Tornar les estadístiques del joc estadistiques()
*/
 
void startgame(char caselles[9],bool *jugador,int *error,int *empat,int *guanyar,char *c1,char *c2,
               char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
               char *c9,char *tirada,char *marca,char *resposta;);
 
 
void jugador1(char *marca,bool *jugador,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9);
 
void jugador2(char *marca,bool *jugador,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9);
 
void marcacasella(char *marca,char *tirada,int *error,char *c1,char *c2,
                  char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
                  char *c9);
 
 
void guanyarempatarperdre(char *marca,bool *jugador,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9,int *guanyar,int *empat);
 
 
 
void tornarjugar(bool *jugador,int *error,int *empat,int *guanyar,char *c1,char *c2,
               char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
               char *c9,char *tirada,char *marca,char *resposta);
 
 
void estadistiques(int *jug1,int *jug2,int *empatades);
 
 
 
//Declaracio variables main
 
 
int main (void){
 
 
        bool jugador;
        int error=0,empat=0,guanyar=0;
        char c1,c2,c3,c4,c5,c6,c7,c8,c9,tirada,marca,resposta,caselles[9];
        int jug1=0,jug2=0,empatades=0;
 
 
startgame(caselles,&jugador,&error,&empat,&guanyar,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&tirada,&marca,&resposta);
 
 
    do{
 
 
 
 
 
 
                  error=1;
 
                  system("cls");
 
 
        printf("\n \n \n");
 
        printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
        printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",c1,c2,c3);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",c4,c5,c6);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",c7,c8,c9);
 
 
        if(guanyar==0 && empat==0)
 
        {
 
            jugador=true;
            jugador1(&marca,&jugador,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9);
 
 
        }
 
        system("cls");
 
        guanyarempatarperdre(&marca,&jugador,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&empat,&guanyar);
 
 
        printf("\n \n \n");
 
        printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
 
        printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",c1,c2,c3);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",c4,c5,c6);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",c7,c8,c9);
 
 
        if(guanyar==0 && empat==0 )
 
        {
 
            jugador=false;
            jugador2(&marca,&jugador,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9);
 
        }
 
        guanyarempatarperdre(&marca,&jugador,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&empat,&guanyar);
 
 
        system("cls");
 
 
        printf("\n \n \n");
 
        printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
        printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",c1,c2,c3);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",c4,c5,c6);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",c7,c8,c9);
 
       // guanyarempatarperdre(&marca,&jugador,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&empat,&guanyar);
 
 
 
 
 
 
        if(guanyar==1 || empat==1){
 
            if(jugador==true && guanyar>0 && empat<=0) jug1++;
            if(jugador==false && guanyar>0 && empat<=0) jug2++;
            if(empat>0) empatades++;
 
            estadistiques(&jug1,&jug2,&empatades);
 
            tornarjugar(&jugador,&error,&empat,&guanyar,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&tirada,&marca,&resposta);
 
 
        }
 
 
 
 
 
    }while(resposta=='S'|| resposta=='s');
 
system("cls");
 
//gotoxy(20,20);
printf("\n\n\n\n\t\t\tJoc finalitzat\n");
system("pause");
 
return 0;
 
 
 
}
 
 
 
 
void startgame(char caselles[9],bool *jugador,int *error,int *empat,int *guanyar,char *c1,char *c2,
               char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
               char *c9,char *tirada,char *marca,char *resposta)
 
{
 
 
 
        *c1='1';
        *c2='2';
        *c3='3';
        *c4='4';
        *c5='5';
        *c6='6';
        *c7='7';
        *c8='8';
        *c9='9';
        *resposta='S';
        *jugador=true;
        *empat=0;
        *guanyar=0;
        *error=0;
 
 
 
       //caselles[9]={'0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9'};
 
 
 
 
 
};
 
 
 
void jugador1(char *marca,bool *jugador,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9)
 
{
 
    *marca='X';
    printf("Torn del jugador 1\n ");
    printf("\nEscriu la possicio on vols la marca: ");
 
    fflush(stdin);
 
    scanf("%c",&*tirada);
 
 
    marcacasella(&*marca,&*tirada,&*error,&*c1,&*c2,&*c3,&*c4,&*c5,&*c6,&*c7,&*c8,&*c9);
 
while(*error==2){
    system("cls");
        printf("\n \n \n");
 
        printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
        printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",*c1,*c2,*c3);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",*c4,*c5,*c6);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",*c7,*c8,*c9);
    *marca='X';
    printf("Torn del jugador 1\n ");
    printf("\nEscriu la possició on vols la marca: ");
    //while(error>)
    fflush(stdin);
 
    scanf("%c",&*tirada);
 
 
    marcacasella(&*marca,&*tirada,&*error,&*c1,&*c2,&*c3,&*c4,&*c5,&*c6,&*c7,&*c8,&*c9);
}
 
};
 
 
void jugador2(char *marca,bool *jugador,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9)
 
{
    *marca='O';
    printf("Turno del Jugador 2\n");
    printf("\nEscriu la possicio on vols la marca: ");
 
    fflush(stdin);
 
    scanf("%c",&*tirada);
 
    marcacasella(&*marca,&*tirada,&*error,&*c1,&*c2,&*c3,&*c4,&*c5,&*c6,&*c7,&*c8,&*c9);
 
    while(*error==2){
        system("cls");
        printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
        printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",*c1,*c2,*c3);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",*c4,*c5,*c6);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",*c7,*c8,*c9);
        *marca='O';
        printf("Turno del Jugador 2\n");
        printf("\nEscriu la possició on vols la marca: ");
 
        fflush(stdin);
 
        scanf("%c",&*tirada);
 
        marcacasella(&*marca,&*tirada,&*error,&*c1,&*c2,&*c3,&*c4,&*c5,&*c6,&*c7,&*c8,&*c9);
 
    }
 
}
 
void marcacasella(char *marca,char *tirada,int *error,char *c1,char *c2,
                  char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
                  char *c9)
{
 
 
 
 
              if (*tirada=='1' && *c1=='1') {*c1=*marca;}
              else if (*tirada=='2' && *c2=='2') {*c2=*marca; *error=0;}
              else if (*tirada=='3' && *c3=='3') {*c3=*marca; *error=0;}
              else if (*tirada=='4' && *c4=='4') {*c4=*marca; *error=0;}
              else if (*tirada=='5' && *c5=='5') {*c5=*marca; *error=0;}
              else if (*tirada=='6' && *c6=='6') {*c6=*marca; *error=0;}
              else if (*tirada=='7' && *c7=='7') {*c7=*marca; *error=0;}
              else if (*tirada=='8' && *c8=='8') {*c8=*marca; *error=0;}
              else if (*tirada=='9' && *c9=='9') {*c9=*marca; *error=0;}
              else {
 
                    printf("Error! Moviment invalid, marca una altre casella\n");
                    *error=2;
                    system("pause");
              }
 
 
 
}
 
 
void guanyarempatarperdre(char *marca,bool *jugador,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9,int *guanyar,int *empat)
{
 
          if(*c1=='X'||*c1=='O')
 
          {
 
            if(*c2==*c1&&*c3==*c1)
             {
              *guanyar=1;
             }
 
            if(c4==c1&&c7==c1)
             {
              *guanyar=1;
             }
          }
 
          if(*c5=='X'||*c5=='O')
          {
                   if (*c1 == *c5 && *c9 == *c5)
                           {*guanyar=1;}
                   if (*c2 == *c5 && *c8 == *c5)
                           {*guanyar=1;}
                   if (*c4 == *c5 && *c6 == *c5)
                           {*guanyar=1;}
                   if (*c3 == *c5 && *c7 == *c5)
                           {*guanyar=1;}
          }
 
          if(*c9=='X'||*c9=='O')
          {
                     if (*c6 == *c9 && *c3 == *c9)
                             {*guanyar=1;}
                     if (*c7 == *c9 && *c8 == *c9)
                            {*guanyar=1;}
          }
 
          if ((*c1!= '1' && *c2 != '2' && *c3 != '3' &&
              *c4 != '4' && *c5 != '5' && *c6 != '6' &&
              *c7 != '7' && *c8 != '8' && *c9 != '9') &&
              *guanyar == 0)
          {
              *empat=1;
          }
 
          if (*guanyar==1||*empat==1)
          {
              system("cls");
              if (*guanyar==1)
              {
 
                  printf("\n \n \n");
 
                  printf("\n\n\t\t\t");printf("JUGADOR: %d GUANYA!\n\n",*jugador);
                  printf("\t\t\t\t");   printf("\n \t\t\t\t %c | %c | %c\n",*c1,*c2,*c3);
                  printf("\t\t\t\t");   printf("---+---+---\n");
                  printf("\t\t\t\t");   printf("\n \t\t\t\t %c | %c | %c\n",*c4,*c5,*c6);
                  printf("\t\t\t\t");   printf("---+---+---\n");
                  printf("\t\t\t\t");   printf("\n \t\t\t\t %c | %c | %c\n\n",*c7,*c8,*c9);
                  system("pause");
                  system("cls");
              }
 
              if (*empat==1)
              {
                  printf("\n \n \n");
 
                  printf("\n\n\t\t\t");
                  printf("EMPAT!\n",*jugador);
                  printf("\t\t\t\t");printf(" %c | %c | %c\n",*c1,*c2,*c3);
                  printf("\t\t\t\t");printf("---+---+---\n");
                  printf("\t\t\t\t");printf(" %c | %c | %c\n",*c4,*c5,*c6);
                  printf("\t\t\t\t");printf("---+---+---\n");
                  printf("\t\t\t\t");printf(" %c | %c | %c\n",*c7,*c8,*c9);
                  system("pause");
                  system("cls");
              }
 
 
 
 
          }
 
}
 
void tornarjugar(bool *jugador,int *error,int *empat,int *guanyar,char *c1,char *c2,
               char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
               char *c9,char *tirada,char *marca,char *resposta){
 
   printf("Vol tornar a jugar?: SI/NO \n");
 
              fflush(stdin);
 
              scanf("%c",*&resposta);
 
              if (*resposta=='S'||*resposta=='s')
              {
                      *empat=0;
                      if(*jugador==true)*jugador=false;
                      if(*jugador==false)*jugador=true;
                      if(*guanyar>0)*guanyar=0;
                      *c1='1';
                      *c2='2';
                      *c3='3';
                      *c4='4';
                      *c5='5';
                      *c6='6';
                      *c7='7';
                      *c8='8';
                      *c9='9';
              }
 
          if(*error==1)
          {
              if (*jugador==true)
              {
               *jugador=false;
              }
              else
              {
               *jugador=true;
              }
          }
 
 
 
}
 
 
void estadistiques(int *jug1,int *jug2,int *empatades){
 
 
printf("\t\t\tEstadistiques\n\n");
 
printf("\nEl jugador 1 porta guanyades %d partides \n ",*jug1);
 
printf("\nEl jugador 2 porta guanyades %d partides \n ",*jug2);
 
printf("\n S'han empatat %d partides\n",*empatades);
 
}


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de gdljjrod

Mmm

Edito: Hasta que compilas el programa te darás cuenta de varios warnings...bueno el problema es que en agunas funciones no colocas el orden correcto de sus argumentos....

Mira prueba este code..Claro que hay mucho más code redundante que podrías quitar y simplificar, por ejemplo para que hacer 2 funciones jugador1 y jugador2 si ambas funciones hacen lo mismo...para que mandas a imprimir 3 veces el tablero (iughhh!!)..En fin, revisa el code:

//Llibreries
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <conio.h>
#include <ctype.h>
//#include <windows.h>
 
//Defines per fer servir el tipus bool
#define bool int
#define true 1
#define false 2
 
//PROJECTE JOC TRES EN RATLLA.
/*
    1.Establir  variables per inici partida : startgame()
    2.Turn jugador 1 jugador1()
    3.Turn jugador 2 jugador2()
    4.Marcacasella marcacasella() comprova si es correcte la casella.
    5.Ganarempatarperdre comprobar()
    6.Tornar a jugar tornarjugar().
    7.Tornar les estadístiques del joc estadistiques()
*/
 
void startgame(bool *jugador,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9,char *resposta);
 
void jugador1(char *marca,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9);
 
void jugador2(char *marca,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9);
 
void marcacasella(char *marca,char *tirada,int *error,char *c1,char *c2,
                  char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
                  char *c9);
 
void guanyarempatarperdre(char *marca,bool *jugador,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9,int *guanyar,int *empat);
 
void tornarjugar(bool *jugador,int *error,int *empat,int *guanyar,char *c1,char *c2,
               char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
               char *c9,char *tirada,char *marca,char *resposta);
 
void estadistiques(int *jug1,int *jug2,int *empatades);
 
//Declaracio variables main
int main (void){
        bool jugador;
        int error=0,empat=0,guanyar=0;
        char c1,c2,c3,c4,c5,c6,c7,c8,c9,tirada,marca,resposta;
        int jug1=0,jug2=0,empatades=0;
 
        startgame(&jugador,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&resposta);//Ya inicializaste error,empat y guanyar
 
       do{ 
            error=1;
            system("cls");
            printf("\n \n \n");
            printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
            printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",c1,c2,c3);
            printf("\t\t\t\t");          printf("---+---+---\n");
            printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",c4,c5,c6);
            printf("\t\t\t\t");          printf("---+---+---\n");
            printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",c7,c8,c9);
 
            if(guanyar==0 && empat==0) {
                jugador=true;
                jugador1(&marca,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9);//aqui no ocupas jugador
            }
 
            system("cls");
            //guanyarempatarperdre(&marca,&jugador,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&empat,&guanyar);//ERROR orden en los argumentos
            guanyarempatarperdre(&marca,&jugador,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&guanyar,&empat);
 
            printf("\n \n \n");
            printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
            printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",c1,c2,c3);
            printf("\t\t\t\t");          printf("---+---+---\n");
            printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",c4,c5,c6);
            printf("\t\t\t\t");          printf("---+---+---\n");
            printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",c7,c8,c9);
 
            if(guanyar==0 && empat==0 ) { 
                jugador=false;
                jugador2(&marca,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9);//aqui no ocupas jugador
            }
            //guanyarempatarperdre(&marca,&jugador,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&empat,&guanyar);//ERROR orden en los argumentos
            guanyarempatarperdre(&marca,&jugador,&tirada,&error,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&guanyar,&empat);
 
            printf("\n \n \n");
            printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
            printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",c1,c2,c3);
            printf("\t\t\t\t");          printf("---+---+---\n");
            printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",c4,c5,c6);
            printf("\t\t\t\t");          printf("---+---+---\n");
            printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",c7,c8,c9);
 
            if(guanyar==1 || empat==1){
                if( guanyar>0 ){
                    if(jugador==true) jug1++;
                    else jug2++;
                }
                else if( empat>0 ) empatades++; 
 
                estadistiques(&jug1,&jug2,&empatades); 
                tornarjugar(&jugador,&error,&empat,&guanyar,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&tirada,&marca,&resposta);
            }
 
        }while(resposta=='S'|| resposta=='s');
 
    system("cls");
    //gotoxy(20,20);
    printf("\n\n\n\n\t\t\tJoc finalitzat\n");
    system("pause");
    return 0; 
}
 
void startgame(bool *jugador,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9,char *resposta)
{
        *c1='1';
        *c2='2';
        *c3='3';
        *c4='4';
        *c5='5';
        *c6='6';
        *c7='7';
        *c8='8';
        *c9='9';
        *resposta='S';
        *jugador=true;
}
 
void jugador1(char *marca,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9)
{
    *marca='X';
    printf("Torn del jugador 1\n ");
    printf("\nEscriu la possicio on vols la marca: ");
    fflush(stdin);
    scanf("%c",&*tirada);
 
    marcacasella(&*marca,&*tirada,&*error,&*c1,&*c2,&*c3,&*c4,&*c5,&*c6,&*c7,&*c8,&*c9);
 
    while(*error==2){
        system("cls");
        printf("\n \n \n");
 
        printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
        printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",*c1,*c2,*c3);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",*c4,*c5,*c6);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",*c7,*c8,*c9);
        *marca='X';
        printf("Torn del jugador 1\n ");
        printf("\nEscriu la possició on vols la marca: ");
        fflush(stdin);
        scanf("%c",&*tirada);
 
        marcacasella(&*marca,&*tirada,&*error,&*c1,&*c2,&*c3,&*c4,&*c5,&*c6,&*c7,&*c8,&*c9);
    } 
}
 
void jugador2(char *marca,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9)
{
    *marca='O';
    printf("Turno del Jugador 2\n");
    printf("\nEscriu la possicio on vols la marca: ");
    fflush(stdin);
    scanf("%c",&*tirada);
 
    marcacasella(&*marca,&*tirada,&*error,&*c1,&*c2,&*c3,&*c4,&*c5,&*c6,&*c7,&*c8,&*c9);
 
    while(*error==2){
        system("cls");
        printf("\n\n\t\t\t");        printf("JOC TRES EN RATLLA\n\n\n");
        printf("\t\t\t");            printf("\n \t\t\t\t %c | %c | %c\n",*c1,*c2,*c3);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n",*c4,*c5,*c6);
        printf("\t\t\t\t");          printf("---+---+---\n");
        printf("\t\t\t\t");          printf("\n \t\t\t\t %c | %c | %c\n\n",*c7,*c8,*c9);
        *marca='O';
        printf("Turno del Jugador 2\n");
        printf("\nEscriu la possició on vols la marca: ");
        fflush(stdin);
        scanf("%c",&*tirada);
 
        marcacasella(&*marca,&*tirada,&*error,&*c1,&*c2,&*c3,&*c4,&*c5,&*c6,&*c7,&*c8,&*c9);
 
    } 
}
 
void marcacasella(char *marca,char *tirada,int *error,char *c1,char *c2,
                  char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
                  char *c9)
{
    if (*tirada=='1' && *c1=='1') {*c1=*marca;}
    else if (*tirada=='2' && *c2=='2') {*c2=*marca; *error=0;}
    else if (*tirada=='3' && *c3=='3') {*c3=*marca; *error=0;}
    else if (*tirada=='4' && *c4=='4') {*c4=*marca; *error=0;}
    else if (*tirada=='5' && *c5=='5') {*c5=*marca; *error=0;}
    else if (*tirada=='6' && *c6=='6') {*c6=*marca; *error=0;}
    else if (*tirada=='7' && *c7=='7') {*c7=*marca; *error=0;}
    else if (*tirada=='8' && *c8=='8') {*c8=*marca; *error=0;}
    else if (*tirada=='9' && *c9=='9') {*c9=*marca; *error=0;}
    else {
            printf("Error! Moviment invalid, marca una altre casella\n");
            *error=2;
            system("pause");
        } 
}
 
void guanyarempatarperdre(char *marca,bool *jugador,char *tirada,int *error,char *c1,char *c2,char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,char *c9,int *guanyar,int *empat)
{
    if(*c1=='X'|| *c1=='O') {
            if( (*c2==*c1 && *c3==*c1) || (*c4==*c1 && *c7==*c1) )  *guanyar=1;
    }
    if(*c5=='X'||*c5=='O') {
            if ( (*c1 == *c5 && *c9 == *c5) ||
                (*c2 == *c5 && *c8 == *c5) ||
                (*c4 == *c5 && *c6 == *c5) ||
                (*c3 == *c5 && *c7 == *c5) ) *guanyar=1;
    }
    if(*c9=='X'||*c9=='O') {
            if ( (*c6 == *c9 && *c3 == *c9) || (*c7 == *c9 && *c8 == *c9) ) *guanyar=1;
    }
    if ((*c1!= '1' && *c2 != '2' && *c3 != '3' &&
        *c4 != '4' && *c5 != '5' && *c6 != '6' &&
        *c7 != '7' && *c8 != '8' && *c9 != '9') &&  *guanyar == 0)  *empat=1;
 
            system("cls");
            if (*guanyar==1) {
                printf("\n \n \n"); 
                printf("\n\n\t\t\t");printf("JUGADOR: %d GUANYA!\n\n",*jugador);
            }
            else if (*empat==1) {
                  printf("\n \n \n"); 
                  printf("\n\n\t\t\t");
                  printf("EMPAT!\n",*jugador);
            }
        printf("\t\t\t\t");   printf("\n \t\t\t\t %c | %c | %c\n",*c1,*c2,*c3);
        printf("\t\t\t\t");   printf("---+---+---\n");
        printf("\t\t\t\t");   printf("\n \t\t\t\t %c | %c | %c\n",*c4,*c5,*c6);
        printf("\t\t\t\t");   printf("---+---+---\n");
        printf("\t\t\t\t");   printf("\n \t\t\t\t %c | %c | %c\n\n",*c7,*c8,*c9);
        system("pause");
        system("cls");
}
 
void tornarjugar(bool *jugador,int *error,int *empat,int *guanyar,char *c1,char *c2,
               char *c3,char *c4,char *c5,char *c6,char *c7,char *c8,
               char *c9,char *tirada,char *marca,char *resposta){
 
    printf("Vol tornar a jugar?: SI/NO \n");
    fflush(stdin);
    scanf("%c",*&resposta);
 
    if (*resposta=='S'||  *resposta=='s') {
        *empat=0;
        if(*jugador==true)*jugador=false;
        if(*jugador==false)*jugador=true;
        *guanyar=0;
        *c1='1';
        *c2='2';
        *c3='3';
        *c4='4';
        *c5='5';
        *c6='6';
        *c7='7';
        *c8='8';
        *c9='9';
    }
 
    if(*error==1) {
        if (*jugador==true) *jugador=false;
        else *jugador=true;
    }
}
 
void estadistiques(int *jug1,int *jug2,int *empatades){
    printf("\t\t\tEstadistiques\n\n");
    printf("\nEl jugador 1 porta guanyades %d partides \n ",*jug1);
    printf("\nEl jugador 2 porta guanyades %d partides \n ",*jug2);
    printf("\n S'han empatat %d partides\n",*empatades);
}


 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.