![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
PACMAN_part_3_0
Dependencies: mbed LCD_DISCO_F469NI TS_DISCO_F469NI BSP_DISCO_F469NI
main.cpp@0:8515b04f8da2, 2017-01-19 (annotated)
- Committer:
- fab2sn
- Date:
- Thu Jan 19 12:31:37 2017 +0000
- Revision:
- 0:8515b04f8da2
- Child:
- 1:b7df0d9d1d9c
v1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fab2sn | 0:8515b04f8da2 | 1 | #include "mbed.h" |
fab2sn | 0:8515b04f8da2 | 2 | #include "LCD_DISCO_F469NI.h" |
fab2sn | 0:8515b04f8da2 | 3 | |
fab2sn | 0:8515b04f8da2 | 4 | LCD_DISCO_F469NI lcd; |
fab2sn | 0:8515b04f8da2 | 5 | DigitalOut led1(LED1); |
fab2sn | 0:8515b04f8da2 | 6 | |
fab2sn | 0:8515b04f8da2 | 7 | int main() |
fab2sn | 0:8515b04f8da2 | 8 | { |
fab2sn | 0:8515b04f8da2 | 9 | Point trianglePoint[3]; |
fab2sn | 0:8515b04f8da2 | 10 | Point pacmanCenter; |
fab2sn | 0:8515b04f8da2 | 11 | int16_t pacmanSize = 64; |
fab2sn | 0:8515b04f8da2 | 12 | int16_t pacGumSize = 10; |
fab2sn | 0:8515b04f8da2 | 13 | uint8_t i; |
fab2sn | 0:8515b04f8da2 | 14 | |
fab2sn | 0:8515b04f8da2 | 15 | start: |
fab2sn | 0:8515b04f8da2 | 16 | |
fab2sn | 0:8515b04f8da2 | 17 | /* Eteint la LED */ |
fab2sn | 0:8515b04f8da2 | 18 | led1 = 1; |
fab2sn | 0:8515b04f8da2 | 19 | |
fab2sn | 0:8515b04f8da2 | 20 | /* Efface ecran */ |
fab2sn | 0:8515b04f8da2 | 21 | lcd.Clear(LCD_COLOR_BLACK); |
fab2sn | 0:8515b04f8da2 | 22 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"! PACMAN !", CENTER_MODE); |
fab2sn | 0:8515b04f8da2 | 23 | |
fab2sn | 0:8515b04f8da2 | 24 | wait(1); |
fab2sn | 0:8515b04f8da2 | 25 | |
fab2sn | 0:8515b04f8da2 | 26 | /* emplacement initial du pacman */ |
fab2sn | 0:8515b04f8da2 | 27 | pacmanCenter.X = pacmanSize; |
fab2sn | 0:8515b04f8da2 | 28 | pacmanCenter.Y = lcd.GetYSize() / 2; |
fab2sn | 0:8515b04f8da2 | 29 | |
fab2sn | 0:8515b04f8da2 | 30 | |
fab2sn | 0:8515b04f8da2 | 31 | /* Dessine des pacgum */ |
fab2sn | 0:8515b04f8da2 | 32 | lcd.SetTextColor(LCD_COLOR_RED); |
fab2sn | 0:8515b04f8da2 | 33 | for (i = 0; i < 7; i++) { |
fab2sn | 0:8515b04f8da2 | 34 | lcd.FillCircle(i * 100 + pacGumSize, pacmanCenter.Y, pacGumSize); |
fab2sn | 0:8515b04f8da2 | 35 | } |
fab2sn | 0:8515b04f8da2 | 36 | |
fab2sn | 0:8515b04f8da2 | 37 | /* boucle d'animation */ |
fab2sn | 0:8515b04f8da2 | 38 | do |
fab2sn | 0:8515b04f8da2 | 39 | { |
fab2sn | 0:8515b04f8da2 | 40 | /* dessine un rond jaune */ |
fab2sn | 0:8515b04f8da2 | 41 | lcd.SetTextColor(LCD_COLOR_YELLOW); |
fab2sn | 0:8515b04f8da2 | 42 | lcd.FillCircle(pacmanCenter.X, pacmanCenter.Y, pacmanSize); |
fab2sn | 0:8515b04f8da2 | 43 | |
fab2sn | 0:8515b04f8da2 | 44 | /* dessine la bouche (triangle noir) */ |
fab2sn | 0:8515b04f8da2 | 45 | trianglePoint[0].X = pacmanCenter.X; |
fab2sn | 0:8515b04f8da2 | 46 | trianglePoint[0].Y = pacmanCenter.Y; |
fab2sn | 0:8515b04f8da2 | 47 | |
fab2sn | 0:8515b04f8da2 | 48 | trianglePoint[1].X = pacmanCenter.X + pacmanSize; |
fab2sn | 0:8515b04f8da2 | 49 | trianglePoint[1].Y = pacmanCenter.Y - pacmanSize; |
fab2sn | 0:8515b04f8da2 | 50 | |
fab2sn | 0:8515b04f8da2 | 51 | trianglePoint[2].X = pacmanCenter.X + pacmanSize; |
fab2sn | 0:8515b04f8da2 | 52 | trianglePoint[2].Y = pacmanCenter.Y + pacmanSize; |
fab2sn | 0:8515b04f8da2 | 53 | |
fab2sn | 0:8515b04f8da2 | 54 | lcd.SetTextColor(LCD_COLOR_BLACK); |
fab2sn | 0:8515b04f8da2 | 55 | lcd.FillPolygon(trianglePoint, 3); |
fab2sn | 0:8515b04f8da2 | 56 | |
fab2sn | 0:8515b04f8da2 | 57 | /* on attend un peu */ |
fab2sn | 0:8515b04f8da2 | 58 | wait(0.02); |
fab2sn | 0:8515b04f8da2 | 59 | |
fab2sn | 0:8515b04f8da2 | 60 | /* on efface le pacman */ |
fab2sn | 0:8515b04f8da2 | 61 | lcd.SetTextColor(LCD_COLOR_BLACK); |
fab2sn | 0:8515b04f8da2 | 62 | lcd.FillCircle(pacmanCenter.X, pacmanCenter.Y, pacmanSize); |
fab2sn | 0:8515b04f8da2 | 63 | |
fab2sn | 0:8515b04f8da2 | 64 | /* on se prepare a deplacer le pacman */ |
fab2sn | 0:8515b04f8da2 | 65 | pacmanCenter.X += 10; |
fab2sn | 0:8515b04f8da2 | 66 | } while (pacmanCenter.X + pacmanSize < lcd.GetXSize()); |
fab2sn | 0:8515b04f8da2 | 67 | /* on arrete l'animation quand le pacman atteint le bord de l'ecran */ |
fab2sn | 0:8515b04f8da2 | 68 | |
fab2sn | 0:8515b04f8da2 | 69 | /* Affiche le texte */ |
fab2sn | 0:8515b04f8da2 | 70 | lcd.DisplayStringAt(0, LINE(20), (uint8_t *)"THE END", CENTER_MODE); |
fab2sn | 0:8515b04f8da2 | 71 | |
fab2sn | 0:8515b04f8da2 | 72 | /* Clignotte la LED */ |
fab2sn | 0:8515b04f8da2 | 73 | for (i = 0; i < 10; i++) { |
fab2sn | 0:8515b04f8da2 | 74 | led1 = !led1; |
fab2sn | 0:8515b04f8da2 | 75 | wait(0.05); |
fab2sn | 0:8515b04f8da2 | 76 | } |
fab2sn | 0:8515b04f8da2 | 77 | |
fab2sn | 0:8515b04f8da2 | 78 | wait(1); |
fab2sn | 0:8515b04f8da2 | 79 | |
fab2sn | 0:8515b04f8da2 | 80 | /* on recommence */ |
fab2sn | 0:8515b04f8da2 | 81 | goto start; |
fab2sn | 0:8515b04f8da2 | 82 | } |