Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Como arreglar este programaa

Estas en el tema de Como arreglar este programaa en el foro de C/C++ en Foros del Web. Hola, no se mucho de prog y tampoco se lo que le pasa a este programa a ver si alguien consigue arreglarlo para que funcione ...
  #1 (permalink)  
Antiguo 28/02/2006, 09:20
 
Fecha de Ingreso: junio-2005
Mensajes: 53
Antigüedad: 18 años, 10 meses
Puntos: 0
Como arreglar este programaa

Hola, no se mucho de prog y tampoco se lo que le pasa a este programa a ver si alguien consigue arreglarlo para que funcione adecuadamente.saludos


Código:
/*REALIZAR JUEGO TRES EN RAYA: JUGADOR CONTRA JUGADOR*/

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <dos.h>

void tablero (int,int);
void jugador1(void);
void jugador2(void);
char matriz [3][3];
int comprueba(void);


void main(void)
{

printf("BIENVENIDO AL TRES EN RAYA\n");
printf("--------------------------\n");
printf("Las posiciones empiezan en '0' y acaban en '2'\n\n");

do
{
jugador1();
jugador2();
}
while(comprueba!=0);



getch();
}

void jugador1(void)
{
int i,j;

printf("\n\nJugador 1, introduce una posicion\n\n");
printf("\n\n FILA : ");
scanf("%d",&i);
printf("\nCOLUMNA : ");
scanf("%d",&j);

if(i>3 || j>3)
 {
 printf("\n\nLo siento,esa coordenada no existe");
 }

 else
  {
	matriz[i][j]='X';
	tablero(i,j);

  }
comprueba();
getch();
}



void jugador2(void)
{
int i,j;

printf("\n\nJugador 2, introduce una posicion\n\n");
printf("\n\n FILA : ");
scanf("%d",&i);
printf("\nCOLUMNA : ");
scanf("%d",&j);

if(i>3 || j>3)
 {
 printf("\n\nLo siento,esa coordenada no existe");
 }
 else
  {
	matriz[i][j]='O';
	tablero(i,j);

  }

getch();
comprueba();
return;

}

int comprueba (void)
{
      //gana jugador 1
  if(matriz[0][0]== matriz[0][1] && matriz[0][1]==matriz[0][2]&& matriz[0][0]=='X')
     {
     printf("Jugador 1, has ganado la partida!!");
     	if(matriz[0][0]== matriz[0][1] && matriz[0][1]==matriz[0][2]&& matriz[0][0]=='O')
        printf("Jugador 2, has ganado la partida!!");
     }
  if(matriz[0][0]== matriz[1][0] && matriz[1][0]==matriz[2][0]&& matriz[0][0]=='X')
     {
     printf("Jugador 1, has ganado la partida!!");

     }
  if(matriz[0][1]== matriz[1][1] && matriz[2][1]==matriz[2][1]&& matriz[0][1]=='O')
     {
     printf("Jugador 1, has ganado la partida!!");

     }
   if(matriz[0][2]== matriz[1][2] && matriz[2][2]==matriz[2][2]&& matriz[0][2]=='O')
     {
     printf("Jugador 1, has ganado la partida!!");

     }
    if(matriz[0][2]== matriz[1][1] && matriz[2][0]==matriz[2][0]&& matriz[0][2]=='O')
     {
     printf("Jugador 1, has ganado la partida!!");

     }


return(1);
}

void tablero (int i,int j)
{
clrscr();

printf("\n\n    0  |  1  | 2 \n");
printf("-------------------\n");
printf(" 0  %c  |  %c  |  %c\n",matriz[0][0],matriz[0][1],matriz[0][2]);
printf("-------------------\n");
printf(" 1  %c  |  %c  |  %c\n",matriz[1][0],matriz[1][1],matriz[1][2]);
printf("-------------------\n");
printf(" 2  %c  |  %c  |  %c\n",matriz[2][0],matriz[2][1],matriz[2][2]);


return;
}
  #2 (permalink)  
Antiguo 28/02/2006, 12:00
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 3 meses
Puntos: 3
En la linea donde tienes el while la condicion la toma el compilador como una variable y tu requieres una funcion
while (comprueba()!=0)

En las funciones jugador 1 y 2, mandas llamar la funcion comrueba pero el valor que defines que regresa no lo asigna a ninguna variable.

La logica que utilizas en la funcion comprueba es algo rebuscada y siempre regresas el valor 1, por lo que tu programa entrara en un ciclo infinito...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #3 (permalink)  
Antiguo 28/02/2006, 12:23
 
Fecha de Ingreso: junio-2005
Mensajes: 53
Antigüedad: 18 años, 10 meses
Puntos: 0
me podrias ayudar a arreglarlo, no se como hacer que funcione y tengo que netregarlo mañana ¿una ayudita?
  #4 (permalink)  
Antiguo 28/02/2006, 18:40
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Econtre otra cosa algo extraña.

if(matriz[0][0]== matriz[0][1] && matriz[0][1]==matriz[0][2]&& matriz[0][0]=='X')
{
printf("Jugador 1, has ganado la partida!!");
if(matriz[0][0]== matriz[0][1] && matriz[0][1]==matriz[0][2]&& matriz[0][0]=='O')
printf("Jugador 2, has ganado la partida!!");
}

Ahi estas poniendo que si el jugador 1 gana la partida, entonces, se compruebe si el segundo gano la partida, y si si la gano(lo cual es imposible) imprimir, el seungo mensaje.

Esta parte para que veas no tiene sentido...
Y por lo que veo, en todas tus otras condiciones, el jugador 1 siempre gana. Por lo tanto el jugador 2 nunca gana. Posiblemente tengas que poner algunos elses, o no se.
Yo te recomewndaria que mejor hicieras una tabla con todas las posibilidades con las que se gana y compararla con circulos y con taches, y asi ver quien gano la partida, porque esa funcion comprueba que propones, esta muy...como dicen... rebuscada.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:02.