Yosef Guevara Salamanca
/
cruzandoCalle
Juego de cruzar las calles, el jugador debe llegar hasta el otro punto para ganar
Revision 10:1e14a9f65c16, committed 2018-11-14
- Comitter:
- djinn77
- Date:
- Wed Nov 14 22:08:00 2018 +0000
- Parent:
- 9:d17e7acc22a4
- Commit message:
- TODO con comnetarios
Changed in this revision
calle.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r d17e7acc22a4 -r 1e14a9f65c16 calle.cpp --- a/calle.cpp Wed Nov 14 08:23:29 2018 +0000 +++ b/calle.cpp Wed Nov 14 22:08:00 2018 +0000 @@ -4,28 +4,29 @@ // Definicion de parametros de comunicacion Serial pc(USBTX,USBRX); -SPI deviceM(PB_5, PB_4, PB_3); //D4(gris), Ninguno, D3(azul) -DigitalOut ssel (PA_4); //A2(morado) +SPI deviceM(PB_5, PB_4, PB_3); // D4(gris), Ninguno, D3(azul) +DigitalOut ssel (PA_4); // A2(morado) Ticker tp; -int printjugador =1; +int printjugador =1; // Establece el estado del jugador // Definiendo Botones -AnalogIn vry(A3); -AnalogIn vrx(A4); -DigitalIn sw(A5); +AnalogIn vry(A3); // Lee el eje x del jostick +AnalogIn vrx(A4); // Lee el eje y del jostick +DigitalIn sw(A5); // Lee el boton del jostick -// Definicion de Funciones -void sendSPI(); -void inicializar_matriz(); -void printstatus(); -void desplazar_der(); -void desplazar_izq(); -void arriba(); -void pista(); -void puntaje(); -void impresion(); -void aumentar_dificultad(); +// Definicion de Funciones +void sendSPI(); // Define el prototipo de la funcion de comunicacion con el MAX +void inicializar_matriz(); // Define el prototipo de Iniciar pantalla +void printstatus(); // Define el prototipo imprime el juego en pantalla +void desplazar_der(); // Define el prototipo que desplaza el jugador a la der +void desplazar_izq(); // Define el prototipo que desplaza el jugador a la izq +void arriba(); // Define el prototipo que desplaza el jugador hacia arriba +void pista(); // Define el prototipo +void puntaje(); // Define el prototipo que cuenta el puntaje +void impresion(); // Define el prototipo +void aumentar_dificultad(); // Define el prototipo que aumenta la velocidad de los vehiculos +void reiniciar_calle(); // Definicion de Variables @@ -49,6 +50,7 @@ deviceM.lock(); }; +// La siguiente funcion establece los parametros de funcionamiento del MAX7219 void inicializar_matriz(){ sendSPI(0x0c,1); @@ -57,6 +59,9 @@ sendSPI(0x0A,0x00); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ int i; + + // Esta seccion configura el parpadeo cuando se reinicia la pantalla + for (i=0;i<2;i++){ sendSPI(0x0F,1); wait (0.5); @@ -66,15 +71,15 @@ } - +// ------------------------------- Esta es la funcion principal del sistema int main() { - pc.baud(38400); - inicializar_matriz(); - nivel= AV_1; - victorias=puntos; - jugador=player; - tp.attach(&printstatus,0.2); - ubicacion=1; + pc.baud(38400); // Establece la velocidad de comunicacion Serial + inicializar_matriz(); // llama a la funcion que configura el MAX + nivel= AV_1; // Asigna el trasado de las calles al juego + victorias=puntos; // Asigna los puntos acumulados en la pantalla inicia en 0 + jugador=player; // Asigna la forma del jugador + tp.attach(&printstatus,0.2); // MIRAR para que sirve + ubicacion=1; // Inicializa la varibale que cuenta la posicion del jugador @@ -92,12 +97,12 @@ //------ mueve a el jugador hacia arriba en el mapa - if(meas_vy < 1550){ - arriba(); - ubicacion++; - pc.printf("\n ubicacion:\n %i",ubicacion); - if(ubicacion==7) - puntaje(); + if(meas_vy < 1550){ + arriba(); // hace el llamado a la funcion que mueve al jugador a la parte superior + ubicacion++; // cada vez que se ejecuta actualiza la posicion del jugador en el mapa + pc.printf("\n ubicacion:\n %i",ubicacion); // imprime la ubicacion del jugador en el puerto serial + if(ubicacion==7) // si la posicion del jugador es igual a 7 ejecuta la funcion puntaje(); + puntaje(); } // ----- El siguiente ciclo realiza el desplazamiento de los vehiculos @@ -108,9 +113,9 @@ } } -void desplazar_der(){ +void desplazar_der(){ // Esta funcion desplaza al jugador hacia la derecha - int der = jugador[7]; + int der = jugador[7]; for(int i= 7; i>=0;i--){ jugador[i]=jugador[i-1]; } @@ -118,7 +123,7 @@ } -void desplazar_izq(){ +void desplazar_izq(){ // Esta funcion desplaza al jugador hacia la izq int izq = jugador[0]; for(int i= 0; i<8;i++){ @@ -128,7 +133,7 @@ } -void arriba(){ +void arriba(){ // Esta funcion desplaza al jugador hacia arriba int arb = 1; for(int i= 0; i<8;i++){ @@ -138,7 +143,7 @@ } -void pista(){ +void pista(){ // Esta funcion ejecuta el movimiento de los vehiculos int aux = nivel[0]; for(int i= 0; i<8;i++){ @@ -148,38 +153,49 @@ } -void puntaje(){ +void puntaje(){ // Esta funcion hace el conteo de los puntos ganados - victorias[conteo]=0x80; - for(int i= 0; i<8;i++){ - jugador[i]= jugador[i] >> 6; + victorias[conteo]=0x80; // cada vez que se llega al otro lado de la calle suma 1 punto que se visualiza en pantalla + for(int i= 0; i<8;i++){ // Este ciclo for regresa al jugador a la pos 1 + jugador[i]= jugador[i] >> 6; } - ubicacion=1; - conteo++; - if(conteo == 6){ + ubicacion=1; // Renicializa la pos del jugador + conteo++; // Cuenta cuantas veces a llegado el jugador al otro lado hasta un maximo de 4 + if(conteo == 6){ // cuando el conteo es igual a 6 se llama a la funcion aumentar dificultad aumentar_dificultad(); } } -void aumentar_dificultad(){ +void aumentar_dificultad(){ // Esta funcion aumenta la dificultad del juego - for(int i= 0; i<8;i++){ + for(int i= 0; i<8;i++){ // Regresa el valor de las victorias acumuladas a 0 victorias[i]= 0; } - velocidad = velocidad - 0.1; - conteo=2; - + velocidad = velocidad - 0.1; // aumenta la velocidad del juego + conteo=2; // reinicializa el conteo + } - -void printstatus() +void reiniciar_calle(){ // Esta condicion renicia el sistema al estrellarce con un vehiculo + + NVIC_SystemReset(); + + } +void printstatus() // Esta funcion es la encargada de la impresion { - for(int j= 1; j<=8;j++) - if (printjugador) - sendSPI(j, nivel[j-1]|jugador[j-1]| victorias[j-1]); - else - sendSPI(j, nivel[j-1]| victorias[j-1]); + + for(int j= 1; j<=8;j++) // Este cilo imprime en pantalla + if (printjugador){ + sendSPI(j, nivel[j-1]|jugador[j-1]| victorias[j-1]); // CADA VEZ que se vea en pantalla SPI se mostrar un dato en pantalla + if((nivel[j-1] & jugador[j-1]) != 0){ // SI este if se cumple el jugador ha sido chocado + reiniciar_calle(); // Ee se hace llamado a la funcion reinicio + } + + }else{ + sendSPI(j, nivel[j-1]| victorias[j-1]); + } + printjugador =!printjugador; } \ No newline at end of file