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

Dependencies:   mbed

calle.cpp

Committer:
djinn77
Date:
2018-11-13
Revision:
6:fae23f72d7f0
Parent:
5:3cfdf3e56c8f
Child:
7:73af8e91e691

File content as of revision 6:fae23f72d7f0:

#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();

// Definicion de Variables
 
uint16_t* nivel;
uint16_t* jugador;
float velocidad = 1.0;
float meas_vx;
float meas_vy; 
 
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;
   jugador=player;
   tp.attach(&printstatus,0.2);
   
   
   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();
      

    
 
// El siguient ciclo realiza el desplazamiento de los vehiculos
 
      int aux = nivel[0];
      for(int i= 0; i<8;i++){  
          nivel[i]=nivel[i+1];
          }
      nivel[7] = aux;
      
           wait(velocidad);
                
       }
}

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 printstatus()
{
    for(int j= 1; j<=8;j++)
        if (printjugador)
            sendSPI(j, nivel[j-1]|jugador[j-1]);     
        else
            sendSPI(j, nivel[j-1]); 
    printjugador =!printjugador;
}