Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Se encarga de poner el nmero pasado como argumento en un arreglo cifra por cifra
- // numero (entero): el nmero del que se extraen las cifras
- // arregloNumeros (arreglo de enteros): contiene las cuatro cifras del nmero
- 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
- // Funcin que cuenta la cantidad de cifras que contiene el nmero pasado como argumento.
- // numero (entero): El nmero 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 nmero 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 nmero 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
- // nmero: La cifra a buscar en el nmero aleatorio generado por el sistema.
- // arregloOriginal1: Arreglo que contiene las cifras del nmero aleatorio generado por el sistema.
- SubProceso encontro<-BuscarPica(cifra,arregloOriginal1)
- Definir encontro Como Logico;
- Definir i Como Entero;
- encontro <- Falso;
- Para i <- 1 Hasta 4 Hacer
- Si arregloOriginal1(i) = cifra Entonces
- encontro<-Verdadero;
- FinPara;
- FinSi
- FinPara
- FinSubProceso
- // Punto de Entrada inicia la ejecucin del juego, invoca subprocesos y funciones auxiliares.
- Proceso PuntoEntrada
- // Arreglo que contendr£ las cifras del nmero aleatorio generado por el sistema.
- Dimension arregloOriginal1(4);
- Dimension arregloOriginal2(4);
- // Arreglo que contendr£ las cifras del nmero intentado por el usuario.
- Dimension arregloCifrasIntentoUsuario1(4);
- Dimension arregloCifrasIntentoUsuario2(4);
- Definir numeroDigitadoUsuario Como Entero;
- Definir numeroJugador1 Como Entero;
- Definir numeroJugador2 Como Entero;
- // pide el nmero al jugador
- // Exige que el jugador escriba un nmero de cuatro (4) d■gitos, y
- // que adem£s no contenga cifras repetidas
- Repetir
- Escribir "Jugador 1 d■gite su nmero: ";
- Leer numeroJugador1;
- Si ContarCifras(numeroJugador1) = 4 Entonces
- PasarAArreglo(numeroJugador1,arregloOriginal1);
- Sino
- numeroJugador1 = 12345;
- Escribir "";
- Escribir "*** Advertencia Jugador 1 ***";
- Escribir "[X] D■gite nmero de cuatro d■gitos";
- Escribir "[X] D■gite nmero sin cifras repetidas";
- Escribir "";
- FinSi
- Hasta Que HayRepetidos(arregloOriginal1) = Falso
- // pide el nmero al jugador
- // Exige que el jugador escriba un nmero de cuatro (4) d■gitos, y
- // que adem£s no contenga cifras repetidas
- Repetir
- Escribir "Jugador 2 d■gite su nmero: ";
- Leer numeroJugador2;
- Si ContarCifras(numeroJugador2) = 4 Entonces
- PasarAArreglo(numeroJugador2,arregloOriginal2);
- Sino
- numeroJugador2 = 12345;
- Escribir "";
- Escribir "*** Advertencia Jugador 2 ***";
- Escribir "[X] D■gite nmero de cuatro d■gitos";
- Escribir "[X] D■gite nmero sin cifras repetidas";
- Escribir "";
- FinSi
- Hasta Que HayRepetidos(arregloOriginal2) = Falso
- // etc de variables
- Definir picas, fijas, indice, intentos, jugadorGanador Como Entero;
- Definir adivinado Como Logico;
- adivinado <- Falso;
- intentos <- 0;
- jugadorGanador <- 0;
- // empieza la comprobacin de los intentos del jugador
- Repetir
- // comprueba que el nmero 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 nmero digitado por el usuario.
- Repetir
- Escribir "Jugador 1 adivine el nmero (Intentos restantes: ", ( 10 - intentos ), "): ";
- Leer numeroDigitadoUsuario;
- Si ContarCifras(numeroDigitadoUsuario) = 4 Entonces
- PasarAArreglo(numeroDigitadoUsuario,arregloCifrasIntentoUsuario1);
- Sino
- numeroDigitadoUsuario = 12345;
- Escribir "";
- Escribir "*** Advertencia Jugador 1 ***";
- Escribir "[X] D■gite nmero de cuatro d■gitos";
- Escribir "[X] D■gite nmero sin cifras repetidas";
- Escribir "";
- FinSi
- Hasta Que ContarCifras(numeroDigitadoUsuario) = 4 & HayRepetidos(arregloCifrasIntentoUsuario1) = Falso
- // en cada intento se reestablece los contadores de picas y fijas
- picas <- 0;
- fijas <- 0;
- // cuenta el nmero de fijas y de picas.
- Para indice <- 1 Hasta 4 Hacer
- Si arregloOriginal2(indice) = arregloCifrasIntentoUsuario1(indice) Entonces
- fijas <- fijas + 1;
- Sino
- // Es posible que se trate de una pica, entonces comprueba su existencia
- Si BuscarPica(arregloCifrasIntentoUsuario1(indice), arregloOriginal2) = Verdadero Entonces
- picas <- picas + 1;
- FinSi
- FinSi
- FinPara
- // El jugador ha adivinado el nmero cuando el nmero de
- // picas es igual a 4.
- Si fijas = 4 Entonces
- adivinado <- Verdadero;
- jugadorGanador <- 1;
- Sino // En caso contrario le muestra el nmero de fijas y picas.
- Escribir "";
- Escribir "--- Estado Actual Jugador 1 ---"
- Escribir "Picas: ", picas, " - Fijas: ", fijas;
- Escribir "---------------------";
- Escribir "";
- FinSi
- Si adivinado = Falso Entonces
- Repetir
- Escribir "Jugador 2 adivine el nmero (Intentos restantes: ", ( 10 - intentos ), "): ";
- Leer numeroDigitadoUsuario;
- Si ContarCifras(numeroDigitadoUsuario) = 4 Entonces
- PasarAArreglo(numeroDigitadoUsuario,arregloCifrasIntentoUsuario2);
- Sino
- numeroDigitadoUsuario = 12345;
- Escribir "";
- Escribir "*** Advertencia Jugador 2 ***";
- Escribir "[X] D■gite nmero de cuatro d■gitos";
- Escribir "[X] D■gite nmero sin cifras repetidas";
- Escribir "";
- FinSi
- Hasta Que ContarCifras(numeroDigitadoUsuario) = 4 & HayRepetidos(arregloCifrasIntentoUsuario2) = Falso
- // en cada intento se reestablece los contadores de picas y fijas
- picas <- 0;
- fijas <- 0;
- // cuenta el nmero de fijas y de picas.
- Para indice <- 1 Hasta 4 Hacer
- Si arregloOriginal1(indice) = arregloCifrasIntentoUsuario2(indice) Entonces
- fijas <- fijas + 1;
- Sino
- // Es posible que se trate de una pica, entonces comprueba su existencia
- Si BuscarPica(arregloCifrasIntentoUsuario2(indice), arregloOriginal1) = Verdadero Entonces
- picas <- picas + 1;
- FinSi
- FinSi
- FinPara
- // El jugador ha adivinado el nmero cuando el nmero de
- // picas es igual a 4.
- Si fijas = 4 Entonces
- adivinado <- Verdadero;
- jugadorGanador <- 2;
- Sino // En caso contrario le muestra el nmero de fijas y picas.
- Escribir "";
- Escribir "--- Estado Actual Jugador 2 ---"
- Escribir "Picas: ", picas, " - Fijas: ", fijas;
- Escribir "---------------------";
- Escribir "";
- FinSi
- FinSi
- intentos<- intentos + 1;
- Hasta Que adivinado = Verdadero O Intentos = 10
- // Felicita al jugador cuando ha adivinado el nmero
- Si jugadorGanador = 1 Entonces
- Escribir "";
- Escribir "***** Felicitaciones Jugador 1. Ha adivinado el nmero: ", numeroJugador2, " *****";
- Escribir "";
- FinSi
- Si jugadorGanador = 2 Entonces
- Escribir "";
- Escribir "***** Felicitaciones Jugador 2. Ha adivinado el nmero: ", numeroJugador1, " *****";
- Escribir "";
- FinSi
- Si jugadorGanador = 0 Entonces
- Escribir "";
- Escribir "Lo sentimos. No han logrado adivinar el nmero.";
- Escribir "";
- FinSi
- FinProceso
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement