PACMAN_part_2

Dependencies:   mbed LCD_DISCO_F469NI TS_DISCO_F469NI BSP_DISCO_F469NI

main.cpp

Committer:
fab2sn
Date:
2017-01-19
Revision:
0:8515b04f8da2
Child:
1:b7df0d9d1d9c

File content as of revision 0:8515b04f8da2:

#include "mbed.h"
#include "LCD_DISCO_F469NI.h"

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;

 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;
    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
    {    
      /* dessine un rond jaune */
      lcd.SetTextColor(LCD_COLOR_YELLOW);
      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);

      /* on attend un peu */
      wait(0.02);
      
      /* on efface le pacman */
      lcd.SetTextColor(LCD_COLOR_BLACK);
      lcd.FillCircle(pacmanCenter.X, pacmanCenter.Y, pacmanSize);

      /* on se prepare a deplacer le pacman */
      pacmanCenter.X += 10;   
    } while (pacmanCenter.X + pacmanSize < lcd.GetXSize());
    /* on arrete l'animation quand le pacman 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;
}