Pacman en C++ en modo consola

Pacman en consola - Lenguaje C++

Este programa consiste en el juego pacman en C++ bajo modo consola. Lo escribí en algunos momentos de ocio mientras practicaba y recordaba algunos conceptos de programación y la sintaxis del lenguaje C++. Aún no está terminado al 100% y no sé si lo llegue a terminar en el corto plazo. Lo comparto porque les puede ser útil, para que lo mejoren o lo utilicen en sus proyectos.

Para moverse en el juego:

  • Arriba: i
  • Abajo: k
  • Izquierda: j
  • Derecha: l

Instalación previa de la librería Conio

El programa se realizó utilizando el IDE Dev C++. Se incluyó la biblioteca no estándar conio la cual trae el método gotoxy. Este método es el que permite ubicar el cursor en cualquier posición de la terminal (ventana negra).

GOTOXY = Go to (x, y) = Ir a la coordenada (x, y)

Si desean como instalar la librería conio para el IDE Dev C++ pueden pasarse por esta entrada:

https://algoritmosyalgomas.com/instalar-el-ide-dev-c-y-la-libreria-conio/

Tutorial de instalación de Dev C++ con Conio: 

https://www.youtube.com/watch?v=puhwHtYeS8U&ab_channel=AlgoritmosyAlgom%C3%A1s

Configuración rápida de la consola de windows

1. Clic derecho en la barra de título de la consola y elegir Propiedades

2. Ingresar a la pestaña Fuente, y dentro del cuadro de lista Fuente elegir: “Fuentes de mapa de bits

3. En el cuadro de lista Tamaño elegir algún tamaño adecuado, Ejemplo: Elegimos el tamaño 8 x 12.

4. Luego de aplicar los cambios se verá mejor la presentación de los caracteres en la consola:

Código fuente del programa en C++:

Funcionamiento del programa:

Ejemplo básico de un menú de opciones en C++

En esta publicación te voy a mostrar un ejemplo básico de un menú de opciones en lenguaje C++ el cual puedes estudiarlo y utilizarlo en tus proyectos de programación. 

Imagen de un menú de opciones

Código fuente

				
					// Plantilla de un Menú de Opciones

#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

int main()
{
    int opcion;
    char repetir = TRUE;
    
    do {
        system("cls");
        
        // Texto del menú
        printf("\n\n\t\t\tMenu de Opciones\n");
        printf("\t\t\t----------------\n");
        printf("\n\t1. Sumar dos numeros\n");
        printf("\t2. Restar dos numeros\n");
        printf("\t3. Multiplicar dos numeros\n");
        printf("\t4. Dividir dos numeros\n");
        printf("\t0. SALIR\n");
        
        printf("\n\tIngrese una opcion: ");
        scanf("%d", &opcion);
        
        int numero1, numero2;
		float resultado;
        switch (opcion) {
            case 1:
                // Instrucciones para sumar dos números
                printf("\n\tIngrese primer numero: ");
                scanf("%d", &numero1);
                
                printf("\tIngrese segundo numero: ");
                scanf("%d", &numero2);
                
                printf("\t---------------------------\n");
                resultado = numero1 + numero2;
                printf("\tResultado: %f\n", resultado);
                
                system("pause>nul");
                break;
                
            case 2:
                // Instrucciones para restar dos números
                printf("\n\tIngrese primer numero: ");
                scanf("%d", &numero1);
                
                printf("\tIngrese segundo numero: ");
                scanf("%d", &numero2);
                
                printf("\t---------------------------\n");
                resultado = numero1 - numero2;
                printf("\tResultado: %f\n", resultado);
                
                system("pause>nul");
                break;
                
            case 3:
                // Instrucciones para multiplicar dos números
                printf("\n\tIngrese primer numero: ");
                scanf("%d", &numero1);
                
                printf("\tIngrese segundo numero: ");
                scanf("%d", &numero2);
                
                printf("\t---------------------------\n");
                resultado = numero1 * numero2;
                printf("\tResultado: %f\n", resultado);
                
                system("pause>nul");
                break;
                
			case 4:
                // Instrucciones para dividir dos números
                printf("\n\tIngrese primer numero: ");
                scanf("%d", &numero1);
                
                printf("\tIngrese segundo numero: ");
                scanf("%d", &numero2);
                
                printf("\t---------------------------\n");
                
				if (numero2 == 0) {
                	printf("\tResultado: No se puede dividir por cero.\n"); 
				} else {
					resultado = numero1 / (numero2 * 1.0);
					printf("\tResultado: %f\n", resultado);
				}
                
                system("pause>nul");     
                break;
            
            case 0:
            	repetir = FALSE;
            	break;
        }        
    } while (repetir);
	 
    return 0;
}
				
			

Explicación del código

El programa consiste de un menú de opciones que permite al usuario realizar las operaciones matemáticas básicas: sumar, restar, multiplicar y dividir dos números.

En las líneas 3 y 4 el programa comienza con la inclusión de dos librerías estándar de C: stdio.h y stdlib.h.

En las líneas 6 y 7 se define un par de constantes utilizando la directiva #define: TRUE con valor 1 y FALSE con valor 0. La primera indica que una condición es verdadera y la segunda indica que es falsa.

Entre las líneas 9 a la 104 se define la función principal main()  en la que se comienza definiendo la variable opcion (tipo int) y repetir (tipo char). La variable opcion guarda la opción que el usuario ingresa en el menú (línea 27) y repetir es una variable booleana que indica si se debe repetir el bucle do-while o no (línea 101). La variable repetir se inicializa en TRUE (línea 12), y solo se le cambiará su valor a FALSE cuando se quiera salir del bucle do-while.

Después, el programa ejecuta un bucle do-while (entre las líneas 14 y 101).

Dentro del bucle, se utiliza la función system(“cls”) para limpiar la pantalla (línea 15).

Para mostrar los textos en la pantalla se usa la función printf().

En la línea 27, el usuario ingresa una opción y se guarda en la variable opcion mediante la función scanf().

Después, el programa utiliza un switch-case entre las líneas 31 y 100 para realizar diferentes operaciones dependiendo de la opción que el usuario haya seleccionado.

Entre las líneas 32 y 45: Si el usuario selecciona la opción 1, se le pide que ingrese dos números enteros y se realiza la suma. El resultado se almacena en una variable resultado de tipo flotante.

Entre las líneas 47 y 60: Si el usuario selecciona la opción 2, se le pide que ingrese dos números enteros y se realiza la resta. El resultado también se almacena en la variable resultado.

Entre las líneas 62 y 75: Si el usuario selecciona la opción 3, se le pide que ingrese dos números enteros y se realiza la multiplicación. El resultado se almacena en la variable resultado.

Entre las líneas 77 y 95: Si el usuario selecciona la opción 4, se le pide que ingrese dos números enteros y se realiza la división. El resultado se almacena en la variable resultado. Si el segundo número es igual a cero, se imprime un mensaje de error indicando que no se puede dividir por cero. En caso contrario, se realiza la división normalmente.

Entre las líneas 97 y 99: Si el usuario selecciona la opción 0, la variable repetir se establece en FALSE y el bucle do-while se detiene.

Si el usuario selecciona una opción que no está en el menú, el programa simplemente ignora la opción y muestra el menú de nuevo.

Finalmente, el programa devuelve el valor 0 (línea 103) , indicando que la ejecución del programa ha terminado correctamente.

Es importante destacar que este programa utiliza estructuras de control básicas como “if” , “switch” y “do-while”. Además, el uso de macros para declarar constantes mediante “define” ayuda a mantener un código más limpio y legible (Aunque se recomienda usar const para definir constantes en C++ en lugar de la macro define, esto no es discusión de este artículo por lo que podría quedar para más adelante).

Para desarrollar programas más complejos que incluyan menús de opciones en C++, se puede utilizar el ejemplo de esta entrada como punto de partida. Sin embargo, en el blog tengo otros post que tratan sobre tipos de menús que podrías revisar: