juegos sencillos para la consola de windows

Encuentra personas para llevar adelante tu proyecto, muestra el progreso de esos proyectos y participa en competencias grupales.

Moderador: Dokan

juegos sencillos para la consola de windows

Notapor migueleitorone » Vie Sep 03, 2010 2:33 pm

Como ya comente en otro post, me gustaria hacer una pequeña (o gran) recopilacion de ejercicios enfocados a la programacion de videojuegos para la consola de windows, tanto para aprender yo, como para los que les pueda servir, asi que sin mas:
3 en linea

Ejercicio 1: Crea un menu para el juego, con las opciones de 1 jugador, multijugador y salir.
Imagen

Posible solucion:
Código: Seleccionar todo
#include <stdio.h>
#include <stdlib.h>

int main()
{
   char opcion_menu;
   int volver_al_menu = 0;
   int opcion_incorrecta = 0;

   do
   {
      
      printf("3 EN LINEA\n\na) Juego individual\nb) Juego multijugador\nc) Salir\n\Elige una opcion: ");
      fflush(stdin);
      scanf("%c", &opcion_menu);
      printf("\n");

      switch(opcion_menu)
      {
      case 'a':
      case 'A':
         printf("Has escojido juego individual\n");
         do
         {
            opcion_incorrecta = 0;
            printf("Volver al menu(no para salir)?(s|n):");
            fflush(stdin);
            scanf("%c", &opcion_menu);
            printf("\n");

            switch(opcion_menu)
            {
            case 's':
            case 'S':
               volver_al_menu = 1;
               break;
            case 'n':
            case 'N':
               exit(EXIT_SUCCESS);
               break;
            default:
               opcion_incorrecta = 1;
               printf("Opcion incorrecta.\n");
               break;
            }
         }while(opcion_incorrecta == 1);
         break;
      
      case 'b':
      case 'B':
         printf("Has escojido juego multijugador\n");
         do
         {
            opcion_incorrecta = 0;
            printf("Volver al menu(no para salir)?(s|n):");
            fflush(stdin);
            scanf("%c", &opcion_menu);
            printf("\n");

            switch(opcion_menu)
            {
            case 's':
            case 'S':
               volver_al_menu = 1;
               break;
            case 'n':
            case 'N':
               exit(EXIT_SUCCESS);
               break;
            default:
               opcion_incorrecta = 1;
               printf("Opcion incorrecta.\n");
               break;
            }
         }while(opcion_incorrecta == 1);
         break;

      case 'c':
      case 'C':
         exit(EXIT_SUCCESS);
         break;
      default:
         opcion_incorrecta = 1;
         printf("Opcion incorrecta\n");
         break;

      }
   }while(volver_al_menu == 1 || opcion_incorrecta == 1);
   return 0;
}


Ejercicio 2:
Crea el modo para dos jugadores.
Imagen
Imagen

Posible Solucion:
Código: Seleccionar todo
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void juego_multijugador(void)
{
   char opcion_juego;
   char nombre_jugador1[30];
   char nombre_jugador2[30];
   int quien_juega = 1; //empieza el jugador 1
   int quien_gana = 0; //0 = no hay ganador, 3 = empate
   int hay_jugadas = 1;
   int casilla_usada = 1;
   char tablero[3][3]=
   { '1', '2', '3',
     '4', '5', '6',
     '7', '8', '9' };

   ///////////PEDIR NOMBRES///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   
   printf("Jugador 1, escribe tu nombre... o tu apellido, o lo que te salga...: ");
   fflush(stdin);
   gets(nombre_jugador1);
   printf("Jugador 2, ya sabes: ");
   fflush(stdin);
   gets(nombre_jugador2);
   printf("Entonces, %s y %s, que comience la batalla!", nombre_jugador1, nombre_jugador2);
   fflush(stdin);
   getch();

   
   
   ///////////////ACTUALIZAR TABLERO////////////////////////////////////////////////////////////////////////////////////////////////////////
   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   do
   {
         system("cls");
         for(int i=0; i<3; i++)
         {
            for(int j=0; j<3; j++)
            {
               printf(" /%c/ ", tablero[i][j]);
               if(j == 2) printf("\n\n");
            }
         }
      
      //////////////ELIGIR CASILLA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      if(quien_juega == 1)
      printf("%s, elige una casilla: ", nombre_jugador1);
      if(quien_juega == 2)
      printf("%s, elige una casilla: ", nombre_jugador2);
      fflush(stdin);
      opcion_juego = getch();

      do
      {
         switch(opcion_juego)
         {
         case '1':
            if (tablero[0][0] == 'X' || tablero[0][0] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               if(quien_juega == 1)tablero[0][0] = 'O';
               else tablero[0][0] = 'X';
               casilla_usada = 0;
            }
            break;
         case '2':
            if (tablero[0][1] == 'X' || tablero[0][1] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               if(quien_juega == 1) tablero[0][1] = 'O';
               else tablero[0][1] = 'X';
               casilla_usada = 0;
            }
            break;
         case '3':
            if (tablero[0][2] == 'X' || tablero[0][2] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               if(quien_juega == 1)tablero[0][2] = 'O';
               else tablero[0][2] = 'X';
               casilla_usada = 0;
            }
            break;
         case '4':
            if (tablero[1][0] == 'X' || tablero[1][0] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               if(quien_juega == 1)tablero[1][0] = 'O';
               else tablero[1][0] = 'X';
               casilla_usada = 0;
            }
            break;
         case '5':
            if (tablero[1][1] == 'X' || tablero[1][1] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               if(quien_juega == 1)tablero[1][1] = 'O';
               else tablero[1][1] = 'X';
               casilla_usada = 0;
            }
            break;
         case '6':
            if (tablero[1][2] == 'X' || tablero[1][2] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               if(quien_juega == 1)tablero[1][2] = 'O';
               else tablero[1][2] = 'X';
               casilla_usada = 0;
            }
            break;
         case '7':
            if (tablero[2][0] == 'X' || tablero[2][0] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               if(quien_juega == 1)tablero[2][0] = 'O';
               else tablero[2][0] = 'X';
               casilla_usada = 0;
            }
            break;
         case '8':
            if (tablero[2][1] == 'X' || tablero[2][1] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               if(quien_juega == 1)tablero[2][1] = 'O';
               else tablero[2][1] = 'X';
               casilla_usada = 0;
            }
            break;
         case '9':
            if (tablero[2][2] == 'X' || tablero[2][2] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               if(quien_juega == 1)tablero[2][2] = 'O';
               else tablero[2][2] = 'X';
               casilla_usada = 0;
            }
            break;
         default:
            printf("opcion incorrecta.\n Elige una casilla(del 1 al 9): ");
            fflush(stdin);
            opcion_juego = getch();
            break;
         }
         }while(casilla_usada == 1);
         casilla_usada = 1;
      
      //////////////VERIFICAR VICTORIAS//////////////////////////////////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////////////////////////////////////////

      //////////////FILAS////////////////////////////////////////////////////////////////////////////////////
      if(tablero[0][0] == tablero[0][1] && tablero[0][1] == tablero[0][2])
      {
         if (tablero[0][0] == 'O') quien_gana = 1;
         else quien_gana = 2;
      }
      if(tablero[1][0] == tablero[1][1] && tablero[1][1] == tablero[1][2])
      {
         if (tablero[1][0] == 'O') quien_gana = 1;
         else quien_gana = 2;
      }
      if(tablero[2][0] == tablero[2][1] && tablero[2][1] == tablero[2][2])
      {
         if (tablero[2][0] == 'O') quien_gana = 1;
         else quien_gana = 2;
      }
      ////////////COLUMNAS//////////////////////////////////////////////////////////////////////////////////      
      if(tablero[0][0] == tablero[1][0] && tablero[1][0] == tablero[2][0])
      {
         if (tablero[0][0] == 'O') quien_gana = 1;
         else quien_gana = 2;
      }
      if(tablero[0][1] == tablero[1][1] && tablero[1][1] == tablero[2][1])
      {
         if (tablero[0][1] == 'O') quien_gana = 1;
         else quien_gana = 2;
      }
      if(tablero[0][2] == tablero[1][2] && tablero[1][2] == tablero[2][2])
      {
         if (tablero[0][2] == 'O') quien_gana = 1;
         else quien_gana = 2;
      }
      ///////////DIAGONALES////////////////////////////////////////////////////////////////////////////////
      if(tablero[0][0] == tablero[1][1] && tablero[1][1] == tablero[2][2])
      {
         if (tablero[0][0] == 'O') quien_gana = 1;
         else quien_gana = 2;
      }
      if(tablero[2][0] == tablero[1][1] && tablero[1][1] == tablero[0][2])
      {
         if (tablero[2][0] == 'O') quien_gana = 1;
         else quien_gana = 2;
      }
      
      ///////////////////////VERIFICAR EMPATES//////////////////////////////////////////////////////////////////////////////////////
      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

      if(quien_gana == 0)
      {
         hay_jugadas = 0;
         for(int i=0; i<3; i++)
         {
            for(int j=0; j<3; j++)
            {
               if(tablero[i][j] != 'O' && tablero[i][j] != 'X')
               {
                  hay_jugadas = 1;
                  break;
               }
               
            }
         }
      if (hay_jugadas == 0) quien_gana = 3;
      }

      
      //////////////CAMBIO DE JUGADOR//////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////////////////////////      
      if(quien_juega == 1) quien_juega = 2;
      else quien_juega = 1;

   }while(quien_gana == 0);


   ///////////////////MOSTRAR RESULTADOS///////////////////////////////////////////////////////////////////////
   /////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   //////////TABLERO///////////////////////////////////////////////////////////////////////////////////////////
   system("cls");
         for(int i=0; i<3; i++)
         {
            for(int j=0; j<3; j++)
            {
               printf(" /%c/ ", tablero[i][j]);
               if(j == 2) printf("\n\n");
            }
         }

   /////////COMENTARIOS//////////////////////////////////////////////////////////////////////////////////////////
   
   if(quien_gana == 1)
   {
      printf("Felicidades %s, has ganado\n%s, buscate un trabajo, no sirves para esto\n\n", nombre_jugador1, nombre_jugador2);
   }
   else if(quien_gana == 2)
   {
      printf("Felicidades %s, has ganado\n%s, buscate un trabajo, no sirves para esto\n\n", nombre_jugador2, nombre_jugador1);
   }
   else
   {
      printf("Ha habido un empate, o los dos igual de tontos o los dos igual de listos\n\n");
   }

}



Ejercicio 3: Crea el modo para un jugador.
Imagen

Posible Solucion:
Código: Seleccionar todo
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void juego_un_jugador (void)
{
   ///////VARIABLES///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   int casilla_usada = 1;
   char opcion_juego;
   char nombre_jugador[30];
   int quien_gana = 0; //0 = no hay ganador, 1 = gana el jugador, 2=gana el ordenador, 3= empate
   int hay_jugadas = 0;
   char tablero[3][3]=
   { '1', '2', '3',
     '4', '5', '6',
     '7', '8', '9' };

   //////PEDIR NOMBRE/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   printf("Hola hermano, eres feliz? como te llamas? ");
   fflush(stdin);
   gets(nombre_jugador);
   printf("Asi bien, que comience la batalla(%s VS Ordeneitor)!", nombre_jugador);
   getch();

   ////ACTUALIZAR TABLERO/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   do
   {
      system("cls");
            for(int i=0; i<3; i++)
            {
               for(int j=0; j<3; j++)
               {
                  printf(" /%c/ ", tablero[i][j]);
                  if(j == 2) printf("\n\n");
               }
            }
         
   //////ELEGIR CASILLA, TURNO JUGADOR/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   printf("%s, elige una casilla", nombre_jugador);
   fflush(stdin);
   opcion_juego = getch();
      do
      {
         switch(opcion_juego)
         {
         case '1':
            if (tablero[0][0] == 'X' || tablero[0][0] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               tablero[0][0] = 'O';
               casilla_usada = 0;
            }
            break;
         case '2':
            if (tablero[0][1] == 'X' || tablero[0][1] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               tablero[0][1] = 'O';
               casilla_usada = 0;
            
            }
            break;
         case '3':
            if (tablero[0][2] == 'X' || tablero[0][2] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               tablero[0][2] = 'O';
               casilla_usada = 0;
            }
            break;
         case '4':
            if (tablero[1][0] == 'X' || tablero[1][0] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               tablero[1][0] = 'O';
               casilla_usada = 0;
            }
            break;
         case '5':
            if (tablero[1][1] == 'X' || tablero[1][1] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               tablero[1][1] = 'O';
               casilla_usada = 0;
            }
            break;
         case '6':
            if (tablero[1][2] == 'X' || tablero[1][2] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               tablero[1][2] = 'O';
               casilla_usada = 0;
            }
            break;
         case '7':
            if (tablero[2][0] == 'X' || tablero[2][0] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               tablero[2][0] = 'O';
               casilla_usada = 0;
            }
            break;
         case '8':
            if (tablero[2][1] == 'X' || tablero[2][1] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               tablero[2][1] = 'O';
               casilla_usada = 0;
            }
            break;
         case '9':
            if (tablero[2][2] == 'X' || tablero[2][2] == 'O')
            {
               printf("Casilla usada, elige otra casilla: ");
               fflush(stdin);
               opcion_juego = getch();
            }
            else
            {
               tablero[2][2] = 'O';
               casilla_usada = 0;
            }
            break;
         default:
            printf("opcion incorrecta.\n Elige una casilla(del 1 al 9): ");
            fflush(stdin);
            opcion_juego = getch();
            break;
         }
         }while(casilla_usada == 1);
         casilla_usada = 1;

            //////////////VERIFICAR VICTORIAS//////////////////////////////////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////////////////////////////////////////

      //////////////FILAS////////////////////////////////////////////////////////////////////////////////////
      if(tablero[0][0] == tablero[0][1] && tablero[0][1] == tablero[0][2])
      {
         if (tablero[0][0] == 'O') quien_gana = 1;
         break;
      }
      else if(tablero[1][0] == tablero[1][1] && tablero[1][1] == tablero[1][2])
      {
         if (tablero[1][0] == 'O') quien_gana = 1;
         break;
      }
      else if(tablero[2][0] == tablero[2][1] && tablero[2][1] == tablero[2][2])
      {
         if (tablero[2][0] == 'O') quien_gana = 1;
         break;
      }
      ////////////COLUMNAS//////////////////////////////////////////////////////////////////////////////////      
      else if(tablero[0][0] == tablero[1][0] && tablero[1][0] == tablero[2][0])
      {
         if (tablero[0][0] == 'O') quien_gana = 1;
         break;
      }
      else if(tablero[0][1] == tablero[1][1] && tablero[1][1] == tablero[2][1])
      {
         if (tablero[0][1] == 'O') quien_gana = 1;
         break;
      }
      else if(tablero[0][2] == tablero[1][2] && tablero[1][2] == tablero[2][2])
      {
         if (tablero[0][2] == 'O') quien_gana = 1;
         break;
      }
      ///////////DIAGONALES////////////////////////////////////////////////////////////////////////////////
      else if(tablero[0][0] == tablero[1][1] && tablero[1][1] == tablero[2][2])
      {
         if (tablero[0][0] == 'O') quien_gana = 1;
         break;
      }
      else if(tablero[2][0] == tablero[1][1] && tablero[1][1] == tablero[0][2])
      {
         if (tablero[2][0] == 'O') quien_gana = 1;
         break;
      }
      
      ///////////////////////VERIFICAR EMPATES//////////////////////////////////////////////////////////////////////////////////////
      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

      if(quien_gana == 0)
      {
         hay_jugadas = 0;
         for(int i=0; i<3; i++)
         {
            for(int j=0; j<3; j++)
            {
               if(tablero[i][j] != 'O' && tablero[i][j] != 'X')
               {
                  hay_jugadas = 1;
                  break;
               }
               
            }
         }
         if (hay_jugadas == 0)
         {
            quien_gana = 3;
            break;
         }
      }

////////////ACTUALIZAR TABLERO/////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         system("cls");
            for(int i=0; i<3; i++)
            {
               for(int j=0; j<3; j++)
               {
                  printf(" /%c/ ", tablero[i][j]);
                  if(j == 2) printf("\n\n");
               }
            }
         printf("Ordenador, tu turno ");


///////////////TURNO ORDENADOR////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         
         //////////////VERIFICA SI PUEDE GANAR/////////////////////////////////////////////////////////////////////////////////////////
         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

         //////FILAS//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //////1
         if(tablero[0][0] == 'X' && tablero[0][1] == 'X' && tablero[0][2] != 'O')
         {
            tablero[0][2] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[0][2] == 'X' && tablero[0][1] == 'X' && tablero[0][0] != 'O')
         {
            tablero[0][0] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[0][0] == 'X' && tablero[0][2] == 'X' && tablero[0][1] != 'O')
         {
            tablero[0][1] = 'X';
            quien_gana = 2;
            break;
         }

         //////2
         else if(tablero[1][0] == 'X' && tablero[1][1] == 'X' && tablero[1][2] != 'O')
         {
            tablero[1][2] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[1][2] == 'X' && tablero[1][1] == 'X' && tablero[1][0] != 'O')
         {
            tablero[1][0] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[1][0] == 'X' && tablero[1][2] == 'X' && tablero[1][1] != 'O')
         {
            tablero[1][1] = 'X';
            quien_gana = 2;
            break;
         }

         //////3
         else if(tablero[2][0] == 'X' && tablero[2][1] == 'X' && tablero[2][2] != 'O')
         {
            tablero[2][2] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[2][2] == 'X' && tablero[2][1] == 'X' && tablero[2][0] != 'O')
         {
            tablero[2][0] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[2][0] == 'X' && tablero[2][2] == 'X' && tablero[2][1] != 'O')
         {
            tablero[2][1] = 'X';
            quien_gana = 2;
            break;
         }
         
         ///////COLUMNAS////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //////1
         else if(tablero[0][0] == 'X' && tablero[1][0] == 'X' && tablero[2][0] != 'O')
         {
            tablero[2][0] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[2][0] == 'X' && tablero[1][0] == 'X' && tablero[0][0] != 'O')
         {
            tablero[0][0] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[0][0] == 'X' && tablero[2][0] == 'X' && tablero[1][0] != 'O')
         {
            tablero[1][0] = 'X';
            quien_gana = 2;
            break;
         }

         /////2
         else if(tablero[0][1] == 'X' && tablero[1][1] == 'X' && tablero[2][1] != 'O')
         {
            tablero[2][1] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[2][1] == 'X' && tablero[1][1] == 'X' && tablero[0][1] != 'O')
         {
            tablero[0][1] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[0][1] == 'X' && tablero[2][1] == 'X' && tablero[1][1] != 'O')
         {
            tablero[1][1] = 'X';
            quien_gana = 2;
            break;
         }

         /////3
         else if(tablero[0][2] == 'X' && tablero[1][2] == 'X' && tablero[2][2] != 'O')
         {
            tablero[2][2] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[2][2] == 'X' && tablero[1][2] == 'X' && tablero[0][2] != 'O')
         {
            tablero[0][2] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[0][2] == 'X' && tablero[2][2] == 'X' && tablero[1][2] != 'O')
         {
            tablero[1][2] = 'X';
            quien_gana = 2;
            break;
         }
         ////////DIAGONALES//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //////1
         else if(tablero[0][0] == 'X' && tablero[1][1] == 'X' && tablero[2][2] != 'O')
         {
            tablero[2][2] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[2][2] == 'X' && tablero[1][1] == 'X' && tablero[0][0] != 'O')
         {
            tablero[0][0] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[0][0] == 'X' && tablero[2][2] == 'X' && tablero[1][1] != 'O')
         {
            tablero[1][1] = 'X';
            quien_gana = 2;
            break;
         }
         //////2
         else if(tablero[2][0] == 'X' && tablero[1][1] == 'X' && tablero[0][2] != 'O')
         {
            tablero[0][2] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[0][2] == 'X' && tablero[1][1] == 'X' && tablero[2][0] != 'O')
         {
            tablero[2][0] = 'X';
            quien_gana = 2;
            break;
         }
         else if(tablero[2][0] == 'X' && tablero[0][2] == 'X' && tablero[1][1] != 'O')
         {
            tablero[1][1] = 'X';
            quien_gana = 2;
            break;
         }

   ///////////////VERIFICA SI TIENE QUE TAPAR ALGUNA JUGADA/////////////////////////////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

         //////FILAS//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //////1
         else if(tablero[0][0] == 'O' && tablero[0][1] == 'O' && tablero[0][2] != 'X')
         {
            tablero[0][2] = 'X';
            
         }
         else if(tablero[0][2] == 'O' && tablero[0][1] == 'O' && tablero[0][0] != 'X')
         {
            tablero[0][0] = 'X';
            
         }
         else if(tablero[0][0] == 'O' && tablero[0][2] == 'O' && tablero[0][1] != 'X')
         {
            tablero[0][1] = 'X';
            
         }
         ////////2
         else if(tablero[1][0] == 'O' && tablero[1][1] == 'O' && tablero[1][2] != 'X')
         {
            tablero[1][2] = 'X';
            
         }
         else if(tablero[1][2] == 'O' && tablero[1][1] == 'O' && tablero[1][0] != 'X')
         {
            tablero[1][0] = 'X';
            
         }
         else if(tablero[1][0] == 'O' && tablero[1][2] == 'O' && tablero[1][1] != 'X')
         {
            tablero[0][0] = 'X';
            
         }
         ////////3
         else if(tablero[2][0] == 'O' && tablero[2][1] == 'O' && tablero[2][2] != 'X')
         {
            tablero[2][2] = 'X';
            
         }
         else if(tablero[2][2] == 'O' && tablero[2][1] == 'O' && tablero[2][0] != 'X')
         {
            tablero[2][0] = 'X';
            
         }
         else if(tablero[2][0] == 'O' && tablero[2][2] == 'O' && tablero[2][1] != 'X')
         {
            tablero[2][1] = 'X';
            
         }
         ///////COLUMNAS////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //////1
         else if(tablero[0][0] == 'O' && tablero[1][0] == 'O' && tablero[2][0] != 'X')
         {
            tablero[2][0] = 'X';
            
         }
         else if(tablero[2][0] == 'O' && tablero[1][0] == 'O' && tablero[0][0] != 'X')
         {
            tablero[0][0] = 'X';
            
         }
         else if(tablero[0][0] == 'O' && tablero[2][0] == 'O' && tablero[1][0] != 'X')
         {
            tablero[1][0] = 'X';
            
         }
         /////2
         else if(tablero[0][1] == 'O' && tablero[1][1] == 'O' && tablero[2][1] != 'X')
         {
            tablero[2][1] = 'X';
            
         }
         else if(tablero[2][1] == 'O' && tablero[1][1] == 'O' && tablero[0][1] != 'X')
         {
            tablero[0][1] = 'X';
            
         }
         else if(tablero[0][1] == 'O' && tablero[2][1] == 'O' && tablero[1][1] != 'X')
         {
            tablero[1][1] = 'X';
            
         }
         //////3
         else if(tablero[0][2] == 'O' && tablero[1][2] == 'O' && tablero[2][2] != 'X')
         {
            tablero[2][2] = 'X';
            
         }
         else if(tablero[2][2] == 'O' && tablero[1][2] == 'O' && tablero[0][2] != 'X')
         {
            tablero[0][2] = 'X';
            
         }
         else if(tablero[0][2] == 'O' && tablero[2][2] == 'O' && tablero[1][2] != 'X')
         {
            tablero[1][2] = 'X';
            
         }
         ////////DIAGONALES//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //////1
         else if(tablero[0][0] == 'O' && tablero[1][1] == 'O' && tablero[2][2] != 'X')
         {
            tablero[2][2] = 'X';
            
         }
         else if(tablero[2][2] == 'O' && tablero[1][1] == 'O' && tablero[0][0] != 'X')
         {
            tablero[0][0] = 'X';
            
         }
         else if(tablero[0][0] == 'O' && tablero[2][2] == 'O' && tablero[1][1] != 'X')
         {
            tablero[1][1] = 'X';
            
         }
         /////////2
         else if(tablero[2][0] == 'O' && tablero[1][1] == 'O' && tablero[0][2] != 'X')
         {
            tablero[0][2] = 'X';
            
         }
         else if(tablero[0][2] == 'O' && tablero[1][1] == 'O' && tablero[2][0] != 'X')
         {
            tablero[0][2] = 'X';
            
         }
         else if(tablero[2][0] == 'O' && tablero[0][2] == 'O' && tablero[1][1] != 'X')
         {
            tablero[1][1] = 'X';
            
         }

         //////TURNO ORDENADOR SINO TIENE POSIBILIDAD DE GANAR NI DE TAPAR//////////////////////////////////////////////////////////////////////
         ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         
         ////JUEGA AL 5
         else if(tablero[1][1] != 'O' && tablero[1][1] != 'X')
         {
            tablero[1][1] = 'X';
            
         }

         ////JUEGA AL 1, 3, 7 o 9
         else if(tablero[0][0] != 'O' && tablero[0][0] != 'X')
         {
            tablero[0][0] = 'X';
            
         }
         else if(tablero[0][2] != 'O' && tablero[0][2] != 'X')
         {
            tablero[0][2] = 'X';
            
         }
         else if(tablero[2][0] != 'O' && tablero[2][0] != 'X')
         {
            tablero[2][0] = 'X';
            
         }
         else if(tablero[2][2] != 'O' && tablero[2][2] != 'X')
         {
            tablero[2][2] = 'X';
            
         }

         ////JUEGA AL 2, 4, 6 o 8
         else if(tablero[0][1] != 'O' && tablero[0][1] != 'X')
         {
            tablero[0][1] = 'X';
            
         }
         else if(tablero[1][0] != 'O' && tablero[1][0] != 'X')
         {
            tablero[1][0] = 'X';
            
         }
         else if(tablero[1][2] != 'O' && tablero[1][2] != 'X')
         {
            tablero[1][2] = 'X';
            
         }
         else if(tablero[2][1] != 'O' && tablero[2][1] != 'X')
         {
            tablero[2][1] = 'X';
            
         }

         ////////////////////VERIFICAR EMPATES////////////////////////////////////////////////////////////////////////////////////////////
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

      if(quien_gana == 0)
      {
         hay_jugadas = 0;
         for(int i=0; i<3; i++)
         {
            for(int j=0; j<3; j++)
            {
               if(tablero[i][j] != 'O' && tablero[i][j] != 'X')
               {
                  hay_jugadas = 1;
               }
               
            }
         }
         if (hay_jugadas == 0)
         {
            quien_gana = 3;
         }
      }

   }while(quien_gana == 0);



   
   ///////////////////MOSTRAR RESULTADOS///////////////////////////////////////////////////////////////////////
   /////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   //////////TABLERO///////////////////////////////////////////////////////////////////////////////////////////
   system("cls");
         for(int i=0; i<3; i++)
         {
            for(int j=0; j<3; j++)
            {
               printf(" /%c/ ", tablero[i][j]);
               if(j == 2) printf("\n\n");
            }
         }

   /////////COMENTARIOS//////////////////////////////////////////////////////////////////////////////////////////
   
   if(quien_gana == 1)
   {
      printf("Felicidades %s, has ganado\n\n", nombre_jugador);
   }
   else if(quien_gana == 2)
   {
      printf("Y el ganador es... el ordenador\n\n");
   }
   else
   {
      printf("Me da la sensacion de que ha habido un empate\n\n");
   }
}

Última edición por migueleitorone el Lun Sep 06, 2010 4:56 pm, editado 4 veces en total
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: juegos sencillos para la consola de windows

Notapor endaramiz » Sab Sep 04, 2010 2:54 am

Yo también quería hacer unos ejercicios aunque más centrados en APIs de videojuegos. Pero estos más sencillos también son interesantes para los que empiezan a programar. Si finalmente hago algo, ya te avisaré por si te interesa alguno mío y/o me dejas publicar algunos tuyos.

Por cierto, no lo he mirado con mucho detalle. Pero creo que usas C estándar así que no solo es para Windows sino que es multiplataforma. Ya me corregirán si me equivoco.

Saludos y gracias por el trabajo.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Re: juegos sencillos para la consola de windows

Notapor migueleitorone » Sab Sep 04, 2010 2:27 pm

Ok, perfecto, cualquien ayuda es bienvenida. Si no veas lo que estoy aprendiendo con la tonteria del 3 en ralla xd.

No sabia que era multiplataforma, como al crear un proyecto en visual c++ siempre uso la opcion "Aplicacion de consola Win32" , he dado por hecho que solo se podia ejecutar en windows.

Ah y gracias a ti por interesarte en el proyecto :D
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: juegos sencillos para la consola de windows

Notapor carlostex » Dom Sep 05, 2010 2:49 am

migueleitorone escribió:No sabia que era multiplataforma, como al crear un proyecto en visual c++ siempre uso la opcion "Aplicacion de consola Win32" , he dado por hecho que solo se podia ejecutar en windows.


Lo que pasa es que usas funciones de la biblioteca estandar, y ademas usar el c estandar, por eso es posible copiar tu codigo y compilarlo en gnu/linux


migueleitorone escribió:Ok, perfecto, cualquien ayuda es bienvenida. Si no veas lo que estoy aprendiendo con la tonteria del 3 en ralla xd.


Cuando empizas con videojuegos ni un juego es tonto, no te dejes llevar por que no se vea tan bonito como los de 2D o 3D, lo importante es lo que aprendes,
y como resulves los problemas, cuando yo comenze empeze con juegos como pacman y snake en consola, y luego le pedi a un amigo su codigo de un tres en raya y
le puse inteligencia artificial.
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Re: juegos sencillos para la consola de windows

Notapor migueleitorone » Dom Sep 05, 2010 3:45 pm

Cuando empizas con videojuegos ni un juego es tonto, no te dejes llevar por que no se vea tan bonito como los de 2D o 3D, lo importante es lo que aprendes,
y como resulves los problemas, cuando yo comenze empeze con juegos como pacman y snake en consola, y luego le pedi a un amigo su codigo de un tres en raya y
le puse inteligencia artificial.


Si, si lo que quieria decir es que me sorprender bastante lo que estoy aprendiendo haciendo algo tan sencillo como un tres en ralla.
yo comenze empeze con juegos como pacman y snake en consola

Una pregunta, el tema del movimiento en consola es simplemente usar funciones como system("cls") para borrar la pantalla y actualizarla o hay alguna forma de hacerlo que quede algo mejor?
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: juegos sencillos para la consola de windows

Notapor carlostex » Dom Sep 05, 2010 7:08 pm

Mira para hacer juegos en consola te recomiendo usar ncurses, es una biblioteca portable, y esta diseñada para crear interfases mas amigables, tienes varias opciones como color de texto,ubicación, etc.averigua sobre ella
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Re: juegos sencillos para la consola de windows

Notapor migueleitorone » Lun Sep 06, 2010 5:00 pm

Oks buscare informacion sobre la biblioteca aver si puedo hacer cosillas mas vistosas.

Ya he terminado la IA del 3 en linea, bastante basica, pero ahi esta, la verdad es que me ha costado bastante mas de lo que creia.
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: juegos sencillos para la consola de windows

Notapor carlostex » Mar Sep 07, 2010 1:33 am

Para estos juegos se una la tecnica de arboles min-max, si el algoritmo se implementa bien jugara de la mejor manera, Se puede demostrar que si los dos jugadores hacen juagadas buenas el resultado será un empate, siempre. La calidad de las deciciones que tome el algoritmo dependera de la profundidad del arbol que uses, investiga sobre arboles min-max. Es muy interesante implementarlo
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Re: juegos sencillos para la consola de windows

Notapor migueleitorone » Mar Sep 07, 2010 2:17 pm

carlostex escribió:Para estos juegos se una la tecnica de arboles min-max, si el algoritmo se implementa bien jugara de la mejor manera, Se puede demostrar que si los dos jugadores hacen juagadas buenas el resultado será un empate, siempre. La calidad de las deciciones que tome el algoritmo dependera de la profundidad del arbol que uses, investiga sobre arboles min-max. Es muy interesante implementarlo


Es lo que me ha pasado con el juego, que solo hay un par de jugadas posibles con las que ganar y normalmente queda en empate. Pero bueno he preferido no tocarlo mas de momento.
Ahora estoy haciendo un snake y cuando lo termine vere si puedo mejorar la ia con esa tecnica que comentas. La verdad es que el tema de la ia me llama mucho la atencion, aunque veo que es complicadillo el tema.
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España


Volver a Propuestas de desarrollo y concursos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado