Ennemis + interactions avec projectile
- Ajout d'une structure monster pour pouvoir les différentier. - Début de la tache sur les ennemis - Modification de l'interaction projectile/ennemis
This commit is contained in:
parent
fdcf7c7179
commit
ea4fb86ac1
8 changed files with 52336 additions and 51248 deletions
|
@ -1,4 +1,4 @@
|
|||
635E684B79701B039C64EA45C3F84D30=CA3D7F5B74D23BB249A63D9AEFB759CA
|
||||
8DF89ED150041C4CBC7CB9A9CAA90856=786F7A4E7FD721DD7DA504061EFBB9FE
|
||||
DC22A860405A8BF2F2C095E5B6529F12=27012316FF7CB74C53C654C2433BBA42
|
||||
DC22A860405A8BF2F2C095E5B6529F12=786F7A4E7FD721DD7DA504061EFBB9FE
|
||||
eclipse.preferences.version=1
|
||||
|
|
|
@ -141,20 +141,39 @@ struct Missile
|
|||
|
||||
struct Joueur
|
||||
{
|
||||
uint16_t x;
|
||||
uint16_t y;
|
||||
// uint32_t et pas 16 car fonction d'affichage bitmap (j'en sais pas plus)
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
uint8_t dx;
|
||||
uint8_t dy;
|
||||
uint8_t health;
|
||||
struct Missile missile;
|
||||
};
|
||||
|
||||
struct Monster
|
||||
{
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
uint8_t pbmp;
|
||||
struct Missile missile;
|
||||
uint8_t type;
|
||||
uint8_t health;
|
||||
|
||||
};
|
||||
|
||||
|
||||
// Définition des paramètres du joueurs
|
||||
|
||||
struct Joueur joueur = {10, 10, 1, 1, 3};
|
||||
|
||||
uint32_t LCD_COLOR_BACKGROUND = LCD_COLOR_BLACK;
|
||||
|
||||
// Number of waves of enemies before the game is won.
|
||||
|
||||
uint8_t waves_left = 10;
|
||||
|
||||
// La limite au dela de laquelle les ennemis ne peuvent pas être (utilisé pour
|
||||
uint32_t Limit_ennemis_x = 50;
|
||||
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
@ -1566,11 +1585,30 @@ void f_GameMaster(void const * argument)
|
|||
/* USER CODE BEGIN 5 */
|
||||
TickType_t xLastWakeTime;
|
||||
const TickType_t xPeriodeTache = 10;
|
||||
// Si la variable end est à 1, le jeu s'arrete.
|
||||
uint8_t end = 0;
|
||||
|
||||
/* Infinite loop */
|
||||
for (;;)
|
||||
{
|
||||
xQueueReceive(Queue_FHandle, &end, 0);
|
||||
if (end == 1){
|
||||
vTaskDelete(Block_EnemieHandle);
|
||||
vTaskDelete(ProjectileHandle);
|
||||
vTaskDelete(Joueur_1Handle);
|
||||
|
||||
//TODO L'affichage de l'écran de fin et des scores
|
||||
}
|
||||
|
||||
if (end == 0){
|
||||
if (waves_left == 0){
|
||||
vTaskDelete(Block_EnemieHandle);
|
||||
vTaskDelete(ProjectileHandle);
|
||||
vTaskDelete(Joueur_1Handle);
|
||||
|
||||
//TODO L'affichage de l'écran de fin et des scores
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1622,7 +1660,7 @@ void f_Joueur_1(void const * argument)
|
|||
BSP_LCD_SetTextColor(LCD_COLOR_BACKGROUND);
|
||||
BSP_LCD_FillRect(joueur.x, joueur.y, Width, Height);
|
||||
|
||||
BSP_LCD_DrawBitmap(uint32_t Xpos, uint32_t Ypos, uint8_t *pbmp)
|
||||
// BSP_LCD_DrawBitmap(uint32_t Xpos, uint32_t Ypos, uint8_t *pbmp)
|
||||
while (HAL_ADC_PollForConversion(&hadc3, 100) != HAL_OK);
|
||||
joystick_v = HAL_ADC_GetValue(&hadc3);
|
||||
while (HAL_ADC_PollForConversion(&hadc1, 100) != HAL_OK);
|
||||
|
@ -1663,9 +1701,42 @@ void f_block_enemie(void const * argument)
|
|||
/* USER CODE BEGIN f_block_enemie */
|
||||
TickType_t xLastWakeTime;
|
||||
const TickType_t xPeriodeTache = 10;
|
||||
uint8_t number_monsters = 30;
|
||||
struct Monster list_monsters[30];
|
||||
uint8_t end = 0;
|
||||
uint8_t deplacement = 1;
|
||||
struct Missile missile;
|
||||
/* Infinite loop */
|
||||
for (;;)
|
||||
{
|
||||
xQueueReceive(Queue_EHandle, &missile, 0);
|
||||
if (number_monsters == 0){
|
||||
xQueueSend(Queue_FHandle, &end, 0);
|
||||
}
|
||||
|
||||
for (int i=0;i< number_monsters;i++){
|
||||
if (list_monsters[i].health > 0 ){
|
||||
if ((missile.x == list_monsters[i].x)&&(missile.y == list_monsters[i].y))
|
||||
{
|
||||
list_monsters[i].health = list_monsters[i].health -1;
|
||||
// Est ce que cette ligne va marcher sachant que je transmets l'adresse dans la queue ?
|
||||
missile.valide = 0;
|
||||
if (list_monsters[i].health == 0){
|
||||
//TODO explosion du plaisir ?
|
||||
number_monsters = number_monsters -1;
|
||||
}
|
||||
}
|
||||
|
||||
BSP_LCD_DrawBitmap(list_monsters[i].x, list_monsters[i].y, &list_monsters[i].pbmp);
|
||||
// On alterne le deplacement des méchants comme dans le vrai jeux
|
||||
//TODO est ce que ca va posé un décalage entre l'affichage et la hitboxe ?
|
||||
list_monsters[i].x = list_monsters[i].x + deplacement*2;
|
||||
}
|
||||
}
|
||||
deplacement = -1;
|
||||
|
||||
|
||||
|
||||
vTaskDelayUntil(&xLastWakeTime, xPeriodeTache);
|
||||
}
|
||||
/* USER CODE END f_block_enemie */
|
||||
|
@ -1708,6 +1779,11 @@ void f_projectile(void const * argument)
|
|||
// Si le missile appartient au joueur :
|
||||
if (liste_missile[i].equipe == 0)
|
||||
{
|
||||
if (liste_missile[i].x >= Limit_ennemis_x)
|
||||
{
|
||||
xQueueSend(Queue_EHandle, &liste_missile+indice,0);
|
||||
// TODO Une petite animation d'explosion ?
|
||||
}
|
||||
|
||||
if ((liste_missile[i].x > 1)&&(liste_missile[i].x < LCD_HEIGHT-1)&&(liste_missile[i].y < LCD_WIDTH-1)&&(liste_missile[i].y > 1))
|
||||
{
|
||||
|
|
Binary file not shown.
|
@ -1,30 +1,30 @@
|
|||
main.c:166:5:main 280 static
|
||||
main.c:341:6:SystemClock_Config 216 static
|
||||
main.c:417:13:MX_ADC1_Init 24 static
|
||||
main.c:467:13:MX_ADC3_Init 24 static
|
||||
main.c:517:13:MX_CRC_Init 8 static
|
||||
main.c:548:13:MX_DAC_Init 16 static
|
||||
main.c:586:13:MX_DMA2D_Init 8 static
|
||||
main.c:623:13:MX_I2C1_Init 8 static
|
||||
main.c:669:13:MX_I2C3_Init 8 static
|
||||
main.c:715:13:MX_LTDC_Init 64 static
|
||||
main.c:777:13:MX_RNG_Init 8 static
|
||||
main.c:803:13:MX_RTC_Init 80 static
|
||||
main.c:895:13:MX_SPI2_Init 8 static
|
||||
main.c:935:13:MX_TIM1_Init 40 static
|
||||
main.c:982:13:MX_TIM2_Init 40 static
|
||||
main.c:1027:13:MX_TIM3_Init 88 static
|
||||
main.c:1093:13:MX_TIM5_Init 40 static
|
||||
main.c:1138:13:MX_TIM8_Init 112 static
|
||||
main.c:1217:13:MX_UART7_Init 8 static
|
||||
main.c:1252:13:MX_USART1_UART_Init 8 static
|
||||
main.c:1287:13:MX_USART6_UART_Init 8 static
|
||||
main.c:1318:13:MX_FMC_Init 40 static
|
||||
main.c:1369:13:MX_GPIO_Init 72 static
|
||||
main.c:1546:5:envoie_score 16 static
|
||||
main.c:1562:6:f_GameMaster 24 static
|
||||
main.c:1590:6:f_Joueur_1 80 static
|
||||
main.c:1661:6:f_block_enemie 24 static
|
||||
main.c:1681:6:f_projectile 384 static
|
||||
main.c:1766:6:HAL_TIM_PeriodElapsedCallback 16 static
|
||||
main.c:1783:6:Error_Handler 4 static,ignoring_inline_asm
|
||||
main.c:185:5:main 280 static
|
||||
main.c:360:6:SystemClock_Config 216 static
|
||||
main.c:436:13:MX_ADC1_Init 24 static
|
||||
main.c:486:13:MX_ADC3_Init 24 static
|
||||
main.c:536:13:MX_CRC_Init 8 static
|
||||
main.c:567:13:MX_DAC_Init 16 static
|
||||
main.c:605:13:MX_DMA2D_Init 8 static
|
||||
main.c:642:13:MX_I2C1_Init 8 static
|
||||
main.c:688:13:MX_I2C3_Init 8 static
|
||||
main.c:734:13:MX_LTDC_Init 64 static
|
||||
main.c:796:13:MX_RNG_Init 8 static
|
||||
main.c:822:13:MX_RTC_Init 80 static
|
||||
main.c:914:13:MX_SPI2_Init 8 static
|
||||
main.c:954:13:MX_TIM1_Init 40 static
|
||||
main.c:1001:13:MX_TIM2_Init 40 static
|
||||
main.c:1046:13:MX_TIM3_Init 88 static
|
||||
main.c:1112:13:MX_TIM5_Init 40 static
|
||||
main.c:1157:13:MX_TIM8_Init 112 static
|
||||
main.c:1236:13:MX_UART7_Init 8 static
|
||||
main.c:1271:13:MX_USART1_UART_Init 8 static
|
||||
main.c:1306:13:MX_USART6_UART_Init 8 static
|
||||
main.c:1337:13:MX_FMC_Init 40 static
|
||||
main.c:1388:13:MX_GPIO_Init 72 static
|
||||
main.c:1565:5:envoie_score 16 static
|
||||
main.c:1581:6:f_GameMaster 32 static
|
||||
main.c:1628:6:f_Joueur_1 80 static
|
||||
main.c:1699:6:f_block_enemie 1016 static
|
||||
main.c:1752:6:f_projectile 384 static
|
||||
main.c:1842:6:HAL_TIM_PeriodElapsedCallback 16 static
|
||||
main.c:1859:6:Error_Handler 4 static,ignoring_inline_asm
|
||||
|
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue