MANUAL TÉCNICO:
• Lenguaje utilizado en el código: JAVA.
• Realizado en Netbeans IDE.
• Compilación puede ser por medio de consola CMD en Windows, terminal en
Linux o GitBash programa.
• Tipo de compilación: texto por consola.
• Idioma en que fue programado español latinoamericano.
• Tipo de programación: programación orientada a objetos
• Versión JAVA JDK: 19.
• PSEUDOCÓDIGO (algoritmo) UTILZADO:
Inicio Practica1
var juegoElegido;
var casillaDeInicio = false;
var contInicioWordle = 0;
var contInicioBasketball = 0;
var contInicio2048 = 0;
var contVecesPerdidasWordle = 0;
var contVecesIntentandoAdivinar = 0;
var contVecesSalirJuego2048 = 0;
const SALTO_LARGO_PUNTOS = 3;
const SALTO_LARGO_PROBABILIDAD_ANOTAR = 65;
const SALTO_CORTO_PUNTOS = 2;
const SALTO_CORTO_PROBABILIDAD_ANOTAR = 80;
const TIRO_LIBRE_PUNTOS = 2;
const TIRO_LIBRE_PROBABILIDAD_ANOTAR = 90;
const REDUCCION_DEFENSA_CUERPO_A_CUERPO = 15;
const REDUCCION_DEFENSA_FUERTE = 30;
const PROBABILIDAD_FALTA_DEFENSA_CUERPO_A_CUERPO = 35;
const PROBABILIDAD_FALTA_DEFENSA_FUERTE = 65;
Subprograma menuPrincipal()
Escribir "BIENVENIDO A LA LIBRERÍA DE JUEGOS!!!"
Escribir "Estos son los juegos que esta librería te ofrece:"
Hacer
Escribir "1. Juego Wordle: intenta adivinar la palabra..."
Escribir "2. Juego Basketball: juégalo con tu amigo y que gane el mejor..."
Escribir "3. Juego 2048: ¿Podrás conseguir el número 2048?..."
Escribir "4. Mirar reportes..."
Escribir "5. Salir de la librería de juegos..."
Escribir "Ingrese el número del juego que desea: "
Leer juegoElegido
Si juegoElegido != 1 Y juegoElegido != 2 Y juegoElegido != 3 Y juegoElegido != 4 Y juegoElegido != 5 Entonces
Imprimir "\nIngrese una opción del 1 al 5, por favor..."
Fin Si
Mientras juegoElegido != 1 Y juegoElegido != 2 Y juegoElegido != 3 Y juegoElegido != 4 Y juegoElegido != 5
Según juegoElegido Hacer
Caso 1:
contInicioWordle++
Llamar a la función wordle()
Romper
Caso 2:
contInicioBasketball++
Llamar a la función basketball()
Romper
Caso 3:
contInicio2048++
Llamar a la función dosMilCuartentaYOcho()
Romper
Caso 4:
Llamar a la función reportes()
Romper
Caso 5:
Salir del programa
Romper
Fin Según
Fin menuPrincipal
Subprograma menuFinJuego()
Var seleccionFinJuego
Hacer
Escribir "Terminó el juego, ¿qué desea realizar?:"
Escribir "1. Seguir jugando..."
Escribir "2. Elegir otro juego..."
Escribir "3. Mirar reportes..."
Escribir "4. Salir de la librería de juegos..."
Escribir "Ingrese la opción que desee: "
Leer seleccionFinJuego
Mientras seleccionFinJuego < 1 O seleccionFinJuego > 3
Según seleccionFinJuego Hacer
Caso 1:
Si juegoElegido == 1 Entonces
contInicioWordle++
Llamar a la función wordle()
Sino Si juegoElegido == 2 Entonces
contInicioBasketball++
Llamar a la función basketball()
Sino Si juegoElegido == 3 Entonces
contInicio2048++
Llamar a la función dosMilCuartentaYOcho()
Fin Si
Romper
Caso 2:
Hacer
Escribir "1. Juego Wordle: intenta adivinar la palabra..."
Escribir "2. Juego Basketball: juégalo con tu amigo y que gane el mejor..."
Escribir "3. Juego 2048: ¿Podrás conseguir el número 2048?..."
Escribir "Ingrese el número del juego que desea: "
Leer juegoElegido
Si juegoElegido != 1 Y juegoElegido != 2 Y juegoElegido != 3 Y juegoElegido != 4 Entonces
Escribir "\nIngrese una opción del 1 al 3, por favor..."
Fin Si
Mientras juegoElegido != 1 Y juegoElegido != 2 Y juegoElegido != 3 Y juegoElegido != 4
Según juegoElegido Hacer
Caso 1:
contInicioWordle++
Llamar a la función wordle()
Romper
Caso 2:
contInicioBasketball++
Llamar a la función basketball()
Romper
Caso 3:
contInicio2048++
Llamar a la función dosMilCuartentaYOcho()
Romper
Fin Según
Romper
Caso 3:
Llamar a la función reportes()
Romper
Caso 4:
Salir del programa
Romper
Fin Según
Fin menuFinJuego
Subprograma wordle()
Var palabraOcultaS
Var palabraIngresada
Var intentosAnteriores = ""
Var intentos = 6
Escribir "HAS ELEGIDO JUGAR WORDLE: ADIVINA LA PALABRA..."
Hacer
Escribir "Ingrese la palabra de 5 letras que se desea ocultar (No debe ingresarla el jugador): "
Leer palabraOcultaS
Si longitud(palabraOcultaS) != 5 Entonces
Escribir "La palabra debe tener exactamente 5 letras..."
Fin Si
Mientras longitud(palabraOcultaS) != 5
Escribir "Podrás adivinar la palabra oculta?, tienes 6 intentos para realizarlo..."
Hacer
Escribir "\nIntentos que se han realizado: "
Llamar pintarIntentosHechos(intentosAnteriores)
Escribir "\n"
Escribir "Ingrese intento: "
Leer palabraIngresada
contVecesIntentandoAdivinar++
Si longitud(palabraIngresada) == longitud(palabraOcultaS) Entonces
intentosAnteriores += pintarPalabrasIngresadas(palabraIngresada, palabraOcultaS) "
Si palabraIngresada == palabraOcultaS Entonces
Escribir "HAS ADIVINADO LA PALABRA OCULTA, ¡FELICIDADES!"
intentos = 0
Llamar a menuFinJuego()
Sino
Escribir "FALLASTE!! Inténtalo de nuevo..."
intentos--
Escribir "Te quedan " + intentos + " intentos..."
Si intentos == 0 Entonces
contVecesPerdidasWordle++
Escribir "No lograste adivinar la palabra oculta, GAME OVER"
Llamar a menuFinJuego()
Fin Si
Fin Si
Sino
Escribir "Ingrese una palabra que tenga 5 letras, por favor..."
Fin Si
Mientras intentos >= 1 Y intentos <= 6
Fin wordle
Subprograma pintarIntentosHechos(var intentosRealizados)
Para cada var c en intentosIngresados Hacer
Si c no es un espacio y (c es igual a 'R' o c es igual a 'V' o c es igual a 'A') Entonces
Según c Hacer
Caso 'R':
Escribir "\033[31m" + c
Romper
Caso 'V':
Escribir "\033[32m" + c
Romper
Caso 'A':
Escribir "\033[33m" + c
Romper
Fin Según
Escribir "\033[0m"
Sino
Escribir c
Fin Si
Fin Para
Fin pintarIntentosHechos
Función pintarPalabrasIngresadas(var palabraIngresada, var palabraOculta)
Cadena palabraConColor = ""
Para cada Entero i desde 0 hasta longitud(palabraIngresada) - 1 Hacer
var letraEncontrada = Falso
var posicionCorrecta = Falso
Para cada Entero j desde 0 hasta longitud(palabraOculta) - 1 Hacer
Si palabraIngresada[i] es igual a palabraOculta[j] Entonces
letraEncontrada = Verdadero
Si i es igual a j Entonces
posicionCorrecta = Verdadero
Fin Si
Fin Si
Fin Para
Si posicionCorrecta Entonces
palabraConColor += "\033[32m" + palabraIngresada[i]
Sino Si letraEncontrada Entonces
palabraConColor += "\033[33m" + palabraIngresada[i]
Sino
palabraConColor += "\033[31m" + palabraIngresada[i]
Fin Si
palabraConColor += "\033[0m"
Fin Para
Devolver palabraConColor
Fin pintarPalabrasIngresadas
Subprograma basketball()
var nombreJugador1, nombreJugador2
var cantidadTurnos, puntosJugador1 = 0, puntosJugador2 = 0
var defensaFuerteJugador1 = Falso, defensaFuerteJugador2 = Falso
var defensaCaCJugador1 = Falso, defensaCaCJugador2 = Falso
Escribir "HAS ELEGIDO BASKETBALL, que gane el mejor..."
Escribir "Ingrese el nombre del jugador 1:"
Leer nombreJugador1
Escribir "Ingrese el nombre del jugador 2:"
Leer nombreJugador2
Escribir "DIVIÉRTANSE " + nombreJugador1 + " y " + nombreJugador2
Hacer
Escribir "Ingrese la cantidad de turnos en la que se desea jugar: "
Leer cantidadTurnos
Si cantidadTurnos == 0 Entonces
Escribir "La cantidad de turnos no puede ser 0..."
Fin Si
Mientras cantidadTurnos == 0
Para cada var turno en el rango (1, cantidadTurnos + 1) Hacer
Escribir "\nTurno " + turno + ":"
var opcionJugador1
Hacer
Escribir " " + nombreJugador1 + ", elige tu movimiento:"
Escribir "1. Atacar..."
Escribir "2. Defender..."
Leer opcionJugador1
Mientras opcionJugador1 != 1 Y opcionJugador1 != 2
Si opcionJugador1 == 1 Entonces
var tipoTiroJugador1
Hacer
Escribir "Elige el tipo de tiro que deseas realizar: "
Escribir "1. Salto largo desde los 5 metros..."
Escribir "2. Salto corto desde los 3 metros..."
Leer tipoTiroJugador1
Mientras tipoTiroJugador1 != 1 Y tipoTiroJugador1 != 2
Doble probabilidadAnotarJugador1
Si tipoTiroJugador1 == 1 Entonces
probabilidadAnotarJugador1 = SALTO_LARGO_PROBABILIDAD_ANOTAR
Sino
probabilidadAnotarJugador1 = SALTO_CORTO_PROBABILIDAD_ANOTAR
Fin Si
Si defensaFuerteJugador2 Entonces
probabilidadAnotarJugador1 -= REDUCCION_DEFENSA_FUERTE
defensaFuerteJugador2 = Falso
Fin Si
Si defensaCaCJugador2 Entonces
probabilidadAnotarJugador1 -= REDUCCION_DEFENSA_CUERPO_A_CUERPO
defensaCaCJugador2 = Falso
Fin Si
Si Aleatorio_entre_0_y_1() * 100 < probabilidadAnotarJugador1 Entonces
Si tipoTiroJugador1 == 1 Entonces
puntosJugador1 += SALTO_LARGO_PUNTOS
Escribir nombreJugador1 + " ACERTASTE un salto largo de 3 puntos."
Sino
puntosJugador1 += SALTO_CORTO_PUNTOS
Escribir nombreJugador1 + " ACERTASTE un salto corto de 2 puntos."
Fin Si
Sino
Escribir nombreJugador1 + " FALLASTE el tiro."
Fin Si
Escribir "Llevas: " + puntosJugador1 + " puntos..."
Sino
var tipoDefensa
Hacer
Escribir "Elige el tipo de defensa que deseas realizar:"
Imprimir "1. Defensa cuerpo a cuerpo..."
Imprimir "2. Defensa fuerte..."
Leer tipoDefensa
Mientras tipoDefensa != 1 Y tipoDefensa != 2
Si tipoDefensa == 1 Entonces
Escribir "\nSe redujo el " + REDUCCION_DEFENSA_CUERPO_A_CUERPO + " porcentaje de anotación de jugador:
" + nombreJugador1
defensaCaCJugador2 = Verdadero
Llamar manejarFaltas(nombreJugador1, nombreJugador2, puntosJugador2,
PROBABILIDAD_FALTA_DEFENSA_CUERPO_A_CUERPO)
Sino Si tipoDefensa == 2 Entonces
Escribir "Se redujo el " + REDUCCION_DEFENSA_FUERTE + " porcentaje de anotación de jugador: " +
nombreJugador1
defensaFuerteJugador2 = Verdadero
Llamar manejarFaltas(nombreJugador1, nombreJugador2, puntosJugador2,
PROBABILIDAD_FALTA_DEFENSA_FUERTE)
Fin Si
Fin Si
var opcionJugador2
Hacer
Escribir " " + nombreJugador2 + ", elige tu movimiento:"
Escribir "1. Atacar..."
Escribir "2. Defender..."
Leer opcionJugador2
Mientras opcionJugador2 != 1 Y opcionJugador2 != 2
Si opcionJugador2 == 1 Entonces
// Atacar, misma lógica que se utilizó para jugador 1, con cambio de variables
Sino
// Defender, misma lógica que se utilizó para jugador 1, con cambio de variables
Fin Si
Fin Para
Escribir "Resultado final del juego:"
Escribir nombreJugador1 + ": " + puntosJugador1 + " puntos"
Escribir nombreJugador2 + ": " + puntosJugador2 + " puntos"
Si puntosJugador1 > puntosJugador2 Entonces
Escribir "\n¡" + nombreJugador1 + " GANASTE EL JUEGO!"
Llamar a menuFinJuego()
Sino Si puntosJugador2 > puntosJugador1 Entonces
Escribir "\n¡" + nombreJugador2 + " GANASTE EL JUEGO!"
Llamar a menuFinJuego()
Sino
Escribir "\nEL JUEGO TERMINA EMPATE."
Llamar a menuFinJuego()
Fin Si
Fin basketball
Subprograma manejarFaltas(Cadena jugador, Cadena jugadorTiro, Entero puntosJugador, Doble probabilidadFalta)
var probabilidad = random
Si probabilidad < probabilidadFalta Entonces
Escribir " " + jugador + " cometió falta."
Escribir "Tiro libre para: " + jugadorTiro
Escribir "Presionar Enter para realizar el tiro libre..."
var probabilidadTiroLibre = random
Si probabilidadTiroLibre < TIRO_LIBRE_PROBABILIDAD_ANOTAR Entonces
Escribir "\nFelicidades " + jugadorTiro + " acertaste el tiro libre sumas " + TIRO_LIBRE_PUNTOS + " puntos..."
puntosJugador = puntosJugador + 2
Sino
Escribir "Tiro libre fue fallado..."
Fin Si
Fin Si
Fin manejoDeFaltas
Subprograma dosMilCuartentaYOcho()
Definir tableroJuego como Entero[][] de tamaño 4x4
Llamar agregarNumeroAleatorio(tableroJuego)
Escribir "\nHAS ELEGIDO 2048, ¿podrás lograrlo?..."
Hacer
generarTablero(tableroJuego)
Escribir "\nIngrese una dirección: "
Escribir "w. Arriba..."
Escribir "s. Abajo..."
Escribir "d. Derecha..."
Escribir "a. Izquierda..."
Escribir "x. Si deseas salir del juego..."
var seleccion
Si seleccion igual a "w" o seleccion igual a "s" o seleccion igual a "d" o seleccion igual a "a" Entonces
Llamar mover(tableroJuego, seleccion)
Llamar agregarNumeroAleatorio(tableroJuego)
Si no hayEspacio(tableroJuego) o ganar2048(tableroJuego) Entonces
Llamar generarTablero(tableroJuego)
Si ganar2048(tableroJuego) Entonces
Imprimir "FELICIDADES LO LOGRASTE"
Llamar reiniciarTablero(tableroJuego)
Llamar menuFinJuego()
Sino
Escribir "LO SIENTO, HAS PERDIDO"
Llamar reiniciarTablero(tableroJuego)
Llamar menuFinJuego()
Fin Si
Romper
Fin Si
Sino Si seleccion igual a "x" Entonces
contVecesSalirJuego2048++
Llamar reiniciarTablero(tableroJuego)
Llamar menuPrincipal()
Sino
Escribir "Selección inválida, ingrese las opciones: w, s, d, a (para realizar movimiento) o la opción: x para salir del
juego..."
Fin Si
Mientras Verdadero
Fin dosMilCuarentaYOcho
Subprograma generarTablero(var tablero)
Para cada var i en rango(0, longitud(tablero))
Para cada var j en rango(0, longitud(tablero[i]))
Si tablero[i][j] igual a 0 Entonces
Escribir "|_|"
Sino
Escribir "|", tablero[i][j], "|"
Fin Si
Fin Para
Fin Para
Fin generarTablero
Subprograma agregarNumeroAleatorio(var tablero)
var fila
var columna
Si no casillaDeInicio Entonces
Hacer
fila = generarNumeroAleatorio(0, 3)
columna = generarNumeroAleatorio(0, 3)
Mientras tablero[fila][columna] no igual a 0
tablero[fila][columna] = 2
casillaDeInicio = Verdadero
Sino
Hacer
fila = generarNumeroAleatorio(0, 3)
columna = generarNumeroAleatorio(0, 3)
Mientras tablero[fila][columna] no igual a 0
tablero[fila][columna] = si generarNumeroAleatorio(0, 1) menor que 0.5 entonces 2 sino 4
Fin Si
Fin agregarNumeroAleatorio
Subprograma mover(var tablero, var movimientos)
Según movimientos Hacer
Caso "w":
Llamar moverArriba(tablero)
Caso "a":
Llamar moverIzquierda(tablero)
Caso "s":
Llamar moverAbajo(tablero)
Caso "d":
Llamar moverDerecha(tablero)
Fin Según
Fin mover
Subprograma moverIzquierda(var tablero)
Para cada fila i en el tablero Hacer
Para cada columna j en el rango de 0 a longitud de tablero[i] - 1 Hacer
Si tablero[i][j] no es igual a 0 Entonces
Para cada columna k en el rango de j + 1 a longitud de tablero[i] Hacer
Si tablero[i][k] no es igual a 0 Entonces
Si tablero[i][j] es igual a tablero[i][k] Entonces
tablero[i][j] *= 2
tablero[i][k] = 0
Fin Si
Salir del bucle
Fin Si
Fin Para
Fin Si
Fin Para
Para cada columna j en el rango de 0 a longitud de tablero[i] - 1 Hacer
Si tablero[i][j] es igual a 0 Entonces
Para cada columna k en el rango de j + 1 a longitud de tablero[i] Hacer
Si tablero[i][k] no es igual a 0 Entonces
tablero[i][j] = tablero[i][k]
tablero[i][k] = 0
Salir del bucle
Fin Si
Fin Para
Fin Si
Fin Para
Fin Para
Fin moverIzquierda
Subprograma moverArriba(var tablero)
Para cada columna j en el tablero Hacer
Para cada fila i en el rango de 0 a longitud de tablero - 1 Hacer
Si tablero[i][j] no es igual a 0 Entonces
Para cada fila k en el rango de i + 1 a longitud de tablero Hacer
Si tablero[k][j] no es igual a 0 Entonces
Si tablero[i][j] es igual a tablero[k][j] Entonces
tablero[i][j] *= 2
tablero[k][j] = 0
Fin Si
Salir del bucle
Fin Si
Fin Para
Fin Si
Fin Para
Para cada fila i en el rango de 0 a longitud de tablero - 1 Hacer
Si tablero[i][j] es igual a 0 Entonces
Para cada fila k en el rango de i + 1 a longitud de tablero Hacer
Si tablero[k][j] no es igual a 0 Entonces
tablero[i][j] = tablero[k][j]
tablero[k][j] = 0
Salir del bucle
Fin Si
Fin Para
Fin Si
Fin Para
Fin Para
Fin moverArriba
Subprograma moverDerecha(var tablero)
Para cada fila i en el tablero Hacer
Para cada columna j en el rango de longitud de tablero[i] - 1 a 1 Hacer
Si tablero[i][j] no es igual a 0 y tablero[i][j] es igual a tablero[i][j - 1] Entonces
tablero[i][j] *= 2
tablero[i][j - 1] = 0
Fin Si
Fin Para
Para cada columna j en el rango de longitud de tablero[i] - 1 a 1 Hacer
Si tablero[i][j] es igual a 0 Entonces
Para cada columna k en el rango de j - 1 a 0 Hacer
Si tablero[i][k] no es igual a 0 Entonces
tablero[i][j] = tablero[i][k]
tablero[i][k] = 0
Salir del bucle
Fin Si
Fin Para
Fin Si
Fin Para
Fin Para
Fin moverDerecha
Subprograma moverAbajo(var tablero)
Para cada columna j en el tablero Hacer
Para cada fila i en el rango de longitud de tablero - 1 a 1 Hacer
Si tablero[i][j] no es igual a 0 Entonces
Para cada fila k en el rango de i - 1 a 0 Hacer
Si tablero[k][j] no es igual a 0 Entonces
Si tablero[i][j] es igual a tablero[k][j] Entonces
tablero[i][j] *= 2
tablero[k][j] = 0
Fin Si
Salir del bucle
Fin Si
Fin Para
Fin Si
Fin Para
Para cada fila i en el rango de longitud de tablero - 1 a 1 Hacer
Si tablero[i][j] es igual a 0 Entonces
Para cada fila k en el rango de i - 1 a 0 Hacer
Si tablero[k][j] no es igual a 0 Entonces
tablero[i][j] = tablero[k][j]
tablero[k][j] = 0
Salir del bucle
Fin Si
Fin Para
Fin Si
Fin Para
Fin Para
Fin moverAbajo
Función hayEspacio(var tablero)
Para cada fila i en el tablero Hacer
var columna = tablero[i]
Para cada columna j en la columna Hacer
Si casillaVacia(tablero[i][j]) Entonces
Devolver verdadero
Fin Si
Fin Para
Fin Para
Devolver falso
Fin hayEspacio
Función ganar2048(var tablero)
Para cada fila i en tablero Hacer
var columnas = tablero[i]
Para cada columna j en columnas Hacer
Si tablero[i][j] es igual a 2048 Entonces
Devolver verdadero
Fin Si
Fin Para
Fin Para
Devolver falso
Fin ganar 2048
Función casillaVacia(var valorCasilla)
Si valorCasilla es igual a 0 Entonces
Devolver verdadero
Sino
Devolver falso
Fin Si
Fin casillaVacia
Subprograma reiniciarTablero(var tablero)
Para cada fila i en el tablero hacer
Para cada columna j en la fila i hacer
tablero[i][j] = 0
Fin Para
Fin Para
Fin reinciarTablero
Subprograma reportes()
Escribir “Veces que se ha iniciado el juego Wordle: " + contInicioWordle)
Escribir "Veces que se ha iniciado el juego Basketball: " + contInicioBasketball
Escribir "Veces que se ha iniciado el juego 2048: " + contInicio2048
Escribir "Veces que se ha perdido en el juego Wordle: " + contVecesPerdidasWordle
Escribir "Veces que se ha intentado adivinar una palabra en el juego Wordle: " + contVecesIntentandoAdivinar
Escribir "Veces que se ha salido del juego 2048 sin terminarlo: " + contVecesSalirJuego2048
Var opciones = 0
hacer
Escribir("\nSeleccione opción que desea realizar:")
Escribir ("1. Regresar al menú principal...")
Escribir ("2. Salir...")
Escribir ("Ingresar opción:")
Leer opciones
Mientras que opciones sea igual a 1 o opciones sea igual a 2
Si opciones es igual a 1 entonces
Llamar a menuPrincipal()
Sino Si opciones es igual a 2 entonces
Salir del programa
Fin Si
Fin reportes