void UnJugador::octavoCuadro(){ if(turno=='O'){ if(cambiarTurno(2,1)){ cuadro8.loadFromFile("img_0.png"); sp8.setTexture(cuadro8); sp8.setPosition(sf::Vector2f(485.f,650.f)); } } else{ if(cambiarTurno(2,1)){ cuadro8.loadFromFile("img_x.png"); sp8.setTexture(cuadro8); sp8.setPosition(sf::Vector2f(485.f,650.f)); } } }
void UnJugador::novenoCuadro(){ if(turno=='O'){ if(cambiarTurno(2,2)){ cuadro9.loadFromFile("img_0.png"); sp9.setTexture(cuadro9); sp9.setPosition(sf::Vector2f(825.f,650.f)); } } else{ if(cambiarTurno(2,2)){ cuadro9.loadFromFile("img_x.png"); sp9.setTexture(cuadro9); sp9.setPosition(sf::Vector2f(825.f,650.f)); } } }
void UnJugador::sextoCuadro(){ if(turno=='O'){ if(cambiarTurno(1,2)){ cuadro6.loadFromFile("img_0.png"); sp6.setTexture(cuadro6); sp6.setPosition(sf::Vector2f(850.f,360.f)); } } else{ if(cambiarTurno(1,2)){ cuadro6.loadFromFile("img_x.png"); sp6.setTexture(cuadro6); sp6.setPosition(sf::Vector2f(850.f,360.f)); } } }
void UnJugador::septimoCuadro(){ if(turno=='O'){ if(cambiarTurno(2,0)){ cuadro7.loadFromFile("img_0.png"); sp7.setTexture(cuadro7); sp7.setPosition(sf::Vector2f(110.f,650.f)); } } else{ if(cambiarTurno(2,0)){ cuadro7.loadFromFile("img_x.png"); sp7.setTexture(cuadro7); sp7.setPosition(sf::Vector2f(110.f,650.f)); } } }
void UnJugador::cuartoCuadro(){ if(turno=='O'){ if(cambiarTurno(1,0)){ cuadro4.loadFromFile("img_0.png"); sp4.setTexture(cuadro4); sp4.setPosition(sf::Vector2f(125.f,360.f)); } } else{ if(cambiarTurno(1,0)){ cuadro4.loadFromFile("img_x.png"); sp4.setTexture(cuadro4); sp4.setPosition(sf::Vector2f(125.f,360.f)); } } }
void UnJugador::quintoCuadro(){ if(turno=='O'){ if(cambiarTurno(1,1)){ cuadro5.loadFromFile("img_0.png"); sp5.setTexture(cuadro5); sp5.setPosition(sf::Vector2f(485.f,360.f)); } } else{ if(cambiarTurno(1,1)){ cuadro5.loadFromFile("img_x.png"); sp5.setTexture(cuadro5); sp5.setPosition(sf::Vector2f(485.f,360.f)); } } }
void UnJugador::tercerCuadro(){ if(turno=='O'){ if(cambiarTurno(0,2)){ cuadro3.loadFromFile("img_0.png"); sp3.setTexture(cuadro3); sp3.setPosition(sf::Vector2f(825.f,95.f)); } } else{ if(cambiarTurno(0,2)){ cuadro3.loadFromFile("img_x.png"); sp3.setTexture(cuadro3); sp3.setPosition(sf::Vector2f(825.f,95.f)); } } }
void UnJugador::segundoCuadro(){ if(turno=='O'){ if(cambiarTurno(0,1)){ cuadro2.loadFromFile("img_0.png"); sp2.setTexture(cuadro2); sp2.setPosition(sf::Vector2f(485.f,95.f)); } } else{ if(cambiarTurno(0,1)){ cuadro2.loadFromFile("img_x.png"); sp2.setTexture(cuadro2); sp2.setPosition(sf::Vector2f(485.f,95.f)); } } }
void UnJugador::primerCuadro(){ if(turno=='O'){ if(cambiarTurno(0,0)){ cuadro1.loadFromFile("img_0.png"); sp1.setTexture(cuadro1); sp1.setPosition(sf::Vector2f(125.f,95.f)); } } else{ if(cambiarTurno(0,0)){ cuadro1.loadFromFile("img_x.png"); sp1.setTexture(cuadro1); sp1.setPosition(sf::Vector2f(125.f,95.f)); } } }
int jugar(tPartida partida){ tMovimiento mov; char nombre[MAX_NOM]; tFlag quiereGuardar=0, quiereCambiar, quiereUndo, hayGanador=0, calcularEstado=1; enum tJugada jugada = START; int captura; imprimirTablero(partida); while (!hayGanador && jugada != QUIT) { if (calcularEstado) { hayGanador = estadoJuego(partida); calcularEstado = 0; } if (!hayGanador) { if ( hayCadena(partida) && ( jugadorActual(partida) == BLANCO || modoJuego(partida) == PVP)) /* si hay cadena y no es la computadora */ mov = pedirCadena(partida); else if (jugadorActual(partida) == BLANCO || modoJuego(partida) == PVP){ /* si no es la computadora */ printf("\nTurno del jugador %s\n", jugadorActual(partida) ? "negro" : "blanco"); jugada = pedirJugada(&mov, nombre); } else{ /*Mueve la computadora */ printf("\nMueve la computadora:"); if(calcularMovCompu(&mov, partida) != 0){ imprimirError(ERR_MEM_COMPU); exit(1); } } if (jugada == MOV) { captura = mover(partida, &mov); if (captura == AMBIGUO) { /*Hay que pedirle que especifique*/ mov.tipoMov = pedirCaptura(); captura = mover (partida, &mov); } if (captura >= 0) { /* si el movimiento fue válido */ imprimirMov (&mov); imprimirTablero(partida); if (!hayCadena(partida)) { /* cambiamos de turno */ cambiarTurno (partida); calcularEstado=1; } } else imprimirError(captura); } else if (jugada == UNDO) { quiereUndo = undo(partida); if( quiereUndo == OK ){ imprimirTablero(partida); calcularEstado = 1; /*Tiene que volver a chequear el tablero */ } else imprimirError(quiereUndo); } 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); if (guardarPartida(partida, nombre) != ERROR) printf("Se ha guardado su juego con el nombre '%s'\n", nombre); else imprimirError(ERR_SAVE); } } } return hayGanador; /* si se salió por QUIT, hayGanador vale 0 */ }
int jugar2(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); copiarTablero(&tablero, tableroAuxiliar); } 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 */ if(calcularMovCompu(&mov, &tablero, hayPaika, hayCadena, dir) != 0){ imprimirError(ERR_MEM_COMPU); exit(1); } } if (jugada == MOV) { captura = mover(jugador, modo, &tablero, tableroAuxiliar, &mov, &dir, hayPaika, &hayCadena); if (captura == AMBOS) { /*Hay que pedirle que especifique*/ mov.tipoMov = pedirCaptura(); captura = mover (jugador, modo, &tablero, tableroAuxiliar, &mov, &dir, hayPaika, &hayCadena); } if (captura >= 0) { /* si el movimiento fue válido */ imprimirTablero(&tablero); if (!hayCadena) { /* cambiamos de turno */ cambiarTurno (&jugador, &tablero, &dir); primerUndo=1; calcularGanador=1; printf("Cambio!\nLe toca al jugador %s\n", jugador ? "negro" : "blanco"); } } else imprimirError(captura); } else if (jugada == UNDO) { if (modo == PVE) { if(primerUndo){ intercambiarTableros(&tablero, &tableroAuxiliar); imprimirTablero(&tablero); primerUndo=0; calcularGanador = 1; /*Tiene que volver a chequear el tablero */ } else imprimirError(ERR_UNDO_DOBLE); } 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); if (guardarPartida(&tablero, modo, jugador, nombre) != ERROR) printf("Se ha guardado su juego con el nombre '%s'\n", nombre); else printf("Error: no se ha podido guardar su juego.\n"); } } } return hayGanador; /* si se salió por QUIT, hayGanador vale 0 */ }