ayuda ta te ti linux

Dudas sobre los distintos compiladores C/C++ en Linux
Responder
Mensaje
Autor
Avatar de Usuario
paparoach1484
Mensajes: 13
Registrado: 25/04/2006 11:00 pm

ayuda ta te ti linux

#1 Mensaje por paparoach1484 » 18/09/2009 4:28 am

hola gente como les va les comento que estoy haciendo un proyecto para una materia de la facultad que consiste en un programa en c linux que es el clasico juego del tateti y yo encontre algo de la logica por ahi y buieno le hice muchos cambios le programe un socket lo separe en funciones y demas y anda joya cuando hay ganadores pero tengo problemas cuando no ganaa nadie no puedo agregar un if que me genere esa condicion porque cuando lo agrego rompo alguno de los whiles de arriba espero alguien pueda darme una mano aca subo los codigos

mi servidor es tateti.c

tateti.c
#include <Socket_Servidor.h>
#include <Socket_Cliente.h>
#include <Socket.h>
#include <tablero.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILAS 3
#define COL 3

void dibujar ( char tablero[FILAS][COL] );
int verificar ( char tablero[FILAS][COL] );

int main(){
int Socket_Usuario1;
int Usuario2;
char Cadena[100];
int i = 0;
int o=0;
int x=0;
int jugada = 0;
int ganador = 0;
int fila = 0;
int columna = 0;
char tablero[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};


Socket_Usuario1 = Abre_Socket_Inet ("kazaa"); //Se abre el socket del usuario 1
if (Socket_Usuario1 == -1){
printf ("No se puede abrir socket del Jugador 1\n");
exit (-1);
}else{
printf("\nJugador 1 Iniciado");
printf("\n-----------------\n");
printf("Esperando Conexion del Jugador 2...\n");
}

while((Usuario2 = Acepta_Conexion_Cliente(Socket_Usuario1))){
if (Usuario2 == -1){
printf ("No se puede abrir socket del Jugador 2\n");
exit (-1);
}else{
printf("\n-->Jugador 2 Conectado\n");
}

Lee_Socket(Usuario2, Cadena, 6);

printf ("\nSoy Jugador 1, he recibido : %s\n", Cadena);
printf("\nComienza el juego.");

dibujar(tablero);

do{
do{
printf("\nJugador 1, ingrese la posicion de la ficha (o): ");
scanf("%d", &jugada);
fila = --jugada/3; // calcula fila
columna = jugada%3; // calcula columna
}while(jugada<0 || jugada>9 || tablero[fila][columna]>'9');
tablero[fila][columna] = 'o';
sprintf(Cadena, "%d", jugada); //Conversion
Escribe_Socket (Usuario2, Cadena, 1);
ganador=verificar(tablero);
dibujar(tablero);
if(ganador==1){
printf("\nGANASTE !!!\n");
break;
}

printf("\nEsperando al Jugador 2...\n");
Lee_Socket (Usuario2, Cadena, 1);
printf ("Ficha recibida : %d\n", atoi(Cadena)+1);
jugada=atoi(Cadena)+1;
fila = --jugada/3; // calcula fila
columna = jugada%3; // calcula columna
tablero[fila][columna] = 'x';
dibujar(tablero);
ganador=verificar(tablero);
if(ganador==1){
printf("\nGano Jugador2\n");
break;
}
}while(ganador!=1);
}
}


mi cliente es
jugador2.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Socket_Cliente.h>
#include <Socket.h>
#include <tablero.h>

main (){
//Descriptor del socket y buffer para datos
int Socket_Usuario2;
char Cadena[100], nombre_servidor[20];
int i = 0;
int jugada = 0;
int ganador = 0;
int o=0;
int x=0;
int fila = 0;
int columna = 0;
char tablero[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};

printf("\nBIENVENIDO!");
printf("\n-----------");
printf("\nPara conectarse ingrese el nombre del servidor:");
scanf("%s",&nombre_servidor);
/*
* Se abre la conexion con el servidor, pasando el nombre del ordenador
* y el servicio solicitado.
* "localhost" corresponde al nombre del mismo ordenador en el que
* estamos corriendo. Esta dado de alta en /etc/hosts
* "kazaa" es un servicio dado de alta en /etc/services
*/
Socket_Usuario2 = Abre_Conexion_Inet (nombre_servidor, "kazaa");
if (Socket_Usuario2 == -1){
printf ("No puedo establecer conexion con el servidor\n");
exit (-1);
}else{
printf("Jugador Conectado");
}

strcpy(Cadena,"Listo");
Escribe_Socket (Socket_Usuario2, Cadena, 6); //Fin \0

dibujar(tablero);
do{
printf("\nEsperando al Jugador 1...\n");
//Se lee la informacion enviada por el Jugador 1, que se supone es una cadena de 1 caracteres.
Lee_Socket (Socket_Usuario2, Cadena, 1);
printf ("Ficha recibida : %d\n", atoi(Cadena)+1);
jugada=atoi(Cadena)+1;
fila = --jugada/3; // calcula fila
columna = jugada%3; // calcula columna
tablero[fila][columna] = 'o';
dibujar(tablero);
ganador=verificar(tablero);
if(ganador==1){
printf("\nGano Jugador1\n");
break;
}

do{
printf("\nJugador 2, ingrese la posicion de la ficha (X): ");
scanf("%d", &jugada);
fila = --jugada/3; // calcula fila
printf("fila %d",fila);
columna = jugada%3; // calcula columna
printf("columna: %d",columna);
}while(jugada<0 || jugada>9 || tablero[fila][columna]>'9');
tablero[fila][columna] = 'x';
sprintf(Cadena, "%d", jugada); //Conversion
Escribe_Socket (Socket_Usuario2, Cadena, 1);
dibujar(tablero);
ganador=verificar(tablero);
if(ganador==1){
printf("\nGANASTE!!!\n");
break;
}
}while(ganador!=1);
close(Socket_Usuario2);
}

y la logica para encontrar ganadoes es tablero.c

#include <stdio.h>
#include <stdlib.h>
#include <tablero.h>

/* Funcion que dibuja el tablero */

void dibujar (char tablero[3][3]){
//system("clear");
printf("\n\n");
printf(" %c | %c | %c\n", tablero[0][0], tablero[0][1], tablero[0][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n", tablero[1][0], tablero[1][1], tablero[1][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n", tablero[2][0], tablero[2][1], tablero[2][2]);
}

/* Funcion para chequear si hay ganador */

int verificar (char tablero[3][3]){
int linea, ganador = 0;
/* Verifica si hay ganador en las diagonales */
if((tablero[0][0] == tablero[1][1] && tablero[0][0] == tablero[2][2]) ||
(tablero[0][2] == tablero[1][1] && tablero[0][2] == tablero[2][0]))
ganador = 1;
else
/* Verifica si hay ganador en las lineas */
for(linea = 0; linea <= 2; linea ++)
if((tablero[linea][0] == tablero[linea][1] && tablero[linea][0] == tablero[linea][2])||
(tablero[0][linea] == tablero[1][linea] && tablero[0][linea] == tablero[2][linea]))
ganador = 1;
return ganador;
}

kaneva
Mensajes: 3
Registrado: 30/09/2009 8:15 pm
Ubicación: En la Luna

#2 Mensaje por kaneva » 01/10/2009 9:50 am

Hola queria decirte q me quise poner a probar tu codigo, pero falta el archivo tablero.h , y creo q un par de codigos mas. asi que por favor subelos asi puedo verlo mejor

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados