PACMAN_part_3_0
Dependencies: mbed LCD_DISCO_F469NI TS_DISCO_F469NI BSP_DISCO_F469NI
main.cpp
- Committer:
- fab2sn
- Date:
- 2019-12-06
- Revision:
- 2:63af55274d70
- Parent:
- 1:b7df0d9d1d9c
- Child:
- 3:7c9276127150
File content as of revision 2:63af55274d70:
#include "mbed.h" #include "LCD_DISCO_F469NI.h" #include "TS_DISCO_F469NI.h" TS_DISCO_F469NI ts; LCD_DISCO_F469NI lcd; DigitalOut led1(LED1); int main() { Point trianglePoint[3]; Point pacmanCenter; int16_t pacmanSize = 64; int16_t pacGumSize = 10; uint8_t i; uint16_t x, y; uint32_t color; TS_StateTypeDef TS_State; ts.Init(lcd.GetXSize(), lcd.GetYSize()); color = LCD_COLOR_YELLOW; start: /* Eteint la LED */ led1 = 1; /* Efface ecran */ lcd.Clear(LCD_COLOR_BLACK); lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"!! PACMAN !!", CENTER_MODE); wait(1); /* emplacement initial du pacman */ pacmanCenter.X = pacmanSize + 10; pacmanCenter.Y = lcd.GetYSize() / 2; /* Dessine des pacgum */ lcd.SetTextColor(LCD_COLOR_RED); for (i = 0; i < 7; i++) { lcd.FillCircle(i * 100 + pacGumSize, pacmanCenter.Y, pacGumSize); } /* boucle d'animation */ do { /* on efface le pacman */ lcd.SetTextColor(LCD_COLOR_BLACK); lcd.FillCircle(pacmanCenter.X - 10, pacmanCenter.Y, pacmanSize); /* dessine un rond jaune */ lcd.SetTextColor(color); lcd.FillCircle(pacmanCenter.X, pacmanCenter.Y, pacmanSize); /* dessine la bouche (triangle noir) */ trianglePoint[0].X = pacmanCenter.X; trianglePoint[0].Y = pacmanCenter.Y; trianglePoint[1].X = pacmanCenter.X + pacmanSize; trianglePoint[1].Y = pacmanCenter.Y - pacmanSize; trianglePoint[2].X = pacmanCenter.X + pacmanSize; trianglePoint[2].Y = pacmanCenter.Y + pacmanSize; lcd.SetTextColor(LCD_COLOR_BLACK); lcd.FillPolygon(trianglePoint, 3); ts.GetState(&TS_State); if (TS_State.touchDetected) { x = TS_State.touchX[0]; y = TS_State.touchY[0]; if ((abs(x - pacmanCenter.X) < 50) & (abs(y - pacmanCenter.Y) < 50)) { if (color == LCD_COLOR_YELLOW) color = LCD_COLOR_BLUE; else color = LCD_COLOR_YELLOW; } } /* on attend un peu */ wait(0.02); /* on se prepare a deplacer le pacman */ pacmanCenter.X += 10; } while (pacmanCenter.X + pacmanSize < lcd.GetXSize()); /* on continue tant que le pacman n'a pas atteint le bord de l'ecran */ /* Affiche le texte */ lcd.DisplayStringAt(0, LINE(20), (uint8_t *)"THE END", CENTER_MODE); /* Clignotte la LED */ for (i = 0; i < 10; i++) { led1 = !led1; wait(0.05); } wait(1); /* on recommence */ goto start; }