USSRII Mathieu DUCROCQ
Dependencies: mbed BSP_DISCO_F746NG
main.cpp
- Committer:
- mducrocq
- Date:
- 2021-06-15
- Revision:
- 0:11a51c9ebb09
File content as of revision 0:11a51c9ebb09:
#include "mbed.h" #include "MPU6050.h" #include "stm32746g_discovery_lcd.h" #include "stm32746g_discovery_ts.h" #include <stdlib.h> #include <time.h> mbed::I2C i2c(I2C_SDA, I2C_SCL); MPU6050 mpu(i2c); Serial pc(USBTX, USBRX); int main() { int timer=0; int difficulte=50; int16_t gx, gy, gz; char pouaint[9]; int points=0; int randome=0; bool isAlive=true; mpu.initialize(); bool mpu6050TestResult = mpu.testConnection(); if(mpu6050TestResult) { pc.printf("MPU6050 test passed \r\n"); } else { pc.printf("MPU6050 test failed \r\n"); } BSP_LCD_Init(); BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS); BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); BSP_LCD_Clear(LCD_COLOR_BLACK); BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize()); TS_StateTypeDef TS_State; BSP_TS_GetState(&TS_State); while(!TS_State.touchDetected) { BSP_TS_GetState(&TS_State); BSP_LCD_SetTextColor(LCD_COLOR_CYAN); BSP_LCD_SetBackColor(LCD_COLOR_BLACK); BSP_LCD_SetFont(&LCD_DEFAULT_FONT); BSP_LCD_DisplayStringAt(0, 1, (uint8_t *)"Bienvenue dans", CENTER_MODE); BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA); BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"ULTRA SPACE SHOOTER", CENTER_MODE); BSP_LCD_DisplayStringAt(0, 90, (uint8_t *)"REDEMPTION II", CENTER_MODE); BSP_LCD_SetTextColor(LCD_COLOR_BLUE); BSP_LCD_DisplayStringAt(0, 150, (uint8_t *)"Touchez pour commencer", CENTER_MODE); BSP_LCD_FillRect(10, 200, 50, 50); BSP_LCD_DrawHLine(70, 225, 20); BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_FillRect(400,200,50,50); BSP_LCD_DrawHLine(370, 225, 20); } BSP_LCD_Clear(LCD_COLOR_BLACK); int16_t posXV, posXE, posYV, posYE, posXTirV, posXTirE, posYTirV, posYTirE; bool canVShoot=true; bool canEShoot=true; posXV=10; posYV=BSP_LCD_GetYSize()/2; posXE=BSP_LCD_GetXSize()-60; posYE=BSP_LCD_GetYSize()/2; while(isAlive) { timer++; if (timer>100){ timer=0; difficulte-=1; } points++; sprintf((char*)pouaint,"%d pts",points); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_DisplayStringAt(0, 1, (uint8_t *)&pouaint, CENTER_MODE); mpu.getRotation(&gx, &gy, &gz); TS_State.touchX[1]=12; HAL_Delay(difficulte); BSP_LCD_Clear(LCD_COLOR_BLACK); BSP_LCD_SetTextColor(LCD_COLOR_BLUE); BSP_LCD_FillRect(posXV, posYV, 40, 40); BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_FillRect(posXE, posYE, 40, 40); BSP_TS_GetState(&TS_State); srand (time(NULL)); randome = rand() % 2 + 1; if(randome==1) { posYE-=5; if(posYE<0) posYE=BSP_LCD_GetYSize(); } else { posYE+=5; if(posYE>BSP_LCD_GetYSize()) posYE=0; } if(gy<-2000) { posYV-=5; if(posYV<0) posYV=BSP_LCD_GetYSize(); } else if(gy>2000) { posYV+=5; if(posYV>BSP_LCD_GetYSize()) posYV=0; } if(TS_State.touchDetected) { if(canVShoot) { posXTirV=posXV+10; posYTirV=posYV+10; canVShoot=false; } } if(!canVShoot) { if(posXTirV>BSP_LCD_GetXSize()) { posXTirV=0; canVShoot=true; } BSP_LCD_SetTextColor(LCD_COLOR_BLUE); BSP_LCD_DrawHLine(posXTirV, posYTirV, 20); posXTirV+=20; } if(canEShoot) { posXTirE=posXE; posYTirE=posYE+10; canEShoot=false; } else { BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DrawHLine(posXTirE, posYTirE, 20); posXTirE-=20; if(posXTirE<0) { canEShoot=true; } } if((posXTirV>posXE-20)&&(posXTirV<posXE+20)&&(posYTirV>posYE)&&(posYTirV<posYE+40)) { points+=10000; posXTirV=0; canVShoot=true; } if((posXTirE>posXV-20)&&(posXTirE<posXV+20)&&(posYTirE>posYV)&&(posYTirE<posYV+40)) { isAlive=false; } } BSP_LCD_Clear(LCD_COLOR_MAGENTA); while(true){ BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_DisplayStringAt(0, 5, (uint8_t *)"FIN DE PARTIE", CENTER_MODE); BSP_LCD_DisplayStringAt(0, 55, (uint8_t *)"NOMBRE DE POINTS :", CENTER_MODE); BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)&pouaint, CENTER_MODE); } }