void mostrarResultados(void){ if(estado.modoAutomatico==1){ output("\n \n \r¿Por qué no pruebas ahora el modo Competición?\n \n \r"); }else{ char teclaRetorno='0'; calcularResultados(); output("\n \n \r Resultados finales........\n \n \r"); output("\n \n \r Número total de teclas pulsadas: "); outNum(10, resultados.totalPulsaciones, 10); output("\n \n \r Número de notas acertadas: "); outNum(10, resultados.pulsacionesCorrectas, 10); output(" de un total de: "); outNum(10, resultados.totalNotas, 10); output("\n \n \r Tasa de Aciertos = "); outNum(10, resultados.aciertos, 10); output("%\n \n \r Tasa de Pulsaciones Efectivas = "); outNum(10, resultados.eficiencia, 10); output("%\n \n \r Fin de la partida. Pulse la tecla A para volver a jugar \n \n \r"); teclaRetorno=teclado(); while(teclaRetorno!='A'){ teclaRetorno=teclado(); //hasta que no se pulse la tecla "A" no salimos de la //pantalla de resultados } } }
//------------------------------------------------------ // void bucleMainTetris(void) // // Descripción: // Juega //------------------------------------------------------ void bucleMainTetris(void){ char tecla; if(estado.primeraPieza == PPIEZA){ melodiasInic(); borraTablero(); if(estado.juegoBloques){ pintaBloques(); evaluarTablero(); } resultadoInic(); nuevaPieza(); nuevaPieza(); estado.primeraPieza = NO_PPIEZA; } tecla = teclado(); //podemos usar una variable de estado para evitar pulsar una tecla if(tecla == CHAR_UNO) { mueveIzquierda(); } if(tecla == CHAR_CUATRO) { caePieza(); } if(tecla == CHAR_SIETE) { mueveDerecha(); } if(tecla == CHAR_A) { rotacion(); } }
//------------------------------------------------------ // int getCadTeclado(char* cadena) // // Descripción: // Lee una cadena del teclado matricial, caracter a // caracter y la devuelve para que la use el // programa principal. // // Parámetros: // char* cadena // puntero al búfer donde almacena la cadena leída. //------------------------------------------------------ int getCadTeclado(char* cadena) { int i = 0; // Lleva la cuenta de la posición en el array char w; // Variable donde se almacena cada caracter leído del teclado int num = 0; // Número que devuelve la función int cifras = 0; output(" "); // Número de cifras del número do { // Se ejecuta: w = teclado(); // Lee el teclado matricial y almacena la tecla pulsada en w if (w <= '9' && w >= '0') { // Si la tecla pulsada es un número if (i == 0 && w == '0') { // Si para la primera cifra intentamos poner un 0 i--; // Se ignora la tecla pulsada } else { // Si para la primera cifra no intentamos poner un 0 cifras++; // Aumenta el número de cifras del número cadena[i] = w; // Almacena el caracter leído en el array cadena outch(cadena[i]); // Imprime en el terminal el caracter leído } } else if (w != 'D' && w != 'E') { // Si la tecla pulsada no es un número ni la tecla de borrar o de enter i--; // Se ignora la tecla pulsada } if (w == 'D') { // Si la tecla pulsada es la de borrar if (i > 0) { // Si no estamos en la primera posición del array cifras--; // Disminuye el número de cifras del número outch('\b'); // Se borra el último número imprimido en el terminal i -= 2; // Retrocede una posición en el array } else { // Si estamos en la primera posición i--; // Se ignora la tecla pulsada } } } while ((w != 'E') && (++i < 4)); // Mientras no se pulse la tecla de enter y el número tenga 4 cifras o menos output("\r\n"); // Se guardan e imprimen los caracteres de: cadena[i++] = '\r'; // - Retorno de carro cadena[i++] = '\n'; // - Cambio de línea cadena[i] = '\0'; // - Fin de cadena if (cifras == 4) { // Devuelve el número si tiene 4 cifras num = 1000*(cadena[0] - 48) + 100*(cadena[1] - 48) + 10*(cadena[2] - 48) + (cadena[3] - 48); return num; } else if (cifras == 3) { // Devuelve el número si tiene 3 cifras num = 100*(cadena[0] - 48) + 10*(cadena[1] - 48) + (cadena[2] - 48); return num; } else if (cifras == 2) { // Devuelve el número si tiene 2 cifras num = 10*(cadena[0] - 48) + (cadena[1] - 48); return num; } else if (cifras == 1) { // Devuelve el número si tiene 1 cifra num = (cadena[0] - 48); return num; } else if (cifras == 0) { // Devuelve un 1 si no introducimos nada return 1; } return 1; }
void animate(int val){ if(!paused){ desenhar(val); val -= 3; } teclado(); glutTimerFunc(animationTime,animate,val); }
/* Nombre: qtama Descripcion: establece el tamaño de la porcion de comida servida. Parametros: ninguno Retorna: entero sin signo */ unsigned short qtama () { unsigned short kp; qtama: do { kp = Keypad_Key_Click(); // Store key code in kp variable if (UART1_Data_Ready()){ kp = UART1_Read(); goto bluetooth1; } }while (!kp); kp = teclado(kp); bluetooth1: if(kp == 'A' ||kp== 'B' ||kp== 'C'||kp== 'D'){ Lcd_chr(2, 5, kp); do { kp = Keypad_Key_Click(); // Store key code in kp variable if (UART1_Data_Ready()){ kp = UART1_Read(); goto bluetooth2; } }while (!kp); kp = teclado(kp); bluetooth2: if(kp == '#'){ goto qtama; } } else { goto qtama; } return (kp); }
unsigned short qtama () { unsigned short kp; qtama: do { kp = Keypad_Key_Click(); if (UART1_Data_Ready()){ kp = UART1_Read(); goto bluetooth1; } }while (!kp); kp = teclado(kp); bluetooth1: if(kp == 'A' ||kp== 'B' ||kp== 'C'||kp== 'D'){ Lcd_chr(2, 4, kp); do { kp = Keypad_Key_Click(); // Store key code in kp variable if (UART1_Data_Ready()){ kp = UART1_Read(); goto bluetooth2; } }while (!kp); kp = teclado(kp); bluetooth2: if(kp == '#'){ goto qtama; } if(kp == '*'){ Lcd_Chr (2,6,'G'); Lcd_Chr (2,7,'u'); Lcd_Chr (2,8,'a'); Lcd_Chr (2,9,'r');Lcd_Chr (2,10,'d');Lcd_Chr (2,11,'a'); Lcd_Chr (2,12,'d'); Lcd_Chr (2,13,'o'); } }else { goto qtama; } return (kp); }
void lanca_jogo(char **nomes, int *fd) { _Bool side; espera=FALSE; lock(&actualiza); /**Verifica o lado em jogo e preenche o id do jogador*/ if(debug)printf("A verificar lado\n"); inicia_lado(nomes, &side); if(pthread_create(&reader, NULL, th_jogadas, (void *)&side)!=0) { printf("ERRO: Falha a lancar thread jogadas!\n"); exit(EXIT_FAILURE); } nome_jogo=(char *)calloc(strlen(nomes[NGAME]),sizeof(char)); strcpy(nome_jogo,nomes[NGAME]); if(debug) printf("A DAR INICIO AO JOGO@nome_jogo: %s\n",nome_jogo); inicia_mutex(); memset((void*)cowboys[LEFT].name,(int)'\0',sizeof(cowboys[LEFT].name)); memset((void*)cowboys[RIGHT].name,(int)'\0',sizeof(cowboys[RIGHT].name)); if(side == LEFT) strncpy(cowboys[LEFT].name,nomes[NP1],strlen(nomes[NP1])%(NAMELEN-1)); else strncpy(cowboys[RIGHT].name,nomes[NP1],strlen(nomes[NP1])%(NAMELEN-1)); cowboys[side].sfd=*fd; unlock(&actualiza); while(!espera); teclado(nomes,side); pthread_join(reader,NULL); }
unsigned short obtenerNumero (unsigned short numMax) { unsigned short dig, numero, kp; volverObtenerNumero: dig = 0; numero=0; leerNum: do { kp = Keypad_Key_Click(); if (UART1_Data_Ready()){ kp = UART1_Read(); goto bluetoothRead; } }while (!kp); kp = teclado(kp); bluetoothRead: if(kp == 'A' || kp== 'B' || kp == 'C' ||kp == 'D'){ goto leerNum; }else if (kp != '#' && kp != '*'){ dig++; numero = numero*10 + kp -48; //Lcd_Chr(2, 7+dig, kp); } //}while (numero > numMax && kp != '*' && kp != '#'); if(kp == '#'){ //si presiona numeral se borra el numero goto volverObtenerNumero; }else if (kp == '*' && numero > 0){ //Lcd_Chr(2, 7, (numero+48)); Lcd_Out(2, 1, "Valor guardado"); delay(); }else if (numero > numMax){ Lcd_Cmd(_LCD_CLEAR); Lcd_Out(2, 1, "Se paso de valor maximo"); delay(); goto volverObtenerNumero; } else{ goto leerNum; } return (numero); }
unsigned short obtenerNumero (unsigned short numeroMax) { unsigned short dig,numero,kp; volverObtenerNumero: dig = 0; numero=0; Lcd_chr(2, 5, ' '); Lcd_chr(2, 4, ' '); Lcd_chr(2, 3, ' '); Lcd_chr(2, 2, ' '); Lcd_chr(2, 1, ' '); leerNumero: do { kp = Keypad_Key_Click(); // Store key code in kp variable if (UART1_Data_Ready()){ kp = UART1_Read(); goto bluetooth4; } }while (!kp); kp = teclado(kp); bluetooth4: if(kp == 'A' || kp== 'B' || kp == 'C' ||kp == 'D'){ goto leerNumero; }else if (kp>=48 && kp<=57) { dig++; Lcd_chr_Cp(kp); numero = (kp-48)+(10*numero); } if(kp == '#'){ goto volverObtenerNumero; }else if (kp == '*' ){ Lcd_Chr (2,6,'G'); Lcd_Chr (2,7,'u'); Lcd_Chr (2,8,'a'); Lcd_Chr (2,9,'r');Lcd_Chr (2,10,'d');Lcd_Chr (2,11,'a'); Lcd_Chr (2,12,'d'); Lcd_Chr (2,13,'o'); delay(); }else if (numero >= numeroMax){ //Lcd_Cmd(_LCD_CLEAR); Lcd_chr(2, 1,'M'); Lcd_chr(2, 2,'a'); Lcd_chr(2, 3,'x'); Lcd_chr(2, 5,'t'); delay(); delay(); goto volverObtenerNumero; }else{ goto leerNumero; } return (numero); }
// ************************************************ // Funcion Principal void main() { setup_adc_ports(AN0_AN1_AN3); setup_adc(adc_clock_div_32); lcd_init(); while(TRUE) { m=teclado(); if(m!=0) { lcd_putc("\f"); if(m==49){ lect_adc(0);} else if(m==50){ lect_adc(1);} else { printf(lcd_putc,"Tecla invalida"); } delay_ms(50); } } }