Projet Interfaçage de Kenny GUILLOUCHE, Vadim IELKIN, Nathan DELAFOSSE
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed
main.cpp@2:3bb535973904, 2018-06-12 (annotated)
- Committer:
- Tsarvadim
- Date:
- Tue Jun 12 15:04:11 2018 +0000
- Revision:
- 2:3bb535973904
- Parent:
- 1:f034e131e408
Projet acc?l?rom?tre
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Tsarvadim | 0:19846e16566e | 1 | #include "mbed.h" |
Tsarvadim | 0:19846e16566e | 2 | #include "TS_DISCO_F746NG.h" |
Tsarvadim | 0:19846e16566e | 3 | #include "LCD_DISCO_F746NG.h" |
Tsarvadim | 0:19846e16566e | 4 | #include <time.h> // pour rand |
Tsarvadim | 0:19846e16566e | 5 | #include <stdio.h> |
Tsarvadim | 0:19846e16566e | 6 | #include <stdlib.h> |
Tsarvadim | 0:19846e16566e | 7 | |
Tsarvadim | 0:19846e16566e | 8 | LCD_DISCO_F746NG lcd; |
Tsarvadim | 0:19846e16566e | 9 | TS_DISCO_F746NG ts; |
Tsarvadim | 0:19846e16566e | 10 | |
Tsarvadim | 0:19846e16566e | 11 | I2C i2c(PB_9,PB_8); |
Tsarvadim | 0:19846e16566e | 12 | |
Tsarvadim | 0:19846e16566e | 13 | TS_StateTypeDef TS_State; |
Tsarvadim | 0:19846e16566e | 14 | |
Tsarvadim | 0:19846e16566e | 15 | //adress de l'accelerometre |
Tsarvadim | 0:19846e16566e | 16 | int addr = 0x14; |
Tsarvadim | 0:19846e16566e | 17 | |
Tsarvadim | 0:19846e16566e | 18 | //Tableau contenant les commandes |
Tsarvadim | 0:19846e16566e | 19 | char cmd[2]; |
Tsarvadim | 0:19846e16566e | 20 | char resultat[2]; |
Tsarvadim | 0:19846e16566e | 21 | |
Tsarvadim | 0:19846e16566e | 22 | |
Tsarvadim | 0:19846e16566e | 23 | //Tableau contenant les données du capteur |
Tsarvadim | 0:19846e16566e | 24 | char tmp[40]; |
Tsarvadim | 0:19846e16566e | 25 | |
Tsarvadim | 0:19846e16566e | 26 | //Position du pion |
Tsarvadim | 0:19846e16566e | 27 | int position_pion_x = 0; |
Tsarvadim | 0:19846e16566e | 28 | int position_pion_y = 30; |
Tsarvadim | 0:19846e16566e | 29 | |
Tsarvadim | 0:19846e16566e | 30 | //Variable contenant le score |
Tsarvadim | 0:19846e16566e | 31 | int score = 0; |
Tsarvadim | 0:19846e16566e | 32 | |
Tsarvadim | 0:19846e16566e | 33 | //Variable de la position du checkpoint |
Tsarvadim | 0:19846e16566e | 34 | int position_checkpoint_x = 250; |
Tsarvadim | 0:19846e16566e | 35 | int position_checkpoint_y = 125; |
Tsarvadim | 0:19846e16566e | 36 | |
Tsarvadim | 0:19846e16566e | 37 | |
Tsarvadim | 0:19846e16566e | 38 | //Variable choix utilisateur menu |
Tsarvadim | 0:19846e16566e | 39 | bool choix_jeu = false; |
Tsarvadim | 0:19846e16566e | 40 | bool choix_info = false; |
Tsarvadim | 0:19846e16566e | 41 | |
Tsarvadim | 0:19846e16566e | 42 | //Prototype des méthode |
Tsarvadim | 0:19846e16566e | 43 | void jeu(); |
Tsarvadim | 0:19846e16566e | 44 | void information(); |
Tsarvadim | 0:19846e16566e | 45 | |
Tsarvadim | 0:19846e16566e | 46 | int main() |
Tsarvadim | 0:19846e16566e | 47 | { |
Tsarvadim | 0:19846e16566e | 48 | //Variable utilisé pour stocker les données de l'écran tactiles |
Tsarvadim | 0:19846e16566e | 49 | uint16_t x, y; |
Tsarvadim | 0:19846e16566e | 50 | uint8_t status; |
Tsarvadim | 0:19846e16566e | 51 | |
Tsarvadim | 1:f034e131e408 | 52 | lcd.SetBackColor(0); |
Tsarvadim | 0:19846e16566e | 53 | //Initialisation |
Tsarvadim | 1:f034e131e408 | 54 | |
Tsarvadim | 1:f034e131e408 | 55 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 56 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Bienvenue sur AngleTarget", CENTER_MODE); |
Tsarvadim | 1:f034e131e408 | 57 | wait(2); |
Tsarvadim | 0:19846e16566e | 58 | |
Tsarvadim | 1:f034e131e408 | 59 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 60 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
Tsarvadim | 0:19846e16566e | 61 | if (status != TS_OK) { |
Tsarvadim | 0:19846e16566e | 62 | lcd.Clear(LCD_COLOR_RED); |
Tsarvadim | 0:19846e16566e | 63 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 64 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"Initialisation fail ", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 65 | } else { |
Tsarvadim | 0:19846e16566e | 66 | lcd.Clear(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 67 | } |
Tsarvadim | 0:19846e16566e | 68 | |
Tsarvadim | 1:f034e131e408 | 69 | lcd.SetBackColor(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 70 | //Affichage du menu |
Tsarvadim | 0:19846e16566e | 71 | lcd.SetFont(&Font16); |
Tsarvadim | 0:19846e16566e | 72 | lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"Veuillez choisir une option", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 73 | |
Tsarvadim | 0:19846e16566e | 74 | //"Bouton" jeu |
Tsarvadim | 0:19846e16566e | 75 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 76 | lcd.FillRect(250, 150, 150, 100); |
Tsarvadim | 1:f034e131e408 | 77 | lcd.SetBackColor(LCD_COLOR_BLACK); |
Tsarvadim | 1:f034e131e408 | 78 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Tsarvadim | 1:f034e131e408 | 79 | lcd.SetFont(&Font16); |
Tsarvadim | 1:f034e131e408 | 80 | lcd.DisplayStringAt(95,190, (uint8_t *)"Jeu", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 81 | |
Tsarvadim | 0:19846e16566e | 82 | //"Bouton" informations |
Tsarvadim | 0:19846e16566e | 83 | lcd.SetTextColor(LCD_COLOR_RED); |
Tsarvadim | 1:f034e131e408 | 84 | lcd.FillRect(40,150,150,100); |
Tsarvadim | 1:f034e131e408 | 85 | lcd.SetBackColor(LCD_COLOR_RED); |
Tsarvadim | 1:f034e131e408 | 86 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Tsarvadim | 1:f034e131e408 | 87 | lcd.SetFont(&Font16); |
Tsarvadim | 1:f034e131e408 | 88 | lcd.DisplayStringAt(85,190, (uint8_t *)"Info", LEFT_MODE); |
Tsarvadim | 1:f034e131e408 | 89 | |
Tsarvadim | 1:f034e131e408 | 90 | lcd.SetBackColor(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 91 | while(1) |
Tsarvadim | 0:19846e16566e | 92 | { |
Tsarvadim | 0:19846e16566e | 93 | //Recuperation des informations tactiles |
Tsarvadim | 0:19846e16566e | 94 | ts.GetState(&TS_State); |
Tsarvadim | 0:19846e16566e | 95 | if (TS_State.touchDetected) |
Tsarvadim | 0:19846e16566e | 96 | { |
Tsarvadim | 0:19846e16566e | 97 | x = TS_State.touchX[0]; |
Tsarvadim | 0:19846e16566e | 98 | y = TS_State.touchY[0]; |
Tsarvadim | 0:19846e16566e | 99 | |
Tsarvadim | 0:19846e16566e | 100 | //Si on appuie sur la case jeu on lance le jeu |
Tsarvadim | 0:19846e16566e | 101 | if((x >=250 && y>=150) && (x<400 && y<250)) |
Tsarvadim | 0:19846e16566e | 102 | choix_jeu = true; |
Tsarvadim | 0:19846e16566e | 103 | |
Tsarvadim | 0:19846e16566e | 104 | //Si on appuie sur la case information on lance la methode information |
Tsarvadim | 0:19846e16566e | 105 | if((x >=50 && y>=150) && (x<200&& y<250)) |
Tsarvadim | 0:19846e16566e | 106 | choix_info = true; |
Tsarvadim | 0:19846e16566e | 107 | } |
Tsarvadim | 0:19846e16566e | 108 | |
Tsarvadim | 0:19846e16566e | 109 | |
Tsarvadim | 0:19846e16566e | 110 | //Si on appuie sur la case jeu on lance le jeu |
Tsarvadim | 0:19846e16566e | 111 | if(choix_jeu == true) |
Tsarvadim | 0:19846e16566e | 112 | { |
Tsarvadim | 0:19846e16566e | 113 | jeu(); |
Tsarvadim | 0:19846e16566e | 114 | } |
Tsarvadim | 0:19846e16566e | 115 | |
Tsarvadim | 0:19846e16566e | 116 | //Si on appuie sur la case information on lance la methode information |
Tsarvadim | 0:19846e16566e | 117 | if(choix_info == true) |
Tsarvadim | 0:19846e16566e | 118 | { |
Tsarvadim | 0:19846e16566e | 119 | information(); |
Tsarvadim | 0:19846e16566e | 120 | choix_info = false; |
Tsarvadim | 0:19846e16566e | 121 | choix_jeu = true; |
Tsarvadim | 0:19846e16566e | 122 | } |
Tsarvadim | 0:19846e16566e | 123 | |
Tsarvadim | 0:19846e16566e | 124 | } |
Tsarvadim | 0:19846e16566e | 125 | } |
Tsarvadim | 0:19846e16566e | 126 | |
Tsarvadim | 0:19846e16566e | 127 | //Methode information |
Tsarvadim | 0:19846e16566e | 128 | void information() |
Tsarvadim | 0:19846e16566e | 129 | { |
Tsarvadim | 0:19846e16566e | 130 | uint16_t x, y; |
Tsarvadim | 0:19846e16566e | 131 | bool choix_retour = false; |
Tsarvadim | 0:19846e16566e | 132 | lcd.Clear(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 133 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 134 | |
Tsarvadim | 0:19846e16566e | 135 | //Affichage des informations |
Tsarvadim | 0:19846e16566e | 136 | lcd.SetFont(&Font12); |
Tsarvadim | 0:19846e16566e | 137 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Bienvenue dans la rubrique information sur AngleTarget", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 138 | lcd.SetFont(&Font12); |
Tsarvadim | 0:19846e16566e | 139 | lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"Developpe par Kenny Guillouche, Nathan Delafosse et Vadim Ielkin", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 140 | lcd.DisplayStringAt(0, LINE(4), (uint8_t *)"Pour jouer, rendez vous dans le menu principal et clique sur jouer", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 141 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"Les regles sont simples. vous devez placer votre pion sur une forme generer", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 142 | lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"Un jeu MANGame", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 143 | lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"Developpe par Kenny Guillouche, Nathan Delafosse et Vadim Ielkin", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 144 | |
Tsarvadim | 0:19846e16566e | 145 | //Bouton jeu |
Tsarvadim | 0:19846e16566e | 146 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 147 | lcd.FillRect(165, 150, 150, 100); |
Tsarvadim | 1:f034e131e408 | 148 | lcd.SetBackColor(LCD_COLOR_BLACK); |
Tsarvadim | 1:f034e131e408 | 149 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Tsarvadim | 1:f034e131e408 | 150 | lcd.SetFont(&Font16); |
Tsarvadim | 1:f034e131e408 | 151 | lcd.DisplayStringAt(0,190, (uint8_t *)"JEU", CENTER_MODE); |
Tsarvadim | 2:3bb535973904 | 152 | |
Tsarvadim | 2:3bb535973904 | 153 | |
Tsarvadim | 2:3bb535973904 | 154 | lcd.SetBackColor(LCD_COLOR_WHITE); |
Tsarvadim | 2:3bb535973904 | 155 | |
Tsarvadim | 2:3bb535973904 | 156 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 157 | do |
Tsarvadim | 0:19846e16566e | 158 | { |
Tsarvadim | 0:19846e16566e | 159 | ts.GetState(&TS_State); |
Tsarvadim | 0:19846e16566e | 160 | if (TS_State.touchDetected) |
Tsarvadim | 0:19846e16566e | 161 | { |
Tsarvadim | 0:19846e16566e | 162 | x = TS_State.touchX[0]; |
Tsarvadim | 0:19846e16566e | 163 | y = TS_State.touchY[0]; |
Tsarvadim | 0:19846e16566e | 164 | if((x >=165 && y>=150) && (x<315 && y<250)) |
Tsarvadim | 0:19846e16566e | 165 | { |
Tsarvadim | 0:19846e16566e | 166 | choix_retour = true; |
Tsarvadim | 0:19846e16566e | 167 | choix_info = false; |
Tsarvadim | 0:19846e16566e | 168 | jeu(); |
Tsarvadim | 0:19846e16566e | 169 | } |
Tsarvadim | 0:19846e16566e | 170 | } |
Tsarvadim | 0:19846e16566e | 171 | } |
Tsarvadim | 0:19846e16566e | 172 | while(choix_retour == false); |
Tsarvadim | 0:19846e16566e | 173 | |
Tsarvadim | 0:19846e16566e | 174 | } |
Tsarvadim | 0:19846e16566e | 175 | |
Tsarvadim | 0:19846e16566e | 176 | //Methode jeu |
Tsarvadim | 0:19846e16566e | 177 | void jeu() |
Tsarvadim | 0:19846e16566e | 178 | { |
Tsarvadim | 0:19846e16566e | 179 | uint16_t x, y; |
Tsarvadim | 0:19846e16566e | 180 | bool cheat; |
Tsarvadim | 0:19846e16566e | 181 | cheat = false; |
Tsarvadim | 0:19846e16566e | 182 | bool stopjeu = false; |
Tsarvadim | 0:19846e16566e | 183 | |
Tsarvadim | 0:19846e16566e | 184 | //Initialisation du jeu |
Tsarvadim | 0:19846e16566e | 185 | lcd.Clear(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 186 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 187 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 188 | |
Tsarvadim | 0:19846e16566e | 189 | //Generation du score |
Tsarvadim | 0:19846e16566e | 190 | sprintf(tmp,"Score : %d",score); |
Tsarvadim | 0:19846e16566e | 191 | lcd.DisplayStringAt(0, LINE(1),(uint8_t *)tmp,CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 192 | |
Tsarvadim | 0:19846e16566e | 193 | //Generation du premier checkpoint |
Tsarvadim | 0:19846e16566e | 194 | lcd.SetTextColor(LCD_COLOR_RED); |
Tsarvadim | 0:19846e16566e | 195 | lcd.FillRect(position_checkpoint_x, position_checkpoint_y, 10, 10); |
Tsarvadim | 0:19846e16566e | 196 | |
Tsarvadim | 0:19846e16566e | 197 | srand(time(NULL)); |
Tsarvadim | 0:19846e16566e | 198 | |
Tsarvadim | 0:19846e16566e | 199 | while(stopjeu == false) |
Tsarvadim | 0:19846e16566e | 200 | { |
Tsarvadim | 0:19846e16566e | 201 | //Recuperation de la coordonnée en X |
Tsarvadim | 0:19846e16566e | 202 | resultat[0] = 0; |
Tsarvadim | 0:19846e16566e | 203 | cmd[0] = 0x04; //Command read |
Tsarvadim | 0:19846e16566e | 204 | i2c.write(addr, cmd, 1); |
Tsarvadim | 0:19846e16566e | 205 | i2c.read(addr, resultat, 1); |
Tsarvadim | 0:19846e16566e | 206 | |
Tsarvadim | 0:19846e16566e | 207 | //Si accelerometre penché vers la droite |
Tsarvadim | 0:19846e16566e | 208 | if((int)resultat[0]<52 && (int)resultat[0]>8) |
Tsarvadim | 0:19846e16566e | 209 | { |
Tsarvadim | 0:19846e16566e | 210 | //On modifie notre postion du pion vers la droite |
Tsarvadim | 0:19846e16566e | 211 | if(position_pion_x<450) //Limite ecran |
Tsarvadim | 0:19846e16566e | 212 | { |
Tsarvadim | 0:19846e16566e | 213 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 214 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 215 | position_pion_x += 1; |
Tsarvadim | 0:19846e16566e | 216 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 217 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 218 | } |
Tsarvadim | 0:19846e16566e | 219 | } |
Tsarvadim | 0:19846e16566e | 220 | |
Tsarvadim | 0:19846e16566e | 221 | //Si accelerometre penché vers la hauche |
Tsarvadim | 0:19846e16566e | 222 | else if((int)resultat[0]> 200 && (int)resultat[0]<250) |
Tsarvadim | 0:19846e16566e | 223 | { |
Tsarvadim | 0:19846e16566e | 224 | //On modifie notre postion du pion vers la gauche |
Tsarvadim | 0:19846e16566e | 225 | if(position_pion_x>0) //Limite ecran |
Tsarvadim | 0:19846e16566e | 226 | { |
Tsarvadim | 0:19846e16566e | 227 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 228 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 229 | position_pion_x -= 1; |
Tsarvadim | 0:19846e16566e | 230 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 231 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 232 | } |
Tsarvadim | 0:19846e16566e | 233 | } |
Tsarvadim | 0:19846e16566e | 234 | |
Tsarvadim | 0:19846e16566e | 235 | //Recuperation de la coordonnée en Y |
Tsarvadim | 0:19846e16566e | 236 | resultat[0] = 0; |
Tsarvadim | 0:19846e16566e | 237 | cmd[0] = 0x06; //Command read |
Tsarvadim | 0:19846e16566e | 238 | i2c.write(addr, cmd, 1); |
Tsarvadim | 0:19846e16566e | 239 | i2c.read(addr, resultat, 1); |
Tsarvadim | 0:19846e16566e | 240 | |
Tsarvadim | 0:19846e16566e | 241 | //Si accelerometre penché vers le haut |
Tsarvadim | 0:19846e16566e | 242 | if((int)resultat[0]<52 && (int)resultat[0]>8) |
Tsarvadim | 0:19846e16566e | 243 | { |
Tsarvadim | 0:19846e16566e | 244 | //On modifie notre postion du pion vers le haut |
Tsarvadim | 0:19846e16566e | 245 | if(position_pion_y>30) //Limite ecran |
Tsarvadim | 0:19846e16566e | 246 | { |
Tsarvadim | 0:19846e16566e | 247 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 248 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 249 | position_pion_y -= 1; |
Tsarvadim | 0:19846e16566e | 250 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 251 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 252 | } |
Tsarvadim | 0:19846e16566e | 253 | } |
Tsarvadim | 0:19846e16566e | 254 | |
Tsarvadim | 0:19846e16566e | 255 | //Si accelerometre penché vers le bas |
Tsarvadim | 0:19846e16566e | 256 | else if((int)resultat[0]<248 && (int)resultat[0]>200) |
Tsarvadim | 0:19846e16566e | 257 | { |
Tsarvadim | 0:19846e16566e | 258 | //On modifie notre postion du pion vers le bas |
Tsarvadim | 0:19846e16566e | 259 | if(position_pion_y<242) //Limite ecran |
Tsarvadim | 0:19846e16566e | 260 | { |
Tsarvadim | 0:19846e16566e | 261 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 262 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 263 | position_pion_y += 1; |
Tsarvadim | 0:19846e16566e | 264 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 265 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 266 | } |
Tsarvadim | 0:19846e16566e | 267 | } |
Tsarvadim | 0:19846e16566e | 268 | |
Tsarvadim | 0:19846e16566e | 269 | //colission pion/checkpoint |
Tsarvadim | 0:19846e16566e | 270 | if((position_pion_x + 30 >position_checkpoint_x) && (position_pion_x < position_checkpoint_x + 10) && (position_pion_y + 30 >position_checkpoint_y) && (position_pion_y < position_checkpoint_y +10)) |
Tsarvadim | 0:19846e16566e | 271 | { |
Tsarvadim | 0:19846e16566e | 272 | //On efface |
Tsarvadim | 0:19846e16566e | 273 | lcd.Clear(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 274 | lcd.SetTextColor(LCD_COLOR_BLACK); |
Tsarvadim | 0:19846e16566e | 275 | lcd.FillRect(position_pion_x, position_pion_y, 30, 30); |
Tsarvadim | 0:19846e16566e | 276 | |
Tsarvadim | 0:19846e16566e | 277 | //Actualisation du score |
Tsarvadim | 0:19846e16566e | 278 | score++; |
Tsarvadim | 0:19846e16566e | 279 | sprintf(tmp,"Score : %d",score); |
Tsarvadim | 0:19846e16566e | 280 | lcd.DisplayStringAt(0, LINE(1),(uint8_t *)tmp,CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 281 | |
Tsarvadim | 0:19846e16566e | 282 | //Position aléatoire du prochain checkpoint |
Tsarvadim | 0:19846e16566e | 283 | position_checkpoint_x = (rand()%450) + 10; //generation nombre aleatoire entre 10 et 460 |
Tsarvadim | 0:19846e16566e | 284 | position_checkpoint_y = (rand()%215) + 35 ; //generation nombre aleatoire entre 35 et 250 |
Tsarvadim | 0:19846e16566e | 285 | |
Tsarvadim | 0:19846e16566e | 286 | //Affichage nouveau checkpoint |
Tsarvadim | 0:19846e16566e | 287 | lcd.SetTextColor(LCD_COLOR_RED); |
Tsarvadim | 0:19846e16566e | 288 | lcd.FillRect(position_checkpoint_x, position_checkpoint_y, 10, 10); |
Tsarvadim | 0:19846e16566e | 289 | } |
Tsarvadim | 0:19846e16566e | 290 | |
Tsarvadim | 0:19846e16566e | 291 | //Si il a reussit à faire +20 de score |
Tsarvadim | 0:19846e16566e | 292 | if(score>20) |
Tsarvadim | 0:19846e16566e | 293 | { |
Tsarvadim | 0:19846e16566e | 294 | //On efface |
Tsarvadim | 0:19846e16566e | 295 | lcd.Clear(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 296 | lcd.SetFont(&Font24); |
Tsarvadim | 0:19846e16566e | 297 | |
Tsarvadim | 0:19846e16566e | 298 | //On affiche victoire |
Tsarvadim | 0:19846e16566e | 299 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"Victoire", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 300 | wait(5); |
Tsarvadim | 0:19846e16566e | 301 | |
Tsarvadim | 0:19846e16566e | 302 | //Reinitialisation |
Tsarvadim | 0:19846e16566e | 303 | stopjeu =true; |
Tsarvadim | 0:19846e16566e | 304 | score = 0; |
Tsarvadim | 0:19846e16566e | 305 | position_pion_x = 0; |
Tsarvadim | 0:19846e16566e | 306 | position_pion_y = 30; |
Tsarvadim | 0:19846e16566e | 307 | lcd.SetFont(&Font16); |
Tsarvadim | 0:19846e16566e | 308 | } |
Tsarvadim | 0:19846e16566e | 309 | |
Tsarvadim | 0:19846e16566e | 310 | //Recuperation des informations tactiles |
Tsarvadim | 0:19846e16566e | 311 | ts.GetState(&TS_State); |
Tsarvadim | 0:19846e16566e | 312 | if (TS_State.touchDetected) |
Tsarvadim | 0:19846e16566e | 313 | { |
Tsarvadim | 0:19846e16566e | 314 | x = TS_State.touchX[0]; |
Tsarvadim | 0:19846e16566e | 315 | y = TS_State.touchY[0]; |
Tsarvadim | 0:19846e16566e | 316 | } |
Tsarvadim | 0:19846e16566e | 317 | |
Tsarvadim | 0:19846e16566e | 318 | //si on appuie sur la bonne position 1 |
Tsarvadim | 0:19846e16566e | 319 | if((x >=250 && y>=150) && (x<275 && y<175)) |
Tsarvadim | 0:19846e16566e | 320 | { |
Tsarvadim | 0:19846e16566e | 321 | cheat = true; |
Tsarvadim | 0:19846e16566e | 322 | } |
Tsarvadim | 0:19846e16566e | 323 | |
Tsarvadim | 0:19846e16566e | 324 | //si on appuie sur la bonne position 2 apres la 1 |
Tsarvadim | 0:19846e16566e | 325 | if((x >=150 && y>=250) && (x<175 && y<275) && (cheat == true)) |
Tsarvadim | 0:19846e16566e | 326 | { |
Tsarvadim | 0:19846e16566e | 327 | //On efface |
Tsarvadim | 0:19846e16566e | 328 | lcd.Clear(LCD_COLOR_WHITE); |
Tsarvadim | 0:19846e16566e | 329 | lcd.SetFont(&Font24); |
Tsarvadim | 0:19846e16566e | 330 | |
Tsarvadim | 0:19846e16566e | 331 | //On affiche victoire |
Tsarvadim | 0:19846e16566e | 332 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"Victoire", CENTER_MODE); |
Tsarvadim | 0:19846e16566e | 333 | wait(5); |
Tsarvadim | 0:19846e16566e | 334 | |
Tsarvadim | 0:19846e16566e | 335 | //Reinitialisation |
Tsarvadim | 0:19846e16566e | 336 | stopjeu =true; |
Tsarvadim | 0:19846e16566e | 337 | score = 0; |
Tsarvadim | 0:19846e16566e | 338 | position_pion_x = 0; |
Tsarvadim | 0:19846e16566e | 339 | position_pion_y = 30; |
Tsarvadim | 0:19846e16566e | 340 | lcd.SetFont(&Font16); |
Tsarvadim | 0:19846e16566e | 341 | } |
Tsarvadim | 0:19846e16566e | 342 | wait(0.005); |
Tsarvadim | 0:19846e16566e | 343 | } |
Tsarvadim | 0:19846e16566e | 344 | } |