Advertisement
Fhernd

FijasYPicas2.psc

May 23rd, 2013
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.05 KB | None | 0 0
  1. // Se encarga de poner el nmero pasado como argumento en un arreglo cifra por cifra
  2. // numero (entero): el nmero del que se extraen las cifras
  3. // arregloNumeros (arreglo de enteros): contiene las cuatro cifras del nmero
  4. SubProceso PasarAArreglo(numero,arregloNumeros)
  5.     Definir indiceArreglo Como Entero;
  6.     indiceArreglo<- 4;
  7.    
  8.     Mientras numero <> 0 Hacer
  9.         arregloNumeros(indiceArreglo)<- numero mod 10;
  10.        
  11.         numero<- TRUNC(numero/10);
  12.        
  13.         indiceArreglo<- indiceArreglo - 1;
  14.     FinMientras
  15. FinSubProceso
  16.  
  17. // Funci￳n que cuenta la cantidad de cifras que contiene el nmero pasado como argumento.
  18. // numero (entero): El nmero aleatorio generado por el sistema o introducido por el usuario.
  19. SubProceso cantidadCifras<-ContarCifras(numero)
  20.     Definir cantidadCifras Como Entero;
  21.     cantidadCifras<-0;
  22.        
  23.     Mientras numero <> 0 Hacer
  24.         numero<- TRUNC(numero / 10);
  25.         cantidadCifras<- cantidadCifras + 1;
  26.     FinMientras
  27. FinSubProceso
  28.  
  29. // Comprueba que no hayan cifras repetidas en el nmero introducido
  30. // arregloNumeros: Arreglo con las cifras a comprobar su ocurrencia.
  31. SubProceso repetido<-HayRepetidos(arregloNumeros)
  32.     Definir repetido Como Logico;
  33.     repetido<- Falso;
  34.    
  35.     Definir i,j Como Entero;
  36.    
  37.     // ciclo que busca cifras repetidas en el nmero introducido
  38.     Para i<-1 Hasta 3 Hacer
  39.         Para j<-(i+1) Hasta 4 Hacer
  40.             Si arregloNumeros(i) = arregloNumeros(j) Entonces
  41.                 repetido<- Verdadero;
  42.                 FinPara;
  43.             FinSi
  44.         FinPara
  45.     FinPara
  46. FinSubProceso
  47.  
  48. // Busca picas
  49. // nmero: La cifra a buscar en el nmero aleatorio generado por el sistema.
  50. // arregloOriginal1: Arreglo que contiene las cifras del nmero aleatorio generado por el sistema.
  51. SubProceso encontro<-BuscarPica(cifra,arregloOriginal1)
  52.     Definir encontro Como Logico;
  53.     Definir i Como Entero;
  54.    
  55.     encontro <- Falso;
  56.    
  57.     Para i <- 1 Hasta 4 Hacer
  58.         Si arregloOriginal1(i) = cifra Entonces
  59.             encontro<-Verdadero;
  60.             FinPara;
  61.         FinSi
  62.     FinPara
  63. FinSubProceso
  64.  
  65. // Punto de Entrada inicia la ejecuci￳n del juego, invoca subprocesos y funciones auxiliares.
  66. Proceso PuntoEntrada
  67.     // Arreglo que contendr£ las cifras del nmero aleatorio generado por el sistema.
  68.     Dimension arregloOriginal1(4);
  69.     Dimension arregloOriginal2(4);
  70.     // Arreglo que contendr£ las cifras del nmero intentado por el usuario.
  71.     Dimension arregloCifrasIntentoUsuario1(4);
  72.     Dimension arregloCifrasIntentoUsuario2(4);
  73.    
  74.     Definir numeroDigitadoUsuario Como Entero;
  75.     Definir numeroJugador1 Como Entero;
  76.     Definir numeroJugador2 Como Entero;
  77.    
  78.     // pide el nmero al jugador
  79.     // Exige que el jugador escriba un nmero de cuatro (4) d■gitos, y
  80.     // que adem£s no contenga cifras repetidas
  81.     Repetir
  82.        
  83.         Escribir "Jugador 1 d■gite su nmero: ";
  84.         Leer numeroJugador1;
  85.        
  86.         Si ContarCifras(numeroJugador1) = 4 Entonces
  87.             PasarAArreglo(numeroJugador1,arregloOriginal1);
  88.         Sino
  89.             numeroJugador1 = 12345;
  90.             Escribir "";
  91.             Escribir "*** Advertencia Jugador 1 ***";
  92.             Escribir "[X] D■gite nmero de cuatro d■gitos";
  93.             Escribir "[X] D■gite nmero sin cifras repetidas";
  94.             Escribir "";
  95.         FinSi
  96.        
  97.     Hasta Que HayRepetidos(arregloOriginal1) = Falso
  98.    
  99.     // pide el nmero al jugador
  100.     // Exige que el jugador escriba un nmero de cuatro (4) d■gitos, y
  101.     // que adem£s no contenga cifras repetidas
  102.     Repetir
  103.        
  104.         Escribir "Jugador 2 d■gite su nmero: ";
  105.         Leer numeroJugador2;
  106.        
  107.         Si ContarCifras(numeroJugador2) = 4 Entonces
  108.             PasarAArreglo(numeroJugador2,arregloOriginal2);
  109.         Sino
  110.             numeroJugador2 = 12345;
  111.             Escribir "";
  112.             Escribir "*** Advertencia Jugador 2 ***";
  113.             Escribir "[X] D■gite nmero de cuatro d■gitos";
  114.             Escribir "[X] D■gite nmero sin cifras repetidas";
  115.             Escribir "";
  116.         FinSi
  117.        
  118.     Hasta Que HayRepetidos(arregloOriginal2) = Falso
  119.    
  120.     // etc de variables
  121.     Definir picas, fijas, indice, intentos, jugadorGanador Como Entero;
  122.     Definir adivinado Como Logico;
  123.     adivinado <- Falso;
  124.     intentos <- 0;
  125.     jugadorGanador <- 0;
  126.    
  127.     // empieza la comprobaci￳n de los intentos del jugador
  128.     Repetir
  129.         // comprueba que el nmero digitado por le usuario contenga cuatro cifras
  130.         // adem£s la salida del ciclo est£ condicionada por la unicidad de cada
  131.         // una de las cifras del nmero digitado por el usuario.
  132.         Repetir
  133.             Escribir "Jugador 1 adivine el nmero (Intentos restantes: ", ( 10 - intentos ), "): ";
  134.             Leer numeroDigitadoUsuario;
  135.            
  136.             Si ContarCifras(numeroDigitadoUsuario) = 4 Entonces
  137.                 PasarAArreglo(numeroDigitadoUsuario,arregloCifrasIntentoUsuario1);
  138.             Sino
  139.                 numeroDigitadoUsuario = 12345;
  140.                 Escribir "";
  141.                 Escribir "*** Advertencia Jugador 1 ***";
  142.                 Escribir "[X] D■gite nmero de cuatro d■gitos";
  143.                 Escribir "[X] D■gite nmero sin cifras repetidas";
  144.                 Escribir "";
  145.             FinSi
  146.         Hasta Que ContarCifras(numeroDigitadoUsuario) = 4  & HayRepetidos(arregloCifrasIntentoUsuario1) = Falso
  147.        
  148.         // en cada intento se reestablece los contadores de picas y fijas
  149.         picas <- 0;
  150.         fijas <- 0;
  151.        
  152.         // cuenta el nmero de fijas y de picas.
  153.         Para indice <- 1 Hasta 4 Hacer
  154.             Si arregloOriginal2(indice) = arregloCifrasIntentoUsuario1(indice) Entonces
  155.                 fijas <- fijas + 1;
  156.             Sino
  157.                 // Es posible que se trate de una pica, entonces comprueba su existencia
  158.                 Si BuscarPica(arregloCifrasIntentoUsuario1(indice), arregloOriginal2) = Verdadero Entonces
  159.                     picas <- picas + 1;
  160.                 FinSi
  161.             FinSi
  162.         FinPara
  163.        
  164.         // El jugador ha adivinado el nmero cuando el nmero de
  165.         // picas es igual a 4.
  166.         Si fijas = 4 Entonces
  167.             adivinado <- Verdadero;
  168.             jugadorGanador <- 1;
  169.         Sino // En caso contrario le muestra el nmero de fijas y picas.
  170.             Escribir "";
  171.             Escribir "--- Estado Actual Jugador 1 ---"
  172.             Escribir "Picas: ", picas, " - Fijas: ", fijas;
  173.             Escribir "---------------------";
  174.             Escribir "";
  175.         FinSi
  176.        
  177.         Si adivinado = Falso Entonces
  178.    
  179.             Repetir
  180.                 Escribir "Jugador 2 adivine el nmero (Intentos restantes: ", ( 10 - intentos ), "): ";
  181.                 Leer numeroDigitadoUsuario;
  182.                
  183.                 Si ContarCifras(numeroDigitadoUsuario) = 4 Entonces
  184.                     PasarAArreglo(numeroDigitadoUsuario,arregloCifrasIntentoUsuario2);
  185.                 Sino
  186.                     numeroDigitadoUsuario = 12345;
  187.                     Escribir "";
  188.                     Escribir "*** Advertencia Jugador 2 ***";
  189.                     Escribir "[X] D■gite nmero de cuatro d■gitos";
  190.                     Escribir "[X] D■gite nmero sin cifras repetidas";
  191.                     Escribir "";
  192.                 FinSi
  193.             Hasta Que ContarCifras(numeroDigitadoUsuario) = 4  & HayRepetidos(arregloCifrasIntentoUsuario2) = Falso
  194.            
  195.             // en cada intento se reestablece los contadores de picas y fijas
  196.             picas <- 0;
  197.             fijas <- 0;
  198.            
  199.             // cuenta el nmero de fijas y de picas.
  200.             Para indice <- 1 Hasta 4 Hacer
  201.                 Si arregloOriginal1(indice) = arregloCifrasIntentoUsuario2(indice) Entonces
  202.                     fijas <- fijas + 1;
  203.                 Sino
  204.                     // Es posible que se trate de una pica, entonces comprueba su existencia
  205.                     Si BuscarPica(arregloCifrasIntentoUsuario2(indice), arregloOriginal1) = Verdadero Entonces
  206.                         picas <- picas + 1;
  207.                     FinSi
  208.                 FinSi
  209.             FinPara
  210.            
  211.             // El jugador ha adivinado el nmero cuando el nmero de
  212.             // picas es igual a 4.
  213.             Si fijas = 4 Entonces
  214.                 adivinado <- Verdadero;
  215.                 jugadorGanador <- 2;
  216.             Sino // En caso contrario le muestra el nmero de fijas y picas.
  217.                 Escribir "";
  218.                 Escribir "--- Estado Actual Jugador 2 ---"
  219.                 Escribir "Picas: ", picas, " - Fijas: ", fijas;
  220.                 Escribir "---------------------";
  221.                 Escribir "";
  222.             FinSi
  223.         FinSi
  224.        
  225.         intentos<- intentos + 1;
  226.     Hasta Que adivinado = Verdadero O Intentos = 10
  227.    
  228.     // Felicita al jugador cuando ha adivinado el nmero
  229.     Si jugadorGanador = 1 Entonces
  230.         Escribir "";
  231.         Escribir "***** Felicitaciones Jugador 1. Ha adivinado el nmero: ", numeroJugador2, " *****";
  232.         Escribir "";
  233.     FinSi
  234.     Si jugadorGanador = 2 Entonces
  235.         Escribir "";
  236.         Escribir "***** Felicitaciones Jugador 2. Ha adivinado el nmero: ", numeroJugador1, " *****";
  237.         Escribir "";
  238.     FinSi
  239.    
  240.     Si jugadorGanador = 0 Entonces
  241.         Escribir "";
  242.         Escribir "Lo sentimos. No han logrado adivinar el nmero.";
  243.         Escribir "";
  244.     FinSi
  245.    
  246. FinProceso
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement