lunes, 13 de junio de 2016

4 en Linea en C++

Buenas, en esta ocasión les comparto el juego de 4 en Linea que hice durante el primer semestre de mi carrera (Ingeniería de Sistemas). Espero que les sea de utilidad el código.

Básicamente el juego consiste  en introducir por turnos fichas en un tablero generalmente de tamaño 6x7  con el objetivo de alinear cuatro fichas del mismo color tanto vertical,horizontal o diagonalmente para así poder ganar. Para mayor información, les dejo el link de de nuestra aclamada wikipedia ( 4 en linea).


Bueno cualquier sugerencia sera bien recibida, espero que me perdonen las pequeñas fallas o faltantes como es el hecho de que no tiene interfaz gráfica. Ya sin mas preámbulos les dejo el juego


#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
int auxiliar,cont,c;
char r='.',x,o,tablero[6][7];
// Seleccionado de caracteres
do
{
cout<<"Jugador 1, ingrese caracter con el que va a jugar: ";
cin>>x;
cout<<"Jugador 2, ingrese caracter con el que va a jugar: ";
cin>>o;
cout<<endl;
}while(x==o);
// Llenado inicial del tablero
for(int f=0;f<6;f++)
    {
        for(int c=0;c<7;c++)
        {
            tablero[f][c]=r;
        }
    }
//Cantidad maxima de turnos que se pueden jugar
    for(int a=0;a<21;a++)
    {
// Ciclo para aceptar solo valores permitidos
    do
     {
// Jugada del jugador 1
     cout<<"Donde va a colocar su ficha jugador 1: ";
     cin>>c;
     cout<<endl;
     }while(c<1||c>7);
     cout<<endl;
// Ciclo cuando columna este llena
 while(tablero[0][c-1]!=r)
{
    do
    {
    cout<<"Columna llena o numero invalido"<<endl<<"Vuelva a colocar la ficha: ";
    cin>>c;
    cout<<endl;
    }while(c<1||c>7);
}
cout<<endl;
// Colocacion de la ficha jugador 1
tablero[0][c-1]=x;
// Codigo para bajar ficha jugador 1
 for(int f=0;f<5;f++)
    {
    if(tablero[f+1][c-1]==r)
    {
    auxiliar= tablero[f][c-1];
    tablero[f][c-1]=tablero[f+1][c-1];
    tablero[f+1][c-1]=auxiliar;
    }
}
//Llenado del tablero cuando jugador 1 coloca la ficha
for(int f=0;f<6;f++)
    {
        for(int c=0;c<7;c++)
        {
            cout<<tablero[f][c]<<"   ";
        }
        cout<<endl;
        cout<<endl;
    }
// Ganador jugador 1 vertical
for(int f=0;f<6;f++)
{
    if(tablero[f][c-1]==x)
    {
        cont++;
    }else
    {
        cont=0;
    }
    if(cont==4)
    {
        cout<<"Ganaste jugador 1"<<endl;
        cout<<endl;
        system("pause");
        return 0;

    }
}
cont=0;
//Ganador jugador 1 horizontal
for(int i=0;i<6;i++)
{
  for(int j=0;j<7;j++)
{
    if(tablero[i][j]==x)
    {
        cont++;
    }else
    {
        cont=0;
    }
    if(cont==4)
    {
        cout<<"Ganaste jugador 1"<<endl;
        cout<<endl;
        system("pause");
        return 0;
    }
}
}
cont=0;
// Ganador jugador 1 Diagonal a la derecha
for(int i=0;i<6;i++)
{
    for(int j=0;j<7;j++)
    {

            while(tablero[i][j]==x&&i<6&&j<7)
            {
                cont++;
                i++;
                j++;

            if(cont==4)
            {
                cout<<"Ganaste jugador 1"<<endl;
                cout<<endl;
                system("pause");
                return 0;
            }
            }
            cont=0;
    }
}
//Ganador jugador 1 diagonal a la izquierda
for(int i=0;i<6;i++)
{
    for(int j=0;j<7;j++)
    {

            while(tablero[i][j]==x&&i<6&&j<7)//||tablero[i++][j--]==x)
            {
                cont++;
                i++;
                j--;
            if(cont==4)
            {
                cout<<"Ganaste jugador 1"<<endl;
                cout<<endl;
                system("pause");
                return 0;
            }
            }
            cont=0;
    }
}
//Jugada del jugador 2
     do
     {
     cout<<"Donde va a colocar su ficha jugador 2: ";
     cin>>c;
     cout<<endl;
     } while(c<1||c>7);
    cout<<endl;
//Ciclo cuando este llena la columna
 while(tablero[0][c-1]!=r)
{
    do
    {
    cout<<"Columna llena o numero invalido"<<endl<<"Vuelva a colocar la ficha: ";
    cin>>c;
    cout<<endl;
    }while(c<1||c>7);
}
cout<<endl;
//Colocacion de la ficha jugador 2
tablero[0][c-1]=o;
// Codigo para bajar ficha jugador 2
 for(int f=0;f<5;f++)
    {
    if(tablero[f+1][c-1]==r)
    {
    auxiliar= tablero[f][c-1];
    tablero[f][c-1]=tablero[f+1][c-1];
    tablero[f+1][c-1]=auxiliar;
    }
}
// Llenado del tablero cuando jugador 2 coloca la ficha
for(int f=0;f<6;f++)
    {
        for(int c=0;c<7;c++)
        {
            cout<<tablero[f][c]<<"   ";
        }
        cout<<endl;
        cout<<endl;
    }
// Ganador jugador 2 vertical
for(int f=0;f<6;f++)
{
    if(tablero[f][c-1]==o)
    {
        cont++;
    }else
    {
        cont=0;
    }
    if(cont==4)
    {
        cout<<"Ganaste jugador 2"<<endl;
        cout<<endl;
        system("pause");
        return 0;
    }
}
cont=0;
//Ganaste jugador 2 horizontal
for(int i=0;i<6;i++)
{
  for(int j=0;j<7;j++)
{
    if(tablero[i][j]==o)
    {
        cont++;
    }else
    {
        cont=0;
    }
    if(cont==4)
    {
        cout<<"Ganaste jugador 2"<<endl;
        cout<<endl;
        system("pause");
        return 0;
    }
}
}
cont=0;
// Ganador jugador 2 Diagonal a la derecha
for(int i=0;i<6;i++)
{
    for(int j=0;j<7;j++)
    {

            while(tablero[i][j]==o&&i<6&&j<6)//||tablero[i++][j--]==x)
            {
                cont++;
                i++;
                j++;
            if(cont==4)
            {
                cout<<"Ganaste jugador 2"<<endl;
                cout<<endl;
                system("pause");
                return 0;
            }
            }
            cont=0;
    }
}
//Ganador jugador 1 diagonal a la izquierda
for(int i=0;i<6;i++)
{
    for(int j=0;j<7;j++)
    {

            while(tablero[i][j]==o&&i<6&&j<7)//||tablero[i++][j--]==x)
            {
                cont++;
                i++;
                j--;
            if(cont==4)
            {
                cout<<"Ganaste jugador 2"<<endl;
                cout<<endl;
                system("pause");
                return 0;
            }
            }
            cont=0;
    }}
}
// Caso en el cual se llena el tablero y nadie gana
cout<<"Nadie gano este juego"<<endl;
cout<<endl;
    return 0;
}


Pd: Son libres de utilizar el código como les plazca. Aquí el link por si lo quieren descargar de GitHub.

Bueno esto es todo por hoy , hasta la próxima.


No hay comentarios:

Publicar un comentario