Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //TRABAJO COLABORATIVO
- //Curso 2015/2016
- //Lenguaje utilizado: Principalmente C++
- //Fecha de incialización de creación del proyecto : 07/12/2015
- //Miembros del grupo:
- // -Romero García, Miguel :
- // -E-mail: mikiroga33@gmail.com
- // -García Villalba, Fernando :
- // -E-mail: fernillalba@gmail.com
- // -Castro Mínguez, Carlos :
- // -E-mail: karloskastro12@gmail.com
- //Lenguaje utilizado: Principalmente C++
- //Historial de progreso:
- // v1.0 juega contra otro jugador
- // v2.0 correccion de errores
- // v3.0 juega contra la maquina
- //Known issues:
- // -Cuando metas una cadena de texto en una variable de tipo int, el programa peta.
- //Funciona:
- // -Windows XP
- // -Windows 7
- // -Windows 8
- // -Windows 10
- //To do list:
- // -Hacer un bucle para volver a jugar
- // -Crear un marcador
- #include <cstdio>
- #include <cstdlib>
- #include <iostream>
- #include <string>
- #include <vector>
- #include <ctime>
- using namespace std;
- void menu(void);
- void bienvenida(void);
- void bienvenida2(void);
- int maquina(vector<int>& vi, int jugador);
- void filling(char ch, int nn);
- void frame(string title);
- void limpiar_pantalla(void);
- void tablero(vector<int>& vi);
- int tirada(vector<int>& vi, int jugador);
- void llenar(vector<int>& vi);
- string nombre1;
- string nombre2;
- void despedida(void);
- int main()
- {
- srand(time(NULL));
- frame(" TRES EN RAYA ");
- menu();
- despedida();
- }
- void menu(){
- string opcion;
- vector<int> vi;
- llenar(vi);
- tablero(vi);
- int comprobar=1;
- int jugador = 1;
- cout << "" << endl;
- cout << "1-Jugador contra jugador" << endl;
- cout << "2-Jugador contra maquina" << endl;
- cout << "0-Salir" << endl;
- cin >> opcion;
- if (opcion == "1") {
- cout << "\n\n";
- bienvenida();
- while (comprobar != 3) {
- comprobar = tirada(vi, jugador);
- jugador = comprobar;
- }
- }
- if (opcion == "2") {
- cout << "\n\n";
- bienvenida2();
- while (comprobar != 3) {
- comprobar = maquina(vi, jugador);
- jugador = comprobar;
- }
- }
- if (opcion == "0") {
- despedida();
- exit(EXIT_SUCCESS);
- }
- }
- void bienvenida(void)
- {
- cout << "Bienvenido al tres en raya, espero que te diviertas mucho conmigo." << endl;
- cout << " Introduce el nombre del jugador 1: ";
- cin >> nombre1;
- fflush(stdin);
- cout << " Introduce el nombre del jugador 2: ";
- cin >> nombre2;
- fflush(stdin);
- cout << " A continuacion elige la primera casilla \n" << endl;
- }
- void bienvenida2(void)
- {
- cout << "Bienvenido al tres en raya, espero que te diviertas mucho conmigo." << endl;
- cout << " Introduce el nombre del jugador: ";
- cin >> nombre1;
- fflush(stdin);
- }
- void filling(char ch, int nn)
- {
- for (int i = 0; i<nn; i++) {
- cout << ch;
- }
- cout << '\n';
- }
- void frame(string title)
- {
- cout << "\n";
- cout << "\t\t\t ";
- filling('=', title.size() + 2);
- cout << "\t\t\t º" << title << "º\n";
- cout << "\t\t\t ";
- filling('=', title.size() + 2);
- cout << '\n';
- }
- void limpiar_pantalla(void)
- {
- system("cls");
- }
- void tablero(vector<int>& vi)
- {
- cout << "\n";
- printf("\t\t\t +-----------+");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
- printf("\t\t\t +-----------+");
- cout << "\n" << endl;
- }
- int tirada(vector<int>& vi, int jugador)
- {
- {
- int empate = 0, ganar = 0;
- char tiro, marca;
- if (jugador == 1)
- {
- marca = 'X';
- cout << "Turno de " << nombre1 << endl;
- cout << "\nDonde deseas colocar tu ficha: ";
- fflush(stdin);
- }
- else {
- marca = 'O';
- cout << "Turno de " << nombre2 << endl;
- cout << "\nDonde deseas colocar tu ficha: ";
- }
- fflush(stdin);
- cin >> tiro;
- if (tiro == '1' && vi[0] == '1') { vi[0] = marca; }
- else if (tiro == '2' && vi[1] == '2') { vi[1] = marca; }
- else if (tiro == '3' && vi[2] == '3') { vi[2] = marca; }
- else if (tiro == '4' && vi[3] == '4') { vi[3] = marca; }
- else if (tiro == '5' && vi[4] == '5') { vi[4] = marca; }
- else if (tiro == '6' && vi[5] == '6') { vi[5] = marca; }
- else if (tiro == '7' && vi[6] == '7') { vi[6] = marca; }
- else if (tiro == '8' && vi[7] == '8') { vi[7] = marca; }
- else if (tiro == '9' && vi[8] == '9') { vi[8] = marca; }
- else {
- cerr << "Error! Introduce otro valor por favor\n" << endl;
- system("pause");
- limpiar_pantalla();
- tablero(vi);
- tirada(vi, jugador);
- }
- limpiar_pantalla();
- tablero(vi);
- if (vi[0] == 'X' || vi[0] == 'O') {
- if (vi[1] == vi[0] && vi[2] == vi[0])
- {
- ganar = 1;
- }
- if (vi[3] == vi[0] && vi[6] == vi[0])
- {
- ganar = 1;
- }
- }
- if (vi[4] == 'X' || vi[4] == 'O') {
- if (vi[0] == vi[4] && vi[8] == vi[4])
- {
- ganar = 1;
- }
- if (vi[1] == vi[4] && vi[7] == vi[4])
- {
- ganar = 1;
- }
- if (vi[3] == vi[4] && vi[5] == vi[4])
- {
- ganar = 1;
- }
- if (vi[2] == vi[4] && vi[6] == vi[4])
- {
- ganar = 1;
- }
- }
- if (vi[8] == 'X' || vi[8] == 'O') {
- if (vi[5] == vi[8] && vi[2] == vi[8])
- {
- ganar = 1;
- }
- if (vi[6] == vi[8] && vi[7] == vi[8])
- {
- ganar = 1;
- }
- }
- if ((vi[0] != '1' && vi[1] != '2' && vi[2] != '3' &&
- vi[3] != '4' && vi[4] != '5' && vi[5] != '6' &&
- vi[6] != '7' && vi[7] != '8' && vi[8] != '9') &&
- ganar == 0) {
- empate = 1;
- }
- if (ganar == 1 || empate == 1)
- {
- limpiar_pantalla();
- if (ganar == 1 && jugador==1)
- {
- cout << "\n Enhorabuena!! " << nombre1 << " Ha ganado!!\n" << endl;
- printf("\t\t\t +-----------+");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
- printf("\t\t\t +-----------+");
- }
- if (ganar == 1 && jugador==2)
- {
- cout << "\n Enhorabuena!! " << nombre2 << " Ha ganado!!\n" << endl;
- printf("\t\t\t +-----------+");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
- printf("\t\t\t +-----------+");
- }
- if (empate == 1)
- {
- cout << "\n " << nombre1 << " y " << nombre2 << " Han empatado! \n" << endl;
- printf("\t\t\t +-----------+");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
- printf("\t\t\t +-----------+");
- }
- }
- if (ganar == 1 || empate == 1) {
- return 3;
- }
- if (jugador == 2) {
- return 1;
- }
- if (jugador == 1) {
- return 2;
- }
- }
- }
- void despedida() {
- cout << "\n Gracias por jugar\n Hasta pronto\001\n";
- }
- void llenar(vector<int>& vi) {
- int one = '1';
- for (int i = 0;i<9;i++) {
- vi.push_back(one);
- one++;
- }
- }
- int maquina(vector<int>& vi, int jugador) {
- int empate = 0, ganar = 0;
- char marca;
- int tiro;
- string ganador;
- while (ganar!=1 || empate!=1){
- int romper = 1;
- if (jugador==1){
- cout << nombre1 <<" es tu turno: ";
- marca = 'X';
- while (romper == 1) {
- cin >> tiro;
- if (vi[tiro-1] != 'X' && vi[tiro-1] != 'O') {
- vi[tiro-1] = marca;
- romper = 2;//Cuando metas la marca en una posicion donde no haya marca sale del bucle
- }
- else{cout << "Valor incorrecto, introduce un nuevo valor";}
- }
- }
- if (jugador == 2) {
- marca = 'O';
- tiro = rand() % 9;
- while (romper == 1) {
- if (vi[tiro] != 'X' && vi[tiro] != 'O') {
- vi[tiro] = marca;
- romper = 2;
- }
- tiro = rand() % 9;
- }
- }
- limpiar_pantalla();
- tablero(vi);
- if (vi[0] == 'X' || vi[0] == 'O') {
- if (vi[1] == vi[0] && vi[2] == vi[0])
- {
- ganar = 1;
- }
- if (vi[3] == vi[0] && vi[6] == vi[0])
- {
- ganar = 1;
- }
- }
- if (vi[4] == 'X' || vi[4] == 'O') {
- if (vi[0] == vi[4] && vi[8] == vi[4])
- {
- ganar = 1;
- }
- if (vi[1] == vi[4] && vi[7] == vi[4])
- {
- ganar = 1;
- }
- if (vi[3] == vi[4] && vi[5] == vi[4])
- {
- ganar = 1;
- }
- if (vi[2] == vi[4] && vi[6] == vi[4])
- {
- ganar = 1;
- }
- }
- if (vi[8] == 'X' || vi[8] == 'O') {
- if (vi[5] == vi[8] && vi[2] == vi[8])
- {
- ganar = 1;
- }
- if (vi[6] == vi[8] && vi[7] == vi[8])
- {
- ganar = 1;
- }
- }
- if ((vi[0] != '1' && vi[1] != '2' && vi[2] != '3' &&
- vi[3] != '4' && vi[4] != '5' && vi[5] != '6' &&
- vi[6] != '7' && vi[7] != '8' && vi[8] != '9') &&
- ganar == 0) {
- empate = 1;
- }
- if (ganar == 1 || empate == 1)
- {
- limpiar_pantalla();
- if (ganar == 1)
- {
- if (jugador == 1) { ganador = nombre1; }
- if (jugador == 2) { ganador = "Maquina"; }
- cout << "\n Gano " << ganador << endl;
- system("pause");
- printf("\t\t\t +-----------+");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
- printf("\t\t\t +-----------+");
- }
- if (empate == 1)
- {
- cout << "\n " << " Empate! \n" << endl;
- system("pause");
- printf("\t\t\t +-----------+");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
- printf("\t\t\t |---+---+---|");
- printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
- printf("\t\t\t +-----------+");
- }
- }
- if (ganar == 1 || empate == 1) {
- return 3;
- }
- if (jugador == 2) {
- return 1;
- }
- if (jugador == 1) {
- return 2;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement