Ir al contenido principal

piedra, papel y tijeras en c++

Hola hoy les mostrare como hacer un programa que simule en c++ el juego de piedra, papel y tijera.
en el cual se utilizan la mayoría de los elementos básicos que se usan en c++ para programar.
para nuestro programa se seguirán las reglas tradicionales con tres opciones y haremos que nuestro programa se repita hasta que nosotros decidamos terminar de jugar. Al finalizar les diremos el total de victorias y empates, este juego es de dos personas así que haremos que nuestro ordenador sea el contrincante.

¿piedra, papel y tijeras?
es un juego de manos que se juega entre dos personas.

como les he comentado anteriormente es necesario hacer un pequeño análisis antes de programar.


Análisis

salida: mensaje que indica al ganador, el total de victorias y empates.
entrada: una opción de juego(piedra,papel,tijera)

procedimiento:  
  • declarar variables enteras jugador, maquina, victorias_jugador, victoria_maquina, empates
  • inicializar en 0 variables victorias_jugador, victorias_maquina y empates.
  • Escribir “ingrese la opción del jugador:”
  • Leer opción jugador
  • Calcular la opción del maquina.
  • Comparar jugadas para declarar al ganador.

Aquí ya tenemos un análisis de nuestro programa donde se muestra la salida o el resultado que se quiere obtener con nuestro programa, entrada son los datos que necesito que el usuario del programa proporcione y el procedimiento es donde ponemos los pasos para realizar nuestro juego.

El procedimiento anterior en este caso lo podemos separar en 3 partes

1.-solicitar la jugada del usuario o jugador.
2.-calcular la opción de la maquina
3.-decidir al ganador

solicitar datos de entrada mediante un menú de opciones

para obtener la jugada del usuario vamos a utilizar un menú muy simple con cuatro opciones 

Piedra Papel y Tijeras en C++

breve explicación:

linea 23-28 escribimos en pantalla un menú para mostrar las opciones al jugador, la ( \n ) significa que cuando se ejecute nuestro programa al escribir tendrá un salto de linea.
Linea 29 capturamos la opción del jugador en la variable jugador que debemos declarar con anterioridad.
Linea 32-38 utilizamos una sentencia if para  ver si la opción que dio el jugador es valida y en caso de no serla entonces le escribimos un mensaje avisándole.
Linea 22-39 se utiliza un bloque do-while para repetir las acciones dentro de el, hasta que el jugador escriba un valor entre el 0 y 3 en la variable jugador.

Calcular la jugada de la maquina

para elegir el movimiento que hará la maquina utilizaremos números pseudoaleatorios, como en casi todos los lenguajes existen bibliotecas con funciones que hacen este calculo, nosotros también utilizaremos la que c++ proporciona para esta tarea.

Rand() : esta función genera un numero pseudoaleatorio, el problema es que siempre que ejecutamos nuevamente el programa genera el mismo numero aleatorio.
Esto es así porque rand hace un calculo basado en un numero o valor de entrada el cual es llamado semilla.
La solución seria modificar la semilla y para eso utilizamos la función srand
srand(null): modifica semilla de numero aleatorio, pero tiene un inconveniente ya que si cambiamos el valor de la semilla, si va a cambiar la serie de números pseudoaleatorios, pero solamente sirve una vez.
Solución: debemos darle un numero diferente cada vez que queramos generar un numero aleatorio,
esto se realiza con la función time(); la función time devuelve un valor basado en el reloj el cual cambia cada segundo.

Selección de la maquina

Breve explicación

linea 19 se configura el valor de la semilla de rand
linea 20 se guarda el numero pseudoaleatorio entre el [1-3] en la variable maquina.

cuando se esta programando en windows es necesario incluir la biblioteca <time.h> y si están en ubuntu solamente es necesaria la biblioteca <cstdlib>.
Ya con esto tenemos la opción del jugador y de la maquina ahora solo falta decidir al ganador.

Decidiendo al ganador

una vez obtenidos la jugada del usuario y la maquina entonces las comparamos para decidir al ganador, una manera de hacerlo es la siguiente:

decidiendo al Ganador

linea 43-49 se compara si hubo un empate
linea  50-102 utilizamos bloques switch anidados, primero utilizamos un switch para manejar un evento distinto en todos los casos posibles del valor jugador, dentro de cada caso utilizamos otro switch para escribir distintos resultados dependiendo del valor que tome la variable maquina.

Con esto ya tienen lo mas fundamental del programa que juega piedra papel y tijeras.
Si tienen alguna duda sobre los bloques if-else  , switch, los invito a que pulsen aqui para ver un poco del tema.
si les interesa ver o descargar el código fuente para revisarlo aquí(MediaFire).
si te gusto el post compártelo para que más personas puedan leerlo. 

Comentarios

Publicar un comentario

Entradas más populares de este blog

área de un triangulo c++

ejercicio 1.- calcule el área de un triangulo Hola, si llegaste a esta publicación de seguro te debes preguntar ¿como hacer el programa del área del triangulo? o del rectángulo y cualquier otra figura, entonces estas en el lugar correcto. este es un algoritmo sencillo que utiliza la formula de matemáticas para hallar el área. antes de empezar a programar tenemos que hacer un pequeño análisis: comprender el problema plantear los pasos para resolver el problema codificar compilar ejecuar comprender el problema nuestro problema es calcular el área de un triangulo . planteamos los pasos ahora hay que preguntarse: ¿que necesito para hacer el calculo? el área de un triangulo es igual a la base por altura entre dos, entonces debemos conocer la base y la altura. ¿como obtener esos datos? hay que decirle al usuario que ingrese esos datos. ya que tenemos los datos podemos calcular el área y solo nos falta escribir en la pantalla el resultado. codifica

programa c++ mayor de dos numeros

hola en esta entrada les mostrare como hacer un programa que calcule el mayor de dos números utilizando la estructura de control if. ejercicio.- programa que calcula el mayor de dos números reales. análisis salida:mensaje que indique que el mayor de dos números entrada:dos números reales procedimiento: declarar 2 variables reales(float o double) escribir "ingrese numero 1: " leer numero1 escribir "ingrese numero2: " leer numero2 comparar numero1 y numero2 imprimir el mayor es: numero mayor ya que hicimos el procedimiento hay que codificarlo breve explicación linea 1-2 incluimos bibliotecas linea 6 declaramos variables tipo double linea 9-12 solicitamos al usuario que ingrese los numeros y los almacenamos en las variables linea 14-15  comparamos si el numero 1 es mayor que el numero 2 y si se cumple la condicion imprimimos que el mayor es el numero 1. linea 16-17 comparamo