//Main int main(int argc, char *argv[]) { //VALIDAR IP Y PUERTO RECIBIDO //conexion con el server establecerConexionConElServidor(argv); inicializarMatriz(matriz); //Espero el mensaje de me conexion exitosa con el servidor recv( caller_socket , buffer, TAMBUF ,0); printf("\nMensaje de Server:%s\n", buffer); //vector que va a guardar las coordenadas ingresadas por el usuario char movimientos[7]; int i; //Recibe y convierte buffer (protoclo), Imprime Matriz de juego recibida al iniciar la partida printf("MATRIZ DE JUEGO: ESCRIBA FIN PARA FINALIZAR\n"); printMatriz(matriz); while(!fin_partida){ printf("Ingrese las coordenadas de las fichas a develar con el siguiente formato:\n"); printf("X1 Y1 X2 Y2\n"); gets(movimientos); //Valida coordenadas a develar ingresadas por el usuario if(strcmp(movimientos,"FIN")!=0) { while(!validarMovimiento(movimientos)){ fflush(stdin); printf("Formato ingresado incorrecto, reingrese\n"); printf("X1 Y1 X2 Y2\n"); gets(movimientos); } printMatriz(matriz); enviarCoordenadas(matriz,buffer,movimientos); } /* printf("resultado comparacion: %d \n",strcmp( buffer, "fin" )); printf("mensaje buffeu: %s \n", buffer);*/ if(strcmp( movimientos, "FIN" ) == 0 || aciertos==50) fin_partida = true; //printf("\nMensaje de Server:%s\n", buffer); //sleep(10); //PARA PROBAR } printf("*****************************SALISTE DE LA PARTIDA, CANTIDAD DE ACIERTOS:%d*****************************8\n", aciertos); exit(0); }
int jugar(tTablero tablero, int modo, int jugador){ enum tDireccion dir=NULA; tMovimiento mov; char nombre[MAX_NOM]; tFlag jugada=START, quiereGuardar=0, hayCadena=0, quiereCambiar, hayGanador=0, calcularGanador=1, primerUndo=1; int captura; int a,b; /*TEMP*/ int estado = SEGUIR; tFlag hayPaika; tCasilla ** tableroAuxiliar; if(modo==PVE) tableroAuxiliar = generarMatrizTablero(tablero.filas, tablero.cols); imprimirTablero(&tablero); while (!hayGanador && jugada != QUIT) { if (calcularGanador) { hayGanador = estadoPostJugada(&tablero, jugador, &hayPaika); calcularGanador = 0; } if (!hayGanador) { if (hayCadena && (jugador == BLANCO || modo == PVP)) /* si hay cadena y no es la computadora */ pedirCadena(&mov); else if (jugador == BLANCO || modo == PVP) /* si no es la computadora */ jugada = pedirJugada(&mov, nombre); else{ /*Mueve la computadora */ jugada=MOV; if(calcularMovCompu(&mov, &tablero, hayPaika, hayCadena, dir) != 0){ imprimirError(ERR_MEM_COMPU); exit(1); } } if (jugada == MOV) { if(modo==PVE && jugador==BLANCO){ /*Copia el tablero al auxiliar solo antes de que juegue el usuario ** (siempre es BLANCO) y solo si el juego es vs. Computadora*/ copiarTablero(&tablero, tableroAuxiliar); primerUndo=1; } if (jugador == BLANCO || jugador == NEGRO) { captura = validarMovimiento(jugador, &tablero, mov, &dir, hayPaika); if (captura == AMBOS) /* ambiguedad en la jugada*/ mov.tipoMov = pedirCaptura(); else if (captura == APPROACH || captura == WITHDRAWAL) mov.tipoMov = captura; imprimirError(captura); /* en caso de movimiento valido, no imprime nada */ } if (captura >= 0) { /* el movimiento es válido */ actualizarTablero(&tablero, dir, mov); imprimirTablero(&tablero); hayCadena = 0; if (captura != NINGUNO) /* si no fue PAIKA, busca una posible cadena */ hayCadena = jugadaObligada(&tablero, jugador, mov.coordDest, dir); if (hayCadena) { /* al haber cadena, el origen es el nuevo destino */ mov.coordOrig.fil = mov.coordDest.fil; mov.coordOrig.col = mov.coordDest.col; } else { /* cambio de turno */ printf("Cambio!\n"); jugador = !jugador; /* Cambia */ printf("\nLe toca al jugador %s\n", jugador ? "negro" : "blanco"); dir = NULA; /* Ninguna */ calcularGanador = 1; /* calculamos un posible ganador */ limpiarTocadas(&tablero); } } } else if (jugada == UNDO) { if (modo == PVE) { if(primerUndo){ intercambiarTableros(&tablero, &tableroAuxiliar); primerUndo=0; } else imprimirError(ERR_UNDO_DOBLE); imprimirTablero(&tablero); } else imprimirError(ERR_UNDO); /* aca va lo del error del undo */ } else if (jugada == QUIT) { printf("Desea guardar su juego antes de salir?\n"); quiereGuardar = leerSN(); if (quiereGuardar) pedirNombre(nombre); } if (jugada == SAVE || quiereGuardar) { do { printf("Desea guardar su juego con el nombre '%s'?\n", nombre); quiereCambiar = !leerSN(); if (quiereCambiar) pedirNombre(nombre); } while (quiereCambiar); guardarPartida(&tablero, modo, jugador, nombre); printf("Se ha guardado su juego con el nombre '%s'\n", nombre); } } } return hayGanador; /* si se salió por QUIT, hayGanador vale 0 */ }