PACMAN_part1

Dependencies:   mbed LCD_DISCO_F469NI TS_DISCO_F469NI BSP_DISCO_F469NI

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?

UserRevisionLine numberNew 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 }