Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Created by David Souza and Hernan Iruegas
- //All rights reserved
- #include <iostream>
- #include <string>
- using namespace std;
- int TurnoJugador(int iArr[])
- {
- int aux;
- cout << "Tu turno" << endl;
- cin >> aux;
- while (iArr[aux] != 0)
- {
- cout << "Oops, esta casilla ya esta llena, favor de elegir otra" << endl;
- cin >> aux;
- }
- return aux;
- }
- void DespliegaTablero(int iArr[])
- {
- for(int i = 0; i < 9; i++)
- {
- if(i == 3 || i == 6) cout << "----------" << endl;
- if(iArr[i] == 1) cout << "X";
- else if(iArr[i] == 4) cout << "O";
- else cout << " ";
- if(i!=2 && i!=5 && i!=8) cout <<" | ";
- if(i == 2 || i == 5) cout << endl;
- }
- cout << endl << endl;
- }
- bool YaGanoEsteWe(int jugador, int iArr[])
- {
- bool winner = false;
- int x = jugador;
- if((iArr[0] + iArr[1] + iArr[2] == x) || (iArr[3] + iArr[4] + iArr[5] == x) || (iArr[6] + iArr[7] + iArr[8] == x) ||
- (iArr[0] + iArr[3] + iArr[6] == x) || (iArr[1] + iArr[4] + iArr[7] == x) || (iArr[2] + iArr[5] + iArr[8] == x) ||
- (iArr[0] + iArr[4] + iArr[8] == x) || (iArr[2] + iArr[4] + iArr[6] == x)) winner = true;
- return winner;
- }
- bool LogicaMamalona(int iArr[])
- {
- string Agathe[8];
- Agathe[0] = "012"; Agathe[1] = "345"; Agathe[2] = "678"; Agathe[3] = "036"; Agathe[4] = "147"; Agathe[5] = "258";
- Agathe[6] = "048"; Agathe[7] = "246";
- int a, b, c;
- for(int i = 0; i < 8; i++)
- {
- a = int(Agathe[i][0])-48, b = int(Agathe[i][1])-48, c = int(Agathe[i][2])-48;
- if(iArr[a] + iArr[b] + iArr[c] == 2)
- {
- if(iArr[a] == 0) iArr[a] = 1;
- else if(iArr[b] == 0) iArr[b] = 1;
- else iArr[c] = 1;
- DespliegaTablero(iArr);
- cout << "La computadora ha ganado!" << endl;
- return true;
- }
- }
- for(int i = 0; i < 8; i++)
- {
- a = int(Agathe[i][0])-48, b = int(Agathe[i][1])-48, c = int(Agathe[i][2])-48;
- if(iArr[a] + iArr[b] + iArr[c] == 8)
- {
- if(iArr[a] == 0) iArr[a] = 1;
- else if(iArr[b] == 0) iArr[b] = 1;
- else iArr[c] = 1;
- DespliegaTablero(iArr);
- return false;
- }
- }
- for(int i = 0; i < 8; i++)
- {
- a = int(Agathe[i][0])-48, b = int(Agathe[i][1])-48, c = int(Agathe[i][2])-48;
- if(iArr[a] + iArr[b] + iArr[c] == 1)
- {
- if(iArr[a] == 0) iArr[a] = 1;
- else if(iArr[b] == 0) iArr[b] = 1;
- else iArr[c] = 1;
- DespliegaTablero(iArr);
- return false;
- }
- }
- for(int i = 0; i < 9; i++)
- if(iArr[i] == 0)
- {
- iArr[i] = 1;
- DespliegaTablero(iArr);
- return false;
- }
- }
- int main() {
- int iArr[9], cont;
- //Llena el arreglo de puros 0's
- //Las cruces van a ser 1's y los circulos seran 2's
- for(int i = 0; i < 9; i++)
- iArr[i] = 0;
- //Proceso mamalon
- int mom;
- cout << "Quien va primero? (0 = computadora, 1 = jugador)" << endl;
- cin >> mom;
- int aux;
- if(mom == 0) //Para la computadora primero
- {
- iArr[2] = 1; //Pone en la esquina superior derecha. TURNO 1
- DespliegaTablero(iArr);
- aux = TurnoJugador(iArr);
- iArr[aux] = 4;
- DespliegaTablero(iArr); //Turno de computadora TURNO 3
- if(aux == 8 || aux == 0) //En esquinas adyacentes
- {
- iArr[6] = 1; //Ya valio madre el jugador.
- DespliegaTablero(iArr);
- cont = aux;
- aux = TurnoJugador(iArr);
- iArr[aux] = 4;
- if (aux == 4) //En centro? TURNO 5
- {
- (cont == 8) ? iArr[0] = 1 : iArr[8] = 1;
- DespliegaTablero(iArr);
- }
- else
- if(LogicaMamalona(iArr)) return 0;
- }
- else if(aux == 1 || aux == 5) //Al lado
- {
- (aux == 1) ? iArr[8] = 1 : iArr[0] = 1;
- DespliegaTablero(iArr);
- cont = aux;
- aux = TurnoJugador(iArr);
- iArr[aux] = 4;
- if((cont == 1 && aux == 5) || (cont == 5 && aux == 1))
- {
- iArr[4] = 1;
- DespliegaTablero(iArr);
- }
- else
- if(LogicaMamalona(iArr)) return 0;
- }
- else if(aux == 3 || aux == 7) //Lado caballo
- {
- iArr[8] = 1;
- DespliegaTablero(iArr);
- aux = TurnoJugador(iArr);
- iArr[aux] = 4;
- if(aux == 5)
- {
- iArr[4] = 1;
- DespliegaTablero(iArr);
- }
- else
- if(LogicaMamalona(iArr)) return 0;
- }
- else if(aux == 6) //Contra esquina
- {
- iArr[0] = 1;
- DespliegaTablero(iArr);
- aux = TurnoJugador(iArr);
- iArr[aux] = 4;
- if (aux == 1)
- {
- iArr[4] = 1;
- DespliegaTablero(iArr);
- }
- else
- if(LogicaMamalona(iArr)) return 0;
- }
- else //En el centro
- {
- iArr[6] = 1;
- DespliegaTablero(iArr);
- aux = TurnoJugador(iArr);
- iArr[aux] = 4;
- if(aux == 8 || aux == 0)
- {
- (aux==8) ? iArr[0] = 1 : iArr[8] = 1;
- DespliegaTablero(iArr);
- }
- else
- if(LogicaMamalona(iArr)) return 0;
- }
- cont = 5;
- while(cont < 9)
- {
- iArr[TurnoJugador(iArr)] = 4;
- if(YaGanoEsteWe(12, iArr))
- {
- DespliegaTablero(iArr);
- cout << "HAS GANADO!";
- return 0;
- }
- else
- DespliegaTablero(iArr);
- if(LogicaMamalona( iArr)) return 0;
- cont+=2;
- }
- }
- else //Giocatore va prima
- {
- cont = 0;
- DespliegaTablero(iArr);
- while(cont < 9)
- {
- iArr[TurnoJugador(iArr)] = 4;
- if(YaGanoEsteWe(12, iArr))
- {
- DespliegaTablero(iArr);
- cout << "HAS GANADO!";
- return 0;
- }
- else DespliegaTablero(iArr);
- if(cont == 8) cout << "EMPATE" << endl;
- if(cont == 0 && iArr[4] == 0)
- {
- iArr[4] = 1;
- DespliegaTablero(iArr);
- }
- else if(cont == 2 && iArr[4] == 1 && ((iArr[0] == 4 && iArr[8] == 4) || (iArr[2] == 4 && iArr[6] == 4)))
- {
- iArr[5] = 1;
- DespliegaTablero(iArr);
- }
- else if(LogicaMamalona(iArr)) return 0;
- cont+=2;
- }
- }
- /*
- //La madre de 2 jugadores
- //int aux;
- bool winner = false;
- int iArr[9];
- //Llena el arreglo de puros 0's
- //Las cruces van a ser 1's y los circulos seran 2's
- for(int i = 0; i < 9; i++)
- iArr[i] = 0;
- DespliegaTablero(iArr);
- while(!winner)
- {
- cout << "Turno de cruces" << endl;
- cin >> aux;
- while (iArr[aux] != 0)
- {
- cout << "Oops, esta casilla ya esta llena, favor de elegir otra" << endl;
- cin >> aux;
- }
- iArr[aux] = 1;
- DespliegaTablero(iArr);
- if(YaGanoEsteWe(3, iArr)) {
- cout << "Ya gano el we de las cruces" << endl;
- winner = true;}
- if(!winner)
- {
- cout << "Turno de circulos" << endl;
- cin >> aux;
- while (iArr[aux] != 0)
- {
- cout << "Oops, esta casilla ya esta llena, favor de elegir otra" << endl;
- cin >> aux;
- }
- iArr[aux] = 4;
- DespliegaTablero(iArr);
- if(YaGanoEsteWe(12, iArr)){
- cout << "Ya gano el we de los circulos" << endl;
- winner = true;}
- }
- }
- return 0;*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement