Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: kerkox en Noviembre 03, 2013, 11:04:22 pm

Título: JUEGO EN C++ TRIQUI
Publicado por: kerkox en Noviembre 03, 2013, 11:04:22 pm
Hola amigos, he esta practicando el lenguaje c++ y pues he hecho un juego de triqui en verdad es apasionante escribir codigo, este lo he hecho gracias a que un amigo de la universidad me recomendo hacer cosas basicas para poder entender otras similares, bueno en fin lo he logrado y si tienen algun comentario o alguna recomendacion sobre como mejorar el codigo.

Bueno el juego esta diseñado de forma que la entrada para seleccionar la posicion se debe contar las casillas o posiciones debes de contar de derecha a izquierda ,
aqui un ejemplo con los numeros de las posiciones:

1    2     3
4    5     6
7    8     9

asi es como se deben entrar las posiciones para jugar
qui el codigo
bueno puede que sea un poco largo pero alli esta si alguien me puede dar una idea de como hacerlo mas corto es bienvenida
 
Código: [Seleccionar]
#include <iostream>
#include <stdlib.h>

using namespace std;

 string vacio[3][3] = {"-","-","-","-","-","-","-","-","-"};

    int turnos = 0;
    int i;
    int j;
    int k;
    int info=0;
    int info2=0;
    int x;
    int y;
    int gana=0;
    int replay=0;


 void tablerolimpio()
    {
        for (i=0; i <3; i++)
            {
                vacio[i][0] = "-";
            }

        for (j=0; j<3;j++)
            {
                vacio[j][1] = "-";
            }

        for(k=0; k<3; k++)
            {
                vacio[k][2] = "-";
            }
    }
//aqui la evaluacion de quien gana
 void ganador()
    {
        if((gana==0)or (gana==3))
            {
                for(int b=0; b <3;b++)
                    if ((vacio[0][b]=="X")&&(vacio[1][b]=="X")&&(vacio[2][b]=="X"))
                        {
                            gana=1;
                        }

                for(int b=0; b <3; b++)
                    if ((vacio[b][0]=="X")&&(vacio[b][1]=="X")&&(vacio[b][2]=="X"))
                        {
                            gana=1;
                        }

                if ((vacio[0][0]=="X")&&(vacio[1][1]=="X")&&(vacio[2][2]=="X"))
                    {
                        gana=1;
                    }

                if ((vacio[0][2]=="X")&&(vacio[1][1]=="X")&&(vacio[2][0]=="X"))
                    {
                        gana=1;
                    }

                for(int z=0; z <3;z++)
                    if ((vacio[0][z]=="O")&&(vacio[1][z]=="O")&&(vacio[2][z]=="O"))
                        {
                            gana=2;
                        }

                for(int z=0; z <3; z++)
                    if ((vacio[z][0]=="O")&&(vacio[z][1]=="O")&&(vacio[z][2]=="O"))
                        {
                            gana=2;
                        }

                if ((vacio[0][0]=="O")&&(vacio[1][1]=="O")&&(vacio[2][2]=="O"))
                    {
                        gana=2;
                    }

                if ((vacio[0][2]=="O")&&(vacio[1][1]=="O")&&(vacio[2][0]=="O"))
                    {
                        gana=2;
                    }
            }
    }

 // este muestra el tablero
 void tablero()
    {
        cout << "esto es un juego de triki" << endl;
        cout << "__________________________" << endl;
        cout << "" << endl;
        cout << "para jugar debes de ingresar un numero " << endl;
        cout << "entre 1 y 9, la primera ubicacion es 1 " << endl;
        cout << "y se cuenta hacia la derecha "<< endl;
        cout << endl;

        for (i=0; i <3; i++)
            {
                cout << "|"  << vacio[i][0] << "|" << "\t";
            }
        cout << endl;

        for (j=0; j<3;j++)
            {
                cout << "|" << vacio[j][1] << "|" << "\t";
            }
        cout << endl;

        for(k=0; k<3; k++)
            {
                cout << "|" << vacio[k][2]<< "|" <<"\t" ;
            }
        cout << endl;
    }

// este va ser la funcion la cual hace que se realice la jugada
 void turno1(int x)
    {
        if ((x>9)or(x<1))
            {
                cout << "error debes ingresar un numero entre 1 y 9"<< endl;
                cout <<"porfavor vuelve a intenarlo"<< endl;
                info2=0;
                turnos--;
                cin >> x;
                turno1(x);
            }
        else do
            {
                for(int a=1; a <4; a++)
                    if (x == a)
                        {
                            if((vacio[a-1][0] == "-")&&(info2==0))
                                {
                                    vacio[a-1][0] = "X";
                                }
                            else if ((vacio[a-1][0]=="O")or(vacio[a-1][0] == "X"))
                                {
                                    info2=1;
                                }
                        }

                for(int a=4; a<7; a++)
                    if (x == a)
                        {
                            if((vacio[a-4][1] == "-")&&(info2==0))
                                {
                                    vacio[a-4][1] = "X";
                                }
                            else if ((vacio[a-4][1]=="O")or(vacio[a-4][1] == "X"))
                                {
                                    info2=1;
                                }
                        }

                for(int a=7; a<10; a++)
                    if (x == a)
                        {
                            if ((vacio[a-7][2] == "-")&&(info2==0))
                                {
                                    vacio[a-7][2] = "X";
                                }
                            else if ((vacio[a-7][2]=="O")or(vacio[a-7][2] == "X"))
                                {
                                    info2=1;
                                }
                        }

            }while(!(x<10 && x>=1));
        system("cls");
        //system("clear"); //linux
        turnos++; // esta variable sirve de control de turnos

        if (info2==1)
            {
                system("cls");
                //system("clear");
                tablero(); //muestra el tablero con las jugadas que se llevan

                cout << endl;
                cout <<"Jugador 1"<< endl;
                cout <<"esta poscision ya se encuentra ocupada"<< endl;
                cout <<"porfavor vuelve a intenarlo"<< endl;
                info2=0;//para el reintento de una ubicacon
                turnos--; //para no incrementar el turno erroneamente ya que se vuelve a intentar
                cin >> x;
                turno1(x);
            }
        else
            tablero();

    }

 // esta es la funcion la cual recibe la jugada del jugador 2
 void  turno2(int y)
    {
        if ((y>9)or(y<1)) // aqui se verfica el rango del valor que se debe ingresar
            {
                cout << "error debes ingresar un numero entre 1 y 9"<< endl;
                cout <<"porfavor vuelve a intenarlo"<< endl;
                info=0;
                turnos--;//para evitar el error de incremento de los turnos
                cin >> y;
                turno2(y);

            }
        else do
            {

 // esta funcion verifica en que posicon va a quedar el turno
 // del jugador 2 si esta esta ocupada por el jugador 1
 // entonces da el mensaje de la poscision esta ocupada

                for(int a=1; a <4; a++)
                    {
                        if (y == a)
                            {
                                if((vacio[a-1][0] == "-") &&(info == 0))
                                    {
                                        vacio[a-1][0] = "O";
                                    }

                                else if((vacio[a-1][0] == "X")or(vacio[a-1][0] == "O"))
                                    {
                                        info = 1;
                                    }
                            }
                    }

                for(int a=4; a<7; a++)
                    {
                        if (y == a)
                            {
                                if((vacio[a-4][1] == "-")&&(info == 0))
                                    {
                                        vacio[a-4][1] = "O";
                                    }

                                else if ((vacio[a-4][1] == "X")or(vacio[a-4][1] == "O"))
                                    {
                                        info = 1;
                                    }
                            }
                    }
                for(int a=7; a<10; a++)
                    {
                        if (y == a)
                            {
                                if((vacio[a-7][2] == "-")&&(info == 0))
                                    {
                                        vacio[a-7][2] = "O";
                                    }

                                else if ((vacio[a-7][2] == "X")or(vacio[a-7][2] == "O"))
                                    {
                                        info = 1;
                                    }
                            }
                    }
            }
        while(!(y<10 && y>=1));
        system("cls");
        // system("clear") // para linux
        turnos++;
        if (info == 1)
            {
                system("cls");
                tablero();

                cout << endl;
                cout << "Jugador 2" << endl;
                cout <<"esta poscision ya se encuentra ocupada"<< endl;
                cout <<"porfavor vuelve a intenarlo"<< endl;
                info=0;
                turnos--;
                cin >> y;
                turno2(y);
            }
        else
            tablero();
    }

 void limpiar()
    {
        turnos=0;
        gana=0;
        tablerolimpio();
    }

//***********************************************
//FUNCION PRINCIPAL
 int main()
    {
        rejuego: //esta variable es para comenzar de nuevo el juego

    while (turnos < 9)
        {
            system("cls");
            //system("clear") //para linux
            tablero();

            cout << "" << endl;
            cout << "Turno del jugador 1" << endl;
            cout << "porfavor introduce la ubicacion" << endl;

            cin >> x;
            cin.get();
            turno1(x);
            ganador();// aqui se evalua el tablero para saber quien gana

            if(gana==1)
                {
                    cout <<"GANA EL JUGADOR 1"<< endl;
                    cin.get();
                    cout << "Juego terminado" << endl;
                    cin.get();
                    cout << "desea jugar de nuevo" << endl;
                    cout << "1 - SI " << endl;
                    cout << "2 - NO " << endl;
                    cin >> replay;

                    if(replay==1)
                        {
                            limpiar(); // esta funcio reinicia las variables de verificacion
                            goto rejuego;
                        }
                    else if (replay ==2)
                        {
                            return 0;
                        }
                    return 0;
                }

            if (turnos<=8) // este evalua si ya se terminaron los turnos
                {

                    cout << "" <<endl;
                    cout << "ahora es el turno del juador 2"<< endl;
                    cout << "introduce la posicion " << endl;
                    cin >> y;
                    cin.get();
                    turno2(y);
                    ganador();

                    if (gana==2)
                        {
                            cout << endl;
                            cout << "gana el jugador 2"<< endl;
                            cin.get();
                            cout << "juego terminado" << endl;
                            cin.get();
                            cout << "desea jugar de nuevo" << endl;
                            cout << "1 - SI " << endl;
                            cout << "2 - NO " << endl;
                            cin >> replay;

                            if(replay==1)
                                {
                                    limpiar();// esta funcio reinicia las variables de verificacion
                                    goto rejuego;
                                }
                            else if (replay ==2)
                                {
                                    return 0;
                                }
                            return 0;
                        }
                }
            ganador();
        }


    if(gana==0)
        {
            cout << "NADIE GANA" << endl;
            cout << "juego terminado"<< endl;
            cin.get();
            cout << "desea jugar de nuevo" << endl;
            cout << "1 - SI " << endl;
            cout << "2 - NO " << endl;
            cin >> replay;

            if(replay==1)
                {
                    limpiar(); // esta funcio reinicia las variables de verificacion
                    goto rejuego;
                }
            else if (replay ==2)
                {
                    cout << "fin" << endl;
                    cin.get();
                    return 0;
                }

            return 0;
        }
    cout << "fin" << endl;
    cin.get();

    return 0;
    } 
Título: Re:JUEGO EN C++ TRIQUI
Publicado por: mundonuevo en Noviembre 20, 2019, 11:26:20 pm
la verdad mi parece muy, segui me ha gustado, yo soy nuevo en este tema no tengo mucha ideas y vistos unos juegos en esa pagina :
https://protube2.com/juegos/ (https://protube2.com/juegos/) pero no se como alguien me puede ayudar.