El programa cuenta los intentos ingresados por el usuario para adivinar el numero

Dependencies:   mbed

Committer:
JavierMarcelo98
Date:
Fri Sep 13 06:53:02 2019 +0000
Revision:
2:f7a3163071b1
Parent:
0:f680c41c1640
Programa adivina modificado dados ciertos criterios.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Antulius 0:f680c41c1640 1 /* ###########################################################################
Antulius 0:f680c41c1640 2 ** Archivo : main.c
JavierMarcelo98 2:f7a3163071b1 3 ** Proyecto : STM32-103C8_AdivinaV2
Antulius 0:f680c41c1640 4 ** Procesador : STM32F103C8
Antulius 0:f680c41c1640 5 ** Herramienta : Mbed
Antulius 0:f680c41c1640 6 ** Version : Driver 01.01
Antulius 0:f680c41c1640 7 ** Compilador : GNU C Compiler
JavierMarcelo98 2:f7a3163071b1 8 ** Fecha/Hora : 13-09-2019 01:30, # CodeGen: 0
Antulius 0:f680c41c1640 9 ** Descripción :
JavierMarcelo98 2:f7a3163071b1 10 ** Este proyecto recibe un numero predefinido por el administrador para
JavierMarcelo98 2:f7a3163071b1 11 ** que despues un usuario intente adivinarlo con un limite de intetos
JavierMarcelo98 2:f7a3163071b1 12 ** los cuales ya estas preestablecidos por el administrador.
Antulius 0:f680c41c1640 13 ** Componentes : Timer, etc .
Antulius 0:f680c41c1640 14 ** Configuraciones : Se puede seleccionar entre diferentes velocodades de
Antulius 0:f680c41c1640 15 ** transmisión
Antulius 0:f680c41c1640 16 ** Autores :
Antulius 0:f680c41c1640 17 ** ATEAM Development Group:
JavierMarcelo98 2:f7a3163071b1 18 ** - Antulio Morgado Valle.
JavierMarcelo98 2:f7a3163071b1 19 ** - Marcelo Padron Javier 4CV2.
Antulius 0:f680c41c1640 20 **
Antulius 0:f680c41c1640 21 ** Versión : Beta
JavierMarcelo98 2:f7a3163071b1 22 ** Revisión : B
Antulius 0:f680c41c1640 23 ** Release : 0
Antulius 0:f680c41c1640 24 ** Bugs & Fixes :
JavierMarcelo98 2:f7a3163071b1 25 ** Date : 13/09/2019
JavierMarcelo98 2:f7a3163071b1 26 **
Antulius 0:f680c41c1640 27 **
Antulius 0:f680c41c1640 28 **
Antulius 0:f680c41c1640 29 ** ###########################################################################*/
Antulius 0:f680c41c1640 30 /*
Antulius 0:f680c41c1640 31 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 0:f680c41c1640 32 : Includes
Antulius 0:f680c41c1640 33 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 0:f680c41c1640 34 */
Antulius 0:f680c41c1640 35
Antulius 0:f680c41c1640 36 #include "stm32f103c8t6.h"
Antulius 0:f680c41c1640 37 #include "mbed.h"
Antulius 0:f680c41c1640 38 #include "Serial.h"
Antulius 0:f680c41c1640 39 #include "stdio.h"
Antulius 0:f680c41c1640 40 /*
Antulius 0:f680c41c1640 41 :...............................................................................
Antulius 0:f680c41c1640 42 : Definiciones
Antulius 0:f680c41c1640 43 :...............................................................................
Antulius 0:f680c41c1640 44 */
Antulius 0:f680c41c1640 45 #define on 0 // Estado para boton presionado
Antulius 0:f680c41c1640 46 #define off 1 // Estado para boton sin presionar
Antulius 0:f680c41c1640 47 #define hold 2 // Estado para boton mantenido
Antulius 0:f680c41c1640 48 #define release 3 // Estado para boton liberado
Antulius 0:f680c41c1640 49 #define FALSE 0 // Estado FALSO
Antulius 0:f680c41c1640 50 #define TRUE 1 // Estado VERDADERO
Antulius 0:f680c41c1640 51 /*
Antulius 0:f680c41c1640 52 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 53 | Configuración de Puertos
Antulius 0:f680c41c1640 54 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 55 */
Antulius 0:f680c41c1640 56 DigitalOut verde (LED1); // PC_13 (Green_Led)
Antulius 0:f680c41c1640 57 DigitalOut rojo (PB_1); // NC (Red_Led)
Antulius 0:f680c41c1640 58
Antulius 0:f680c41c1640 59 // ***** Host PC Terminal Communication channels
Antulius 0:f680c41c1640 60 Serial terminal (PA_2, PA_3); // Inicializa la comunicación serial a la PC (Tx,Rx)
Antulius 0:f680c41c1640 61 //Serial terminal(USBTX, USBRX,115200);// Tx, Rx Baud Rate - Terminal Serial por USB @ 115,200 Bauds
Antulius 0:f680c41c1640 62
Antulius 0:f680c41c1640 63 /*
Antulius 0:f680c41c1640 64 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 65 | Variables Globales de Usuario
Antulius 0:f680c41c1640 66 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 67 */
Antulius 0:f680c41c1640 68 //uint32_t Baud_Rate = 9600; // Velocidad de Transmisión (Bauds)
Antulius 0:f680c41c1640 69 /*
Antulius 0:f680c41c1640 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:f680c41c1640 71 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
Antulius 0:f680c41c1640 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:f680c41c1640 73 */
Antulius 0:f680c41c1640 74 void Setup(void);
Antulius 0:f680c41c1640 75 /* END definitions */
Antulius 0:f680c41c1640 76
Antulius 0:f680c41c1640 77 /*
Antulius 0:f680c41c1640 78 #===============================================================================
Antulius 0:f680c41c1640 79 |
Antulius 0:f680c41c1640 80 | P R O G R A M A P R I N C I P A L
Antulius 0:f680c41c1640 81 |
Antulius 0:f680c41c1640 82 #===============================================================================
Antulius 0:f680c41c1640 83 */
Antulius 0:f680c41c1640 84 int main()
Antulius 0:f680c41c1640 85 { // Inicialización de variables, puertos e interrupciones
Antulius 0:f680c41c1640 86 confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock)
Antulius 0:f680c41c1640 87 Setup(); // Inicialización del sistema
Antulius 0:f680c41c1640 88 while(TRUE)
Antulius 0:f680c41c1640 89 {
JavierMarcelo98 2:f7a3163071b1 90 Primero: int numero = 5; //Primero vamos a limitar el numero de intentos
JavierMarcelo98 2:f7a3163071b1 91 if( numero > 0) //Colocaremos un condicional al inicio de nuestro programa para que estemos regresando a este punto.
JavierMarcelo98 2:f7a3163071b1 92 {
JavierMarcelo98 2:f7a3163071b1 93 terminal.printf("\n DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n");
JavierMarcelo98 2:f7a3163071b1 94 int secreto = terminal.getc();
Antulius 0:f680c41c1640 95 rojo = on;
JavierMarcelo98 2:f7a3163071b1 96 verde = on;
JavierMarcelo98 2:f7a3163071b1 97 Intenta: terminal.printf("\n Solo tienes %i intentos para adividnar!\r\n", numero);
JavierMarcelo98 2:f7a3163071b1 98 terminal.printf("\nADIVINA EL NUMERO: \r\n");
JavierMarcelo98 2:f7a3163071b1 99 int respuesta = terminal.getc();
JavierMarcelo98 2:f7a3163071b1 100 terminal.printf("\nEL NUMERO QUE INGRESASTE FUE \r\n"); //Imprimimos la respuesta como parte de las condiciones que nos pide el profesor.
JavierMarcelo98 2:f7a3163071b1 101 terminal.putc ( respuesta );
Antulius 0:f680c41c1640 102 if( secreto < respuesta )
Antulius 0:f680c41c1640 103 {
JavierMarcelo98 2:f7a3163071b1 104 terminal.printf(" \n\nEl numero que ingresaste es mas alto! \r\n");
Antulius 0:f680c41c1640 105 rojo = on;
JavierMarcelo98 2:f7a3163071b1 106 verde = off;
JavierMarcelo98 2:f7a3163071b1 107 numero = numero - 1;
Antulius 0:f680c41c1640 108 goto Intenta;
Antulius 0:f680c41c1640 109 }
Antulius 0:f680c41c1640 110 if( secreto > respuesta )
Antulius 0:f680c41c1640 111 {
JavierMarcelo98 2:f7a3163071b1 112 terminal.printf(" \n\nEl numero que ingresaste es mas bajo! \r\n");
Antulius 0:f680c41c1640 113 rojo = off;
Antulius 0:f680c41c1640 114 verde = on;
JavierMarcelo98 2:f7a3163071b1 115 numero = numero - 1 ;
Antulius 0:f680c41c1640 116 goto Intenta;
Antulius 0:f680c41c1640 117 }
Antulius 0:f680c41c1640 118 if( secreto == respuesta )
Antulius 0:f680c41c1640 119 {
JavierMarcelo98 2:f7a3163071b1 120 terminal.printf(" \n\nFelicidades!, La respuesta es: %i \r\n",secreto);
Antulius 0:f680c41c1640 121 rojo = off;
Antulius 0:f680c41c1640 122 verde = on;
Antulius 0:f680c41c1640 123 wait(1.0);
Antulius 0:f680c41c1640 124 rojo = off;
Antulius 0:f680c41c1640 125 verde = off;
Antulius 0:f680c41c1640 126 wait(1.0);
Antulius 0:f680c41c1640 127 rojo = off;
Antulius 0:f680c41c1640 128 verde = on;
Antulius 0:f680c41c1640 129 wait(1.0);
JavierMarcelo98 2:f7a3163071b1 130 terminal.printf("Felicidades, realmente eres un genio! \r\n");
Antulius 0:f680c41c1640 131 wait(1.0);
Antulius 0:f680c41c1640 132 rojo = on;
Antulius 0:f680c41c1640 133 verde = off;
Antulius 0:f680c41c1640 134 wait(1.0);
Antulius 0:f680c41c1640 135 rojo = off;
Antulius 0:f680c41c1640 136 verde = on;
Antulius 0:f680c41c1640 137 }
JavierMarcelo98 2:f7a3163071b1 138
Antulius 0:f680c41c1640 139 terminal.printf(" Quieres intentarlo de nuevo? \r\n");
Antulius 0:f680c41c1640 140 terminal.printf(" 0 = No \r\n 1 = Si \r\n");
JavierMarcelo98 2:f7a3163071b1 141 char opcion = terminal.getc();
JavierMarcelo98 2:f7a3163071b1 142 if( opcion == '1' )
JavierMarcelo98 2:f7a3163071b1 143 {
JavierMarcelo98 2:f7a3163071b1 144 numero = numero - 1;
JavierMarcelo98 2:f7a3163071b1 145 goto Primero;
JavierMarcelo98 2:f7a3163071b1 146 }
Antulius 0:f680c41c1640 147 else if( opcion == '0' )
Antulius 0:f680c41c1640 148 {
JavierMarcelo98 2:f7a3163071b1 149 terminal.printf("El numero de intentos realizados fueron %i!\r\n", numero);
Antulius 0:f680c41c1640 150 break;
Antulius 0:f680c41c1640 151 }
Antulius 0:f680c41c1640 152 }
JavierMarcelo98 2:f7a3163071b1 153 else if ( numero == 0)
JavierMarcelo98 2:f7a3163071b1 154 {
JavierMarcelo98 2:f7a3163071b1 155 terminal.printf(" Lo lamento, excediste el numero de intentos!\r\n");
JavierMarcelo98 2:f7a3163071b1 156 }
JavierMarcelo98 2:f7a3163071b1 157 }
Antulius 0:f680c41c1640 158 }
Antulius 0:f680c41c1640 159
Antulius 0:f680c41c1640 160 /* END main */
Antulius 0:f680c41c1640 161
Antulius 0:f680c41c1640 162 /*
Antulius 0:f680c41c1640 163 ................................................................................
Antulius 0:f680c41c1640 164 : Rutinas de los Vectores de Interrupción
Antulius 0:f680c41c1640 165 ................................................................................
Antulius 0:f680c41c1640 166 */
Antulius 0:f680c41c1640 167
Antulius 0:f680c41c1640 168 /* END Events */
Antulius 0:f680c41c1640 169 /*
Antulius 0:f680c41c1640 170 ________________________________________________________________________________
Antulius 0:f680c41c1640 171 |
Antulius 0:f680c41c1640 172 | Funciones Prototipo
Antulius 0:f680c41c1640 173 |_______________________________________________________________________________
Antulius 0:f680c41c1640 174 */
Antulius 0:f680c41c1640 175 // Las Funciones Prototipo van aquí !
Antulius 0:f680c41c1640 176 void Setup()
Antulius 0:f680c41c1640 177 {
Antulius 0:f680c41c1640 178 // terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión e inicia la comunicación serial.
Antulius 0:f680c41c1640 179 terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial.
JavierMarcelo98 2:f7a3163071b1 180 terminal.printf(" Bienvenido Amo!\n\r");
Antulius 0:f680c41c1640 181 }
Antulius 0:f680c41c1640 182
Antulius 0:f680c41c1640 183 /* END routines */
Antulius 0:f680c41c1640 184
Antulius 0:f680c41c1640 185 /* END program */
Antulius 0:f680c41c1640 186
Antulius 0:f680c41c1640 187 /* END documentation */
JavierMarcelo98 2:f7a3163071b1 188 /*
Antulius 0:f680c41c1640 189 +--------------------------------------------------------------------------------
Antulius 0:f680c41c1640 190 |
Antulius 0:f680c41c1640 191 | EXAMEN
Antulius 0:f680c41c1640 192 |
Antulius 0:f680c41c1640 193 | 1.- Modificar el programa para que despliegue el número de intentos para
Antulius 0:f680c41c1640 194 | adivinar el número secreto.
Antulius 0:f680c41c1640 195 | 2.- Modificar el programa para haga eco con la respuesta que le introducimos.
Antulius 0:f680c41c1640 196 |
JavierMarcelo98 2:f7a3163071b1 197 | 3.- Modificar el programa para que te limite el numero de intentos.
Antulius 0:f680c41c1640 198 | Suerte!
Antulius 0:f680c41c1640 199 +--------------------------------------------------------------------------------
Antulius 0:f680c41c1640 200 |
Antulius 0:f680c41c1640 201 | T H E A N T U L I U S T E A M
Antulius 0:f680c41c1640 202 | Research, Development, Systems Equipment, Support & Spare Parts I n c.
Antulius 0:f680c41c1640 203 | (C) Copyright 1989-2014, All rigths Reserved
Antulius 0:f680c41c1640 204 |
Antulius 0:f680c41c1640 205 | This program is licensed under rules of
Antulius 0:f680c41c1640 206 | THE BEANERS TECHNOLOGIES PROYECT
Antulius 0:f680c41c1640 207 +-------------------------------------------------------------------------------
Antulius 0:f680c41c1640 208 */
Antulius 0:f680c41c1640 209 /* END Mbed */