Estamos con lo mismo hehe me las cuenta como empatadas, a ver si pillo el error. Muchas gracias igualmente.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú//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);
}