Diversión Interactiva: Wasaaaa Edition




 

Este programa, creado en PSeInt, es una compilación de varios proyectos que he desarrollado, todos reunidos en una sola aplicación para facilitar su uso. El programa incluye una variedad de juegos interactivos diseñados para proporcionar entretenimiento y desafío. Además, cuenta con una funcionalidad de conversión de números romanos que permite a los usuarios convertir números romanos a su equivalente decimal y viceversa. Esta característica es especialmente útil para aquellos interesados en la historia y las matemáticas. En resumen, este programa es una combinación de diversión y aprendizaje, diseñado para ser tanto educativo como entretenido.

--------------------------------------------------------------------------------

Funcion menu

Escribir "********-----*** Bienvenidos a Wasaaaa ***-----********"

Escribir "En este programa encontraras cosas divertidas de hacer :)"

Escribir " Por favor, elija la opcion que mas le llame la atencion "

Escribir "1. Números romanos"

Escribir "2. Hanoi"

Escribir "3. Misil"

Escribir "4. Piedra, papel o tijera"

Escribir "5. Salir"

FinFuncion

Algoritmo opciones

repetir 

menu

leer opcion

segun opcion hacer

1: 

// leer el número

Escribir "Aqui aprendera que simbolo romano son los numeros que ingrese"

Escribir "Ingrese un número entre 1 y 1000"

Leer Numero

// controlar que sea válido para convertir

SePuedeConvertir<-Verdadero

Si Numero=0 Entonces

Escribir "No existe ningún símbolo para representar el 0"

SePuedeConvertir<-Falso

FinSi

Si Numero<>trunc(numero) Entonces

Escribir "El número debe ser entero"

SePuedeConvertir<-Falso

FinSi

Si Numero>1000 Entonces

Escribir "Muy alto"

SePuedeConvertir<-Falso

FinSi

Si Numero<0 Entonces

Escribir "Debe ser positivo"

SePuedeConvertir<-Falso

FinSi

// realizar la conversión

Si SePuedeConvertir Entonces        

Si Numero=1000 Entonces

Escribir "M"

Sino

Dimension nu[10], nd[10], nc[10] // notación para unidades, decenas y centenas

nu[1]<-''; nu[2]<-'I'; nu[3]<-'II'; nu[4]<-'III'; nu[5]<-'IV'; nu[6]<-'V'; nu[7]<-'VI'; nu[8]<-'VII'; nu[9]<-'VIII'; nu[10]<-'IX'

nd[1]<-''; nd[2]<-'X'; nd[3]<-'XX'; nd[4]<-'XXX'; nd[5]<-'XL'; nd[6]<-'L'; nd[7]<-'LX'; nd[8]<-'LXX'; nd[9]<-'LXXX'; nd[10]<-'XC'

nc[1]<-''; nc[2]<-'C'; nc[3]<-'CC'; nc[4]<-'CCC'; nc[5]<-'CD'; nc[6]<-'D'; nc[7]<-'DC'; nc[8]<-'DCC'; nc[9]<-'DCCC'; nc[10]<-'CM'

centenas<-trunc(Numero/100) MOD 10

decenas<-trunc(Numero/10) MOD 10

unidades<-Numero MOD 10

Escribir nc[centenas+1],nd[decenas+1],nu[unidades+1]

FinSi

FinSi

2: 

Dimension torres[3,10], cant_discos[3]

// pedir y validar cuantos discos colocar en la primer torre

Escribir "Muestre su destreza aqui :)"

Escribir "Ingrese el numero de discos (1-8):"

leer discos

mientras discos<1 O discos>8 Hacer

Escribir "El numero de discos debe ser mayor a 0 y menor a 5:"

leer discos

finmientras

// inicializar los datos

cant_discos[1]<-discos

cant_discos[2]<-0

cant_discos[3]<-0

Para i<-1 Hasta discos hacer

torres[1,i]<-discos-i+1

FinPara

// jugar!

cant_movs<-0

Mientras cant_discos[3]<>discos Hacer // mientras no esten todos los discos en la tercer torre, el juego sigue

Limpiar Pantalla

Para i<-1 Hasta 3 Hacer // dibujar las tres torres

escribir "Torre ",i

si cant_discos[i]=0 Entonces

Escribir ""

sino

para j<-cant_discos[i] hasta 1 con paso -1 Hacer // recorrer los discos de la torre, de arriba hacia abajo

segun torres[i,j] Hacer // dibujar cada disco

1: Escribir "                   XX"

2: Escribir "                 XXXXXX"

3: Escribir "               XXXXXXXXXX"

4: Escribir "             XXXXXXXXXXXXXX"

5: Escribir "           XXXXXXXXXXXXXXXXXX"

6: Escribir "         XXXXXXXXXXXXXXXXXXXXXX"

7: Escribir "       XXXXXXXXXXXXXXXXXXXXXXXXXX"

8: Escribir "     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

finsegun

FinPara

finsi

Escribir "   ----------------------------------"

Escribir ""

FinPara

// solicitar movimiento

Escribir "Mover desde la torre: "

leer t1

Escribir "hacia la torre: "

leer t2

si t1<1 O t1>3 O t2<1 O t2>3 Entonces // controlar que el nro de torre sea valido

Escribir "Movimiento invalido"

Esperar Tecla

sino

Si cant_discos[t1]=0 Entonces // controlar que la torre 1 tengo al menos un disco

Escribir "Movimiento invalido"

Esperar Tecla

Sino

disco_a_mover <- torres[t1,cant_discos[t1]] // obtener tamanio del disco que se quiere mover

puede_mover<-verdadero

Si cant_discos[t2]<>0 entonces // controlar que la torre dos no tenga discos o tenga solo discos mas grandes

Si torres[t2,cant_discos[t2]]<disco_a_mover Entonces

puede_mover<-Falso

FinSi

FinSi

Si puede_mover Entonces // si paso todos los controles, mover

cant_movs <- cant_movs+1

cant_discos[t2]<-cant_discos[t2]+1

torres[t2,cant_discos[t2]] <- disco_a_mover

cant_discos[t1]<-cant_discos[t1]-1

Sino

Escribir "Movimiento invalido"

Esperar Tecla

FinSi

FinSi

FinSi

FinMientras

// mostrar resultado

Limpiar Pantalla

Escribir "Juego finalizado en ",cant_movs," movimientos!"

3:

Escribir "*/*-*/-*/-*Animacion de lanzamiento de cohete-*-*/-*/-*/-*"

Escribir "Presione una tecla para iniciar el lanzamiento del Starship de Elon Musk!"

Esperar Tecla

// el arreglo cohete tiene el dibujo del cohete como lineas de texto

dimension cohete[9]

cohete[1]<-"   /|\   "

cohete[2]<-"   |B|   "

cohete[3]<-"   |O|   "

cohete[4]<-"   |M|   "

cohete[5]<-"   |B|   "

cohete[6]<-"  //|\\  "

cohete[7]<-" ***** "

cohete[8]<-"* * * * *"

cohete[9]<-" * * * * "

// primero se muestra la primer parte del dibujo y la cuenta regresiva

Para i<-1 hasta 11 Hacer

Borrar Pantalla

Para j<-1 hasta 15 Hacer

Escribir ""

FinPara

Para j<-1 hasta 6 Hacer

Escribir cohete[j]

FinPara

Escribir ""

Escribir "Lanzamiento en ",11-i

Esperar 1 Segundo

FinPara

// despues se muestra el dibujo completo y cada vez mas arriba

Para i<-1 hasta 15 Hacer

Borrar Pantalla

Para j<-i hasta 15 Hacer

Escribir ""

FinPara

Para j<-1 hasta 8 Hacer

Escribir cohete[j]

FinPara

si i>1 Entonces

Escribir " * * * * "

finsi

Esperar 1/i Segundo

FinPara

// finalmente se va modificando el dibujo para hacer la explosion

// estado tiene un entero que dice en que parte de la explosion va cada linea del dibujo

Dimension estado[6]

estado[1]<-3; estado[2]<-2; estado[3]<-1

estado[4]<-2; estado[5]<-3; estado[6]<-4

Para i<-1 hasta 10 Hacer

Borrar Pantalla

Para j<-1 hasta 6 Hacer

Estado[j]<-Estado[j]-1

segun Estado[j] Hacer

0:  cohete[j]<-"    +    "

-1,-5: cohete[j]<-"   +X+   "

-2,-4: cohete[j]<-"  +XXX+  "

-3: cohete[j]<-" +XXXXX+ "

-6: cohete[j]<-"         "

FinSegun

Escribir cohete[j]

FinPara

Esperar .2 Segundos

FinPara

4:

Definir a, b Como Entero

a= 0

b= 0

Mientras a == b Hacer

Escribir "Jugador 1"

Escribir "1. Piedra"

Escribir "2. Papel"

Escribir "3. Tijera"

leer a

Limpiar Pantalla

si a > 0 y a < 4 Entonces

Escribir "Jugador 2"

Escribir "1. Piedra"

Escribir "2. Papel"

Escribir "3. Tijera"

leer b

Limpiar Pantalla

si b > 0 y b < 4 Entonces

si a == 1 y b == 3 Entonces

Escribir "El ganador es el jugador 1"

sino 

si a == 2 y b ==1 Entonces

Escribir "El ganador es el jugador 1"

sino 

si a == 3 y b ==2 Entonces

Escribir "El ganador es el jugador 1"

FinSi

FinSi

FinSi

si b == 1 y a == 3 Entonces

Escribir "El ganador es el jugador 2"

sino 

si b == 2 y a ==1 Entonces

Escribir "El ganador es el jugador 2"

sino 

si b == 3 y a ==2 Entonces

Escribir "El ganador es el jugador 2"

FinSi

FinSi

FinSi

si a == b Entonces

Escribir "El juego queda empatado"

FinSi

SiNo

Escribir "Ingrese una opcion correcta"

FinSi

SiNo

Escribir "Ingrese una opción correcta"

FinSi

FinMientras

FinSegun

Hasta Que opcion= 5

Escribir "Gracias por usarnos"

FinAlgoritmo






Comentarios