Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Carlos Garza
- // A01193441
- //
- // El propósito de este programa es crear un juego "Connect 4" el cual sea posible jugar entre 2 jugadores.
- // Finalizado el Viernes 20 de Noviembre del 2015.
- //
- #include <iostream>
- using namespace std;
- bool game(int iRows, int iColumns, char cMatBoard[8][7], int iPick1, int iPick2, char cP1, char cP2) //esta funcion checa si el juego ya se acaba a traves de un jugador ganando
- {
- for (int iCount=0; iCount<iRows; iCount++)
- {
- for (int iCountB=0; iCountB<iColumns; iCountB++)
- {
- if (cMatBoard[iCount][iCountB]==cP1 &&
- cMatBoard[iCount][iCountB+1]==cP1 &&
- cMatBoard[iCount][iCountB+2]==cP1 &&
- cMatBoard[iCount][iCountB+3]==cP1 &&
- iCountB<5)
- {
- cout << "Jugador 1 Gana! -"; //jugador 1 gana por linea horizontal
- return true;
- }
- if (cMatBoard[iCount][iCountB]==cP2 &&
- cMatBoard[iCount][iCountB+1]==cP2 &&
- cMatBoard[iCount][iCountB+2]==cP2 &&
- cMatBoard[iCount][iCountB+3]==cP2 &&
- iCountB<5)
- {
- cout << "Jugador 2 Gana! -"; //jugador 2 gana por linea horizontal
- return true;
- }
- if (cMatBoard[iCount][iCountB]==cP1 &&
- cMatBoard[iCount+1][iCountB]==cP1 &&
- cMatBoard[iCount+2][iCountB]==cP1 &&
- cMatBoard[iCount+3][iCountB]==cP1)
- {
- cout << "Jugador 1 Gana! |"; //jugador 1 gana por linea vertical
- return true;
- }
- if (cMatBoard[iCount][iCountB]==cP2 &&
- cMatBoard[iCount+1][iCountB]==cP2 &&
- cMatBoard[iCount+2][iCountB]==cP2 &&
- cMatBoard[iCount+3][iCountB]==cP2)
- {
- cout << "Jugador 2 Gana! |"; //jugador 2 gana por linea vertical
- return true;
- }
- if (cMatBoard[iCount][iCountB]==cP1 &&
- cMatBoard[iCount+1][iCountB+1]==cP1 &&
- cMatBoard[iCount+2][iCountB+2]==cP1 &&
- cMatBoard[iCount+3][iCountB+3]==cP1 &&
- iCountB<4)
- {
- cout << "Jugador 1 Gana! \\"; //jugador 1 gana por linea diagonal "\"
- return true;
- }
- if (cMatBoard[iCount][iCountB]==cP2 &&
- cMatBoard[iCount+1][iCountB+1]==cP2 &&
- cMatBoard[iCount+2][iCountB+2]==cP2 &&
- cMatBoard[iCount+3][iCountB+3]==cP2 &&
- iCountB<4)
- {
- cout << "Jugador 2 Gana! \\"; //jugador 2 gana por linea diagonal "\"
- return true;
- }
- if (cMatBoard[iCount][iCountB]==cP1 &&
- cMatBoard[iCount-1][iCountB+1]==cP1 &&
- cMatBoard[iCount-2][iCountB+2]==cP1 &&
- cMatBoard[iCount-3][iCountB+3]==cP1 &&
- iCountB<4 && iCount>3)
- {
- cout << "Jugador 1 Gana! /"; //jugador 1 gana por linea diagonal "/"
- return true;
- }
- if (cMatBoard[iCount][iCountB]==cP2 &&
- cMatBoard[iCount-1][iCountB+1]==cP2 &&
- cMatBoard[iCount-2][iCountB+2]==cP2 &&
- cMatBoard[iCount-3][iCountB+3]==cP2 &&
- iCountB<4 && iCount>3)
- {
- cout << "Jugador 2 Gana! /"; //jugador 2 gana por linea diagonal "/"
- return true;
- }
- }
- }
- return false;
- }
- void imprimirtabla(int iRows, int iColumns, char cMatBoard[8][7]) //esta funcion simplemente imprime la tabla
- {
- for (int iCount=0; iCount<iRows; iCount++)
- {
- for (int iCountB=0; iCountB<iColumns; iCountB++)
- {
- cout << cMatBoard[iCount][iCountB] << "\t";
- }
- cout << endl;
- }
- }
- void turnojugador1(int iRows, int iColumns, char cMatBoard[8][7], int iPick1, int iPick2, char cP1, char cP2) // esta funcion significa el turno del primer jugador
- {
- iRows=8;
- cout << "Turno del Jugador 1" << endl << "En que columna gusta poner su ficha?" << endl;
- cin >> iPick1; //el jugador escoge en que columna
- while (iPick1<1 || iPick1>7) //si la columna no existe desplega "No es valido el numero, porfavor escoge otro", y forza al jugador a introducir una columna valida
- {
- cout << "No es valido el numero, porfavor escoge otro" << endl;
- cin >>iPick1;
- }
- iPick1-=1;
- if(cMatBoard[iRows][iPick1]!='-')
- {
- while (cMatBoard[iRows][iPick1]!='-')
- {
- iRows--;
- if (cMatBoard[1][iPick1]!='-')
- {
- while (cMatBoard[1][iPick1]!='-')
- {
- cout << "Esta columna ya esta llena, por favor escoge otra." << endl; //si la columna ya esta llena forza al jugador a poner su ficha en otra columna
- cin >>iPick1;
- iPick1-=1;
- }
- }
- }
- cMatBoard[iRows][iPick1]=cP1;
- }
- }
- void turnojugador2(int iRows, int iColumns, char cMatBoard[8][7], int iPick1, int iPick2, char cP1, char cP2) //esta funcion simplemente es el turno del jugador 2, contiene lo mismo
- { //que la del jugador 1, solamente modificando la ficha
- iRows=8;
- cout << "Turno del Jugador 2" << endl << "En que columna gusta poner su ficha?" << endl;
- cin >> iPick2;
- while (iPick2<1 || iPick2>7)
- {
- cout << "No es valido el numero, porfavor escoge otro" << endl; //turno de jugador 2
- cin >>iPick2;
- }
- iPick2-=1;
- if(cMatBoard[iRows][iPick2]!='-')
- {
- while (cMatBoard[iRows][iPick2]!='-')
- {
- iRows--;
- if (cMatBoard[1][iPick2]!='-')
- {
- while (cMatBoard[1][iPick2]!='-')
- {
- cout << "Esta columna ya esta llena, por favor escoge otra." << endl;
- cin >>iPick2;
- iPick2-=1;
- }
- }
- }
- cMatBoard[iRows][iPick2]=cP2;
- }
- }
- int main()
- {
- char cMatBoard[8][7], cP1='X', cP2='O', cChoice;
- bool bGame;
- int iRows=8, iColumns=7, iPick1, iPick2, iFichas=0;
- for (int iCount=0; iCount<iRows; iCount++) // declarar los numeros y las lineas de la mesa
- {
- for (int iCountB=0; iCountB<iColumns; iCountB++)
- {
- if (cMatBoard[iCount][iCountB]==cMatBoard[0][0])
- {
- cMatBoard[iCount][iCountB]='1';
- }
- else if (cMatBoard[iCount][iCountB]==cMatBoard[0][1])
- {
- cMatBoard[iCount][iCountB]='2';
- }
- else if (cMatBoard[iCount][iCountB]==cMatBoard[0][2])
- {
- cMatBoard[iCount][iCountB]='3';
- }
- else if (cMatBoard[iCount][iCountB]==cMatBoard[0][3])
- {
- cMatBoard[iCount][iCountB]='4';
- }
- else if (cMatBoard[iCount][iCountB]==cMatBoard[0][4])
- {
- cMatBoard[iCount][iCountB]='5';
- }
- else if (cMatBoard[iCount][iCountB]==cMatBoard[0][5])
- {
- cMatBoard[iCount][iCountB]='6';
- }
- else if (cMatBoard[iCount][iCountB]==cMatBoard[0][6])
- {
- cMatBoard[iCount][iCountB]='7';
- }
- else
- {
- cMatBoard[iCount][iCountB]='-';
- }
- }
- }
- imprimirtabla(iRows, iColumns, cMatBoard); //imprime la tabla antes de que empieze el juego para que el jugador 1 pueda empezar
- while (game(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2) == false && iFichas!=49) //mientras que el juego no se haya acabado, o la mesa no este llena, sigue el juego.
- {
- turnojugador1(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2); //turno del jugador 1
- imprimirtabla(iRows, iColumns, cMatBoard); //imprime la tabla
- bGame=game(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2); //checa si ya se acabo el juego
- if(bGame==true) //si si gano el jugador 1 se acaba el juego.
- break;
- iFichas++; //este contador sirve para ver cuantas fichas hay en la mesa, si hay 49, significa que la tabla esta llena
- if (iFichas==49) //si la tabla esta llena se acaba el juego
- {
- cout << "La tabla esta llena, nadie gana." << endl; //si la tabla esta llena empatan los jugadores y nadie gana
- break;
- }
- cout << "Quieres seguir jugando? (s/S o n/N)" << endl; //pregunta si quieres seguir jugando
- cin >> cChoice;
- if (cChoice=='n' || cChoice=='N') //si la respuesta es no ahi se acaba el juego
- break;
- while (cChoice!='s' && cChoice !='S' && cChoice != 'n' && cChoice != 'N') //mientras que la respuesta no sea 'si' o 'no', va a seguir preguntando
- {
- cout << "Ingrese 's', 'S', 'n', o 'N'" << endl;
- cin >> cChoice;
- }
- turnojugador2(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2); //turno del jugador 2
- imprimirtabla(iRows, iColumns, cMatBoard); //imprime la tabla
- bGame=game(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2); //checa si ya se acabo el juego
- if(bGame==true) //si si gano el jugador 1 se acaba el juego.
- break;
- iFichas++; //este contador sirve para ver cuantas fichas hay en la mesa, si hay 49, significa que la tabla esta llena
- if (iFichas==49) //si la tabla esta llena se acaba el juego
- {
- cout << "La tabla esta llena, nadie gana." << endl; //si la tabla esta llena empatan los jugadores y nadie gana
- break;
- }
- cout << "Quieres seguir jugando? (s/S o n/N)" << endl; //pregunta si quieres seguir jugando
- cin >> cChoice;
- if (cChoice=='n' || cChoice=='N') //si la respuesta es no ahi se acaba el juego
- break;
- while (cChoice!='s' && cChoice !='S' && cChoice != 'n' && cChoice != 'N') //mientras que la respuesta no sea 'si' o 'no', va a seguir preguntando
- {
- cout << "Ingrese 's', 'S', 'n', o 'N'" << endl;
- cin >> cChoice;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement