Juego de cruzar las calles, el jugador debe llegar hasta el otro punto para ganar

Dependencies:   mbed

calle.cpp

Committer:
djinn77
Date:
2018-11-14
Revision:
8:29d258f44024
Parent:
7:73af8e91e691
Child:
9:d17e7acc22a4

File content as of revision 8:29d258f44024:

#include "mbed.h"
#include "avenidas.h"
 
// 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)
Ticker tp;
int printjugador =1;
 
// Definiendo Botones
 
AnalogIn vry(A3);
AnalogIn vrx(A4);
DigitalIn sw(A5);

// Definicion de Funciones
void sendSPI();
void inicializar_matriz();
void printstatus();
void desplazar_der();
void desplazar_izq();
void arriba();
void pista();
void puntaje();
void impresion();

// Definicion de Variables
 
uint16_t* nivel;
uint16_t* jugador;
uint16_t* victorias;
float velocidad = 1.0;
float meas_vx;
float meas_vy; 
uint8_t ubicacion;
uint8_t conteo = 2;

// Inicio del programa
void sendSPI(uint8_t d1, uint8_t d2)
{
    deviceM.unlock();
    ssel=0;
    deviceM.write(d1); 
    deviceM.write(d2);  
    ssel=1;
    deviceM.lock();
};
 
 
void inicializar_matriz(){
    sendSPI(0x0c,1);    
    sendSPI(0x0b,7);
    sendSPI(0x09,0);    //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
    sendSPI(0x0A,0x00); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
    
    int i;
    for (i=0;i<2;i++){
        sendSPI(0x0F,1);
        wait (0.5);
        sendSPI(0x0F,0);
        wait (0.5);
    }
  
  }
 
 
int main() {
   pc.baud(38400);               
   inicializar_matriz();
   nivel= AV_1;
   victorias=puntos;
   jugador=player;
   tp.attach(&printstatus,0.2);
   ubicacion=1;
   

       
   while(1){
       
   meas_vx = vrx.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje X
   meas_vy = vry.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje Y
   
//------ realiza el corriemiento del vector hacia la izq y der respectivamente.

  if (meas_vx < 1600)           // si se cumple esta condicion el jugador se desplaza a la izq
      desplazar_izq(); 
  else if (meas_vx > 1700)      // si se cumple esta condicion el jugador se desplaza a la der
      desplazar_der();
 
//------ 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();
     }
     
// ----- El siguiente ciclo realiza el desplazamiento de los vehiculos
  pista(); 
  
  wait(velocidad); // Velocidad del juego
               
       }
}

void desplazar_der(){
      
      int der = jugador[7];
      for(int i= 7; i>=0;i--){  
          jugador[i]=jugador[i-1];
          }
      jugador[0] = der;

    }

void desplazar_izq(){
   
      int izq = jugador[0];
      for(int i= 0; i<8;i++){  
          jugador[i]=jugador[i+1];
          }
      jugador[7] = izq;

 }
 
void arriba(){
      
      int arb = 1;
      for(int i= 0; i<8;i++){  
          jugador[i]= jugador[i] << arb;
          }
      arb++;
      
    }
    
void pista(){
    
    int aux = nivel[0];
      for(int i= 0; i<8;i++){  
          nivel[i]=nivel[i+1];
          }
      nivel[7] = aux;
    
    }  
    
void puntaje(){
      
      victorias[conteo]=0x80;
      for(int i= 0; i<8;i++){  
          jugador[i]= jugador[i] >> 6;
          }
      ubicacion=1;    
      conteo++;
      } 


      
void printstatus()
{
    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]); 
    printjugador =!printjugador;
}