0% encontró este documento útil (0 votos)
33 vistas10 páginas

Proyecto Final Programación Básica

El proyecto final consiste en desarrollar un juego de picas y fijas en C++, donde los jugadores deben adivinar un número secreto dentro de un límite de intentos. Se implementa un menú interactivo, un sistema de puntajes y modos de juego que incluyen entrenamiento y jugar contra la máquina o otro jugador. Además, se detallan las funciones principales y lógicas del juego, así como pruebas de escritorio para validar su funcionamiento.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
33 vistas10 páginas

Proyecto Final Programación Básica

El proyecto final consiste en desarrollar un juego de picas y fijas en C++, donde los jugadores deben adivinar un número secreto dentro de un límite de intentos. Se implementa un menú interactivo, un sistema de puntajes y modos de juego que incluyen entrenamiento y jugar contra la máquina o otro jugador. Además, se detallan las funciones principales y lógicas del juego, así como pruebas de escritorio para validar su funcionamiento.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Proyecto Final Programación Básica

CodeBreaker: Desafío con Picas y Fijas

Programación Básica

Presentado por:

Juan Camilo Mendez Fernández - 20251020194


Samuel David Mayorga Guzmán – 20251020198

Docente:

Helio Henry Ramírez Arévalo

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

Facultad de Ingeniería

Bogotá D.C.

08 de julio de 2025
Descripción del Problema

Realizar un programa en C++ que permita jugar el juego de picas y fijas. El juego consiste
en que se deben establecer 2 números, entre 1 y 10 dígitos según desee el usuario.
Después, cada jugador debe adivinar el número que el otro jugador eligió. La cantidad de
intentos que tienen para adivinarlos está dada por un número mayor a 1 y menor que el
número de dígitos elegido por el usuario multiplicado por 5.

Además, el juego debe tener un sistema de puntajes calculado con la fórmula: (intentos -
intentosUsados) * 10 - (ayudasUsadas * 5) y un menú que permita al usuario elegir entre:
explicar el juego, jugar contra la máquina y jugar contra otro usuario.

Problemas Principales y Soluciones

1. Hacer un menú con el que el usuario pueda interactuar

Solución: Implementar un conjunto de estructuras condicionales (if-else) para definir


cuando el número esté entre las opciones del menú o si no está, que vuelva a preguntarle
que elija una opción válida.

2. Hacer un sistema de puntajes

Solución: Utilizar las variables que el usuario selecciona (cantidad de intentos, cantidad
de ayudas y cuántos usó). Entre menos intentos haya usado, mayor será la cantidad de
puntos, pero esta cantidad será reducida si se usaron ayudas. Cada ayuda equivaldrá a
menos 5 puntos.

3. Cómo hacer un sistema de entrenamiento

Solución: El sistema explicará las reglas del juego, seguido mostrará un ejemplo en el
cual se hará un juego donde un jugador tiene el número secreto 2631, y después el usuario
introduce el número 1234. En este caso se mostrarán cuántas picas y cuántas fijas tiene
del número, así el jugador podrá entender cómo va a ir el juego, seguido de una
explicación del por qué hay cierta cantidad de fijas y cierta cantidad de picas. Seguido de
esto se iniciará una partida con un número aleatorio de 4 dígitos el cual el jugador debe
adivinar con lo que ya sabe.

4. Sistema vs máquina

Solución: El sistema generará un número aleatorio con la cantidad de dígitos que indique
el usuario, y debe adivinar el número aleatorio generado, diciéndole el sistema cuántas
picas y cuántas fijas tiene, además de que debe seleccionar entre intentar adivinar el
número o pedir una pista.
5. Sistema de pistas

Solución: Dar 3 pistas al usuario las cuales serán:

• Pista 1: Suma de todos los dígitos del número secreto


• Pista 2: Revelar un dígito específico en una posición aleatoria
• Pista 3: Cantidad de dígitos pares e impares

Análisis del Código

Funciones Principales

• menu: Muestra las opciones principales del juego


• entrenamiento: Modo de práctica para entender el juego
• jugarContraMaquina: Modo jugador vs maquina
• jugarContraJugador: Modo jugador vs jugador
• configurarJuego: Personalizar las reglas del juego

Funciones de Lógica del Juego

• generarNumeroSecreto: Crea números aleatorios según las configuraciones


• calcularPicasYFijas: Implementa la lógica principal del juego
• validarNumero: Verifica que los números cumplan las reglas establecidas
• mostrarAyuda: Proporciona pistas al jugador

Orden en que se muestran opciones

1. Menú Principal

El programa muestra cuatro opciones principales:

1. Entrenamiento
2. Jugador vs Máquina
3. Jugador vs Jugador
4. Salir

2. Sistema de Configuración

El jugador personaliza la partida

• Cantidad de dígitos (1-10)


• Número de intentos (1 – cantidad de dígitos*5)
• Permitir o no dígitos repetidos
3. Modo Entrenamiento

• Explicación completa de las reglas


• Ejemplo práctico con el número 2631 vs 1234
• Sesión de práctica con número aleatorio de 4 dígitos
• 10 intentos para completar el entrenamiento

4. Sistema de Puntajes

Fórmula implementada: (intentos - intentosUsados) * 10 - (ayudasUsadas * 5)

• Mas puntos al usar menos intentos


• Menos puntos al usar ayudas

5. Sistema de Ayudas

Pistas:

• Ayuda 1: Suma total de los dígitos


• Ayuda 2: Revelación de un dígito específico
• Ayuda 3: Conteo de dígitos pares e impares

Funcionalidades Técnicas

Validación de Entrada

• Verifica que los números tengan la cantidad de dígitos que se pide


• Valida que solo contengan caracteres numéricos
• Respeta las reglas de repetición de dígitos
Algoritmo de Picas y Fijas

La función calcular picas y fijas:

1. Primero calcula las fijas (posiciónes correcta)


2. Luego calcula las picas (dígitos pero en posición incorrecta)
Generación de Entrenamiento

• Utiliza srand(time(0))
• Evita repeticiones cuando se pide
• Genera el numero con la longitud especificada
Explicación de los modos de Juego

1. Modo Jugador vs Máquina

• La máquina genera un número aleatorio


• El jugador tiene intentos limitados
• Sistema de ayudas
• Cálculo de puntuación
2. Modo Jugador vs Jugador

• Ambos jugadores establecen números secretos


• Turnos alternados para adivinar
• Sistema de empate implementado
• Revela cuales eran los números
Pruebas de escritorio del videojuego

Módulo / Función Caso de prueba Entrada Proceso resumido Salida u


observación
esperada
Genera 4 dígitos
distintos usando
digitos=4, rand()%10 y marca
Generación de número repetidos=false, cada dígito para evitar
secreto Sin dígitos repetidos semilla fija repeticiones. [3, 6, 7, 1]
Genera 4 dígitos con
digitos=4, rand()%10 sin
Generación de número repetidos=true, comprobar
secreto Con dígitos repetidos semilla fija repeticiones. [3, 3, 6, 7]
Resta '0' a cada
carácter para obtener
el valor numérico y lo
Conversión de cadena número = "5274", almacena en el
convertirStringAArreglo a arreglo digitos=4 arreglo. [5, 2, 7, 4]
Verifica que la
longitud sea 4 y que
cada carácter esté
validarNumero Número válido "4821", digitos=4 entre '0' y '9'. true
Detecta que la
longitud no coincide
con el parámetro
validarNumero Longitud incorrecta "123", digitos=4 digitos. false
Compara posición a
posición e incrementa
Dos dígitos en secreto [1,2,3,4], contador de fijas 2 fijas (posiciones 0
calcularFijas posición correcta intento [1,5,3,0] cuando coinciden. y 2)
Marca fijas (ninguna) y
busca cada dígito del
Cuatro dígitos intento en otras
correctos, distinta secreto [1,2,3,4], posiciones del
calcularPicas posición intento [4,3,2,1] secreto. 4 picas
Primero identifica 1
fija, luego detecta 2
Ejemplo modo secreto [2,6,3,1], picas en posiciones
calcularPicasYFijas entrenamiento intento [1,2,3,4] distintas. 2 picas, 1 fija
Muestra reglas,
genera número y
Acierto o ejecuta hasta 10 Mensaje 'Ha
agotamiento de Modo entrenamiento, iteraciones de intento adivinado' o 'El
Flujo Entrenamiento intentos 4 dígitos, 10 intentos y cálculo. número era: XXXX'
Configura
parámetros, permite
Configuración ayudas o intentos, Resultados por
Flujo Jugador vs Juego con opciones (digitos, intentos, valida, convierte y intento y
Máquina de ayuda repetidos) puntúa. puntuación
Configura, alterna Mensaje de ganador
Turnos alternos y turnos de adivinanza, o empate y
Flujo Jugador vs declaración de Dos números secretos valida, convierte y revelación de
Jugador ganador ingresados determina ganador. secretos

También podría gustarte