Created
November 30, 2015 22:25
-
-
Save raarce/53d629c3d923364ea7f4 to your computer and use it in GitHub Desktop.
Código tic tac toe estilo procedure oriented
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <iostream> | |
| #include <string> | |
| #include <cassert> | |
| using namespace std; | |
| #include <string> | |
| #include <iostream> | |
| using namespace std; | |
| void printTablero(const string &st) { | |
| cout << " " << st[0] << " | " << st[1] << " | " << st[2] << endl | |
| << "-----------" << endl | |
| << " " << st[3] << " | " << st[4] << " | " << st[5] << endl | |
| << "-----------" << endl | |
| << " " << st[6] << " | " << st[7] << " | " << st[8] << endl << endl; | |
| } | |
| /************************** | |
| * Natalia Pacheco * | |
| * Nicolás Torres * | |
| **************************/ | |
| char estadoJuego (string tablero, char jugador){ | |
| for (int i = 0; i < 3; i++){ | |
| if (tablero [i*3] == jugador && | |
| tablero [i*3 + 1] == jugador && | |
| tablero [i*3 + 2] == jugador) | |
| return jugador; | |
| if (tablero [i]== jugador && | |
| tablero [i+3]==jugador && | |
| tablero [i+6]==jugador) | |
| return jugador; | |
| } | |
| if (tablero [0]== jugador && tablero[4] == jugador && tablero[8] == jugador){ | |
| return jugador; | |
| } | |
| if (tablero [2]== jugador && tablero[4] == jugador && tablero[6] == jugador){ | |
| return jugador; | |
| } | |
| if (tablero.find(' ') == string::npos) // | |
| return 'E'; | |
| return 'C'; | |
| } | |
| int conversion(int fila, int col) { | |
| return (fila -1) * 3 + col - 1; | |
| } | |
| /************************** | |
| * Nicole Rosario * | |
| * Walter Baez * | |
| **************************/ | |
| bool vJugada(string tablero, int fila, int col){ | |
| if(fila >= 1 && fila <= 3 && col >= 1 && col <= 3) | |
| return tablero[ conversion(fila, col) ] == ' '; | |
| else | |
| return false; | |
| } | |
| /************************** | |
| * Gabriel Rodríguez * | |
| * Julio Rivera * | |
| **************************/ | |
| void test_vJugada() { | |
| assert(vJugada("X 0X ",0,1) == false); | |
| assert(vJugada(" ",1,4) == false); | |
| assert(vJugada("X00XX00 ",2,2) == false); | |
| assert(vJugada(" X0 ",1,1) == true); | |
| cout << "Paso todas las pruebas"; | |
| } | |
| /************************** | |
| * Alexis Figueroa * | |
| * David Ortíz * | |
| **************************/ | |
| void test_estadoJuego(){ | |
| assert(estadoJuego("0X0X0X0XX", 'X') == 'E'); | |
| assert(estadoJuego("X0X0XX0X0", 'X') == 'E'); | |
| assert(estadoJuego("X0X 0X0 X", 'X') == 'X'); | |
| assert(estadoJuego("X0X X 00X", 'X') == 'X'); | |
| assert(estadoJuego("X000XXX0X", 'X') == 'X'); | |
| assert(estadoJuego("0 XX0 X 0", '0') == '0'); | |
| assert(estadoJuego("0X 00X0XX", '0') == '0'); | |
| assert(estadoJuego("X 0 0 X", '0') == 'C'); | |
| assert(estadoJuego("X0XX X0 0", 'X') == 'C'); | |
| cout << "La funcion estadoJuego paso todas las pruebas!!!" << endl ; | |
| } | |
| /************************** | |
| * Kevin Román * | |
| * José Martínez * | |
| **************************/ | |
| void test_conversion(){ | |
| assert(conversion(1,1) == 0); | |
| assert(conversion(1,3) == 2); | |
| assert(conversion(2,1) == 3); | |
| assert(conversion(2,2) == 4); | |
| assert(conversion(2,3) == 5); | |
| assert(conversion(3,1) == 6); | |
| assert(conversion(3,2) == 7); | |
| assert(conversion(3,3) == 8); | |
| cout << "La funcion conversion paso las pruebas!!!" << endl; | |
| } | |
| /****************** | |
| * Luis Martínez * | |
| * Sergio Cepeda * | |
| ******************/ | |
| int main() | |
| { | |
| string tablero; | |
| int fila, columna; | |
| char ganador, jugador; | |
| int seguirJugando; | |
| test_vJugada(); | |
| test_conversion(); | |
| test_estadoJuego(); | |
| do{ | |
| tablero = " "; | |
| jugador = 'X'; | |
| do{ | |
| do{ | |
| cout << "Entrar jugada" << endl; | |
| cout << "Formato de la jugada es fila columna." << endl; | |
| cin >> fila >> columna; | |
| } while( vJugada(tablero, fila, columna) == false ); | |
| tablero[conversion(fila, columna)] = jugador; | |
| printTablero(tablero); | |
| ganador = estadoJuego(tablero, jugador); | |
| jugador = jugador == 'X' ? '0' : 'X'; | |
| }while(ganador == 'C'); | |
| if (ganador == 'E'){ | |
| cout << "Empate" << endl; | |
| } | |
| else{ | |
| cout << " El ganador es " << ganador << endl; | |
| } | |
| cout << "Jugar otra vez?" << endl; | |
| cout << "1 = si, 0 = no"<< endl; | |
| cin >> seguirJugando; | |
| }while(seguirJugando == 1); | |
| return 0; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment