Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Se encarga de poner el número pasado como argumento en un arreglo cifra por cifra
- // numero (entero): el número del que se extraen las cifras
- // arregloNumeros (arreglo de enteros): contiene las cuatro cifras del número
- SubProceso PasarAArreglo(numero,arregloNumeros)
- Definir indiceArreglo Como Entero;
- indiceArreglo<- 4;
- Mientras numero <> 0 Hacer
- arregloNumeros(indiceArreglo)<- numero mod 10;
- numero<- TRUNC(numero/10);
- indiceArreglo<- indiceArreglo - 1;
- FinMientras
- FinSubProceso
- // Función que cuenta la cantidad de cifras que contiene el número pasado como argumento.
- // numero (entero): El número aleatorio generado por el sistema o introducido por el usuario.
- SubProceso cantidadCifras<-ContarCifras(numero)
- Definir cantidadCifras Como Entero;
- cantidadCifras<-0;
- Mientras numero <> 0 Hacer
- numero<- TRUNC(numero / 10);
- cantidadCifras<- cantidadCifras + 1;
- FinMientras
- FinSubProceso
- // Comprueba que no hayan cifras repetidas en el número introducido
- // arregloNumeros: Arreglo con las cifras a comprobar su ocurrencia.
- SubProceso repetido<-HayRepetidos(arregloNumeros)
- Definir repetido Como Logico;
- repetido<- Falso;
- Definir i,j Como Entero;
- // ciclo que busca cifras repetidas en el número introducido
- Para i<-1 Hasta 3 Hacer
- Para j<-(i+1) Hasta 4 Hacer
- Si arregloNumeros(i) = arregloNumeros(j) Entonces
- repetido<- Verdadero;
- FinPara;
- FinSi
- FinPara
- FinPara
- FinSubProceso
- // Busca picas
- // número: La cifra a buscar en el número aleatorio generado por el sistema.
- // arregloOriginal: Arreglo que contiene las cifras del número aleatorio generado por el sistema.
- SubProceso encontro<-BuscarPica(cifra,arregloOriginal)
- Definir encontro Como Logico;
- Definir i Como Entero;
- encontro <- Falso;
- Para i <- 1 Hasta 4 Hacer
- Si arregloOriginal(i) = cifra Entonces
- encontro<-Verdadero;
- FinPara;
- FinSi
- FinPara
- FinSubProceso
- // Punto de Entrada inicia la ejecución del juego, invoca subprocesos y funciones auxiliares.
- Proceso PuntoEntrada
- // Arreglo que contendrá las cifras del número aleatorio generado por el sistema.
- Dimension arregloOriginal(4);
- // Arreglo que contendrá las cifras del número intentado por el usuario.
- Dimension arregloCifrasIntentoUsuario(4);
- Definir numeroDigitadoUsuario Como Entero;
- Definir numeroAleatorio Como Entero;
- // pide el número al jugador
- // Exige que el jugador escriba un número de cuatro (4) dígitos, y
- // que además no contenga cifras repetidas
- Repetir
- numeroAleatorio <- 1000 + azar(9000);
- PasarAArreglo(numeroAleatorio,arregloOriginal);
- Hasta Que HayRepetidos(arregloOriginal) = Falso
- // etc de variables
- Definir picas, fijas, indice, intentos Como Entero;
- Definir adivinado Como Logico;
- adivinado <- Falso;
- intentos <- 0;
- // empieza la comprobación de los intentos del jugador
- Repetir
- // comprueba que el número digitado por le usuario contenga cuatro cifras
- // además la salida del ciclo está condicionada por la unicidad de cada
- // una de las cifras del número digitado por el usuario.
- Repetir
- Escribir "Adivine el número (Intentos restantes: ", ( 10 - intentos ), "): ";
- Leer numeroDigitadoUsuario;
- Si ContarCifras(numeroDigitadoUsuario) = 4 Entonces
- PasarAArreglo(numeroDigitadoUsuario,arregloCifrasIntentoUsuario);
- Sino
- numeroDigitadoUsuario = 12345;
- Escribir "";
- Escribir "*** Advertencia ***";
- Escribir "[X] Dígite número de cuatro dígitos";
- Escribir "[X] Dígite número sin cifras repetidas";
- Escribir "";
- FinSi
- Hasta Que ContarCifras(numeroDigitadoUsuario) = 4 & HayRepetidos(arregloCifrasIntentoUsuario) = Falso
- // en cada intento se reestablece los contadores de picas y fijas
- picas <- 0;
- fijas <- 0;
- // cuenta el número de fijas y de picas.
- Para indice <- 1 Hasta 4 Hacer
- Si arregloOriginal(indice) = arregloCifrasIntentoUsuario(indice) Entonces
- fijas <- fijas + 1;
- Sino
- // Es posible que se trate de una pica, entonces comprueba su existencia
- Si BuscarPica(arregloCifrasIntentoUsuario(indice), arregloOriginal) = Verdadero Entonces
- picas <- picas + 1;
- FinSi
- FinSi
- FinPara
- // El jugador ha adivinado el número cuando el número de
- // picas es igual a 4.
- Si fijas = 4 Entonces
- adivinado <- Verdadero;
- Sino // En caso contrario le muestra el número de fijas y picas.
- Escribir "";
- Escribir "--- Estado Actual ---"
- Escribir "Picas: ", picas, " - Fijas: ", fijas;
- Escribir "---------------------";
- Escribir "";
- intentos<- intentos + 1;
- FinSi
- Hasta Que adivinado = Verdadero O Intentos = 10
- // Felicita al jugador cuando ha adivinado el número
- Si adivinado = Verdadero Entonces
- Escribir "";
- Escribir "***** Felicitaciones. Ha adivinado el número: ", numeroAleatorio, " *****";
- Escribir "";
- Sino
- Escribir "";
- Escribir "Lo sentimos. No ha logrado adivinar el número: ", numeroAleatorio , ".";
- Escribir "";
- FinSi
- FinProceso
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement