Skip to content

Instantly share code, notes, and snippets.

@raarce
Created November 30, 2015 22:25
Show Gist options
  • Select an option

  • Save raarce/53d629c3d923364ea7f4 to your computer and use it in GitHub Desktop.

Select an option

Save raarce/53d629c3d923364ea7f4 to your computer and use it in GitHub Desktop.
Código tic tac toe estilo procedure oriented
#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