Prise en compte des bords pour les projectiles
This commit is contained in:
parent
9c28bf0677
commit
c829640a12
7 changed files with 51458 additions and 51380 deletions
110
Core/Src/main.c
110
Core/Src/main.c
|
@ -122,7 +122,6 @@ void f_projectile(void const * argument);
|
||||||
|
|
||||||
/* USER CODE BEGIN PFP */
|
/* USER CODE BEGIN PFP */
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END PFP */
|
/* USER CODE END PFP */
|
||||||
|
|
||||||
/* Private user code ---------------------------------------------------------*/
|
/* Private user code ---------------------------------------------------------*/
|
||||||
|
@ -135,8 +134,9 @@ struct Missile
|
||||||
uint8_t dx;
|
uint8_t dx;
|
||||||
uint8_t dy;
|
uint8_t dy;
|
||||||
uint8_t equipe;
|
uint8_t equipe;
|
||||||
char color;
|
uint32_t color;
|
||||||
uint8_t damage;
|
uint8_t damage;
|
||||||
|
uint8_t valide;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Joueur
|
struct Joueur
|
||||||
|
@ -153,6 +153,8 @@ struct Joueur
|
||||||
|
|
||||||
struct Joueur joueur = {10, 10, 1, 1, 3};
|
struct Joueur joueur = {10, 10, 1, 1, 3};
|
||||||
|
|
||||||
|
uint32_t LCD_COLOR_BACKGROUND = LCD_COLOR_BLACK;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
@ -171,6 +173,7 @@ int main(void)
|
||||||
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
|
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
|
||||||
/* MCU Configuration--------------------------------------------------------*/
|
/* MCU Configuration--------------------------------------------------------*/
|
||||||
|
@ -218,10 +221,10 @@ int main(void)
|
||||||
LCD_FB_START_ADDRESS + BSP_LCD_GetXSize() * BSP_LCD_GetYSize() * 4);
|
LCD_FB_START_ADDRESS + BSP_LCD_GetXSize() * BSP_LCD_GetYSize() * 4);
|
||||||
BSP_LCD_DisplayOn();
|
BSP_LCD_DisplayOn();
|
||||||
BSP_LCD_SelectLayer(1);
|
BSP_LCD_SelectLayer(1);
|
||||||
BSP_LCD_Clear(LCD_COLOR_LIGHTGREEN);
|
BSP_LCD_Clear(LCD_COLOR_BLACK);
|
||||||
BSP_LCD_SetFont(&Font12);
|
BSP_LCD_SetFont(&Font12);
|
||||||
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
|
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
|
||||||
BSP_LCD_SetBackColor(LCD_COLOR_LIGHTGREEN);
|
BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
|
||||||
|
|
||||||
BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
|
BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
|
||||||
|
|
||||||
|
@ -1606,28 +1609,33 @@ void f_Joueur_1(void const * argument)
|
||||||
|
|
||||||
HAL_ADC_Start(&hadc1);
|
HAL_ADC_Start(&hadc1);
|
||||||
|
|
||||||
|
// Paramètre de l'écran pour la reprouductibilité
|
||||||
|
|
||||||
|
uint32_t LCD_HEIGHT = BSP_LCD_GetXSize();
|
||||||
|
uint32_t LCD_WIDTH = BSP_LCD_GetYSize();
|
||||||
|
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
|
||||||
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
|
|
||||||
|
BSP_LCD_SetTextColor(LCD_COLOR_BACKGROUND);
|
||||||
BSP_LCD_FillRect(joueur.x, joueur.y, Width, Height);
|
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);
|
// while (HAL_ADC_PollForConversion(&hadc3, 100) != HAL_OK);
|
||||||
joystick_v = HAL_ADC_GetValue(&hadc3);
|
// joystick_v = HAL_ADC_GetValue(&hadc3);
|
||||||
while (HAL_ADC_PollForConversion(&hadc1, 100) != HAL_OK);
|
// while (HAL_ADC_PollForConversion(&hadc1, 100) != HAL_OK);
|
||||||
joystick_h = HAL_ADC_GetValue(&hadc1);
|
// joystick_h = HAL_ADC_GetValue(&hadc1);
|
||||||
|
|
||||||
if ((joueur.y < 27424- Width - joueur.dy)&&(joystick_h < 1900)) joueur.y += joueur.dy;
|
if ((joueur.y < LCD_HEIGHT- Width - joueur.dy)&&(joystick_h < 1900)) joueur.y += joueur.dy;
|
||||||
if ((joueur.y > Width + joueur.dy)&&(joystick_h > 2100)) joueur.y -= joueur.dy;
|
if ((joueur.y > Width + joueur.dy)&&(joystick_h > 2100)) joueur.y -= joueur.dy;
|
||||||
|
|
||||||
if ((joueur.x > Height + joueur.dx)&&(joystick_v < 1900)) joueur.x += joueur.dx;
|
if ((joueur.x > LCD_WIDTH + joueur.dx)&&(joystick_v < 1900)) joueur.x += joueur.dx;
|
||||||
if ((joueur.x < 480-Height - joueur.dx)&&(joystick_v > 2100)) joueur.x -= joueur.dx;
|
if ((joueur.x < 480-Height - joueur.dx)&&(joystick_v > 2100)) joueur.x -= joueur.dx;
|
||||||
|
|
||||||
|
|
||||||
BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
|
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
|
||||||
BSP_LCD_FillRect(joueur.x, joueur.y, Width, Height);
|
BSP_LCD_FillRect(joueur.x, joueur.y, Width, Height);
|
||||||
|
|
||||||
if (xQueueReceive(Queue_JHandle, &missile, 0) == pdPASS)
|
if (xQueueReceive(Queue_JHandle, &missile, 0) == pdPASS)
|
||||||
|
@ -1636,8 +1644,8 @@ void f_Joueur_1(void const * argument)
|
||||||
if (joueur.health == 0)xQueueSend(Queue_FHandle,&stop,0);
|
if (joueur.health == 0)xQueueSend(Queue_FHandle,&stop,0);
|
||||||
|
|
||||||
// TODO La condition sur une entrée analogique pour envoyer un missile
|
// TODO La condition sur une entrée analogique pour envoyer un missile
|
||||||
struct Missile missile = {joueur.x, joueur.y,joueur.missile.dx, joueur.missile.dy, 1, joueur.missile.color, joueur.missile.damage};
|
// struct Missile missile = {joueur.x, joueur.y,joueur.missile.dx, joueur.missile.dy, 1, joueur.missile.color, joueur.missile.damage};
|
||||||
xQueueSend(Queue_NHandle,&missile,0);
|
// xQueueSend(Queue_NHandle,&missile,0);
|
||||||
vTaskDelayUntil(&xLastWakeTime, xPeriodeTache);
|
vTaskDelayUntil(&xLastWakeTime, xPeriodeTache);
|
||||||
}
|
}
|
||||||
/* USER CODE END f_Joueur_1 */
|
/* USER CODE END f_Joueur_1 */
|
||||||
|
@ -1674,29 +1682,75 @@ void f_projectile(void const * argument)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN f_projectile */
|
/* USER CODE BEGIN f_projectile */
|
||||||
TickType_t xLastWakeTime;
|
TickType_t xLastWakeTime;
|
||||||
const TickType_t xPeriodeTache = 10;
|
const TickType_t xPeriodeTache = 5000;
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
struct Missile liste_missile[50];
|
struct Missile liste_missile[20];
|
||||||
struct Missile missile;
|
struct Missile missile = {70, 70, 0, 1, 0, LCD_COLOR_WHITE, 1,1};
|
||||||
uint8_t indice = 0;
|
uint8_t indice = 1;
|
||||||
|
liste_missile[0] = missile;
|
||||||
|
|
||||||
|
// Paramètre de l'écran pour la reprouductibilité
|
||||||
|
|
||||||
|
uint32_t LCD_HEIGHT = 200; //BSP_LCD_GetXSize();
|
||||||
|
uint32_t LCD_WIDTH = 200; //BSP_LCD_GetYSize();
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
xQueueReceive(Queue_NHandle, &missile, 0);
|
//xQueueReceive(Queue_NHandle, &missile, 0);
|
||||||
liste_missile[indice++] = missile;
|
//liste_missile[indice++] = missile;
|
||||||
for (int i=0;i<= indice;i++)
|
|
||||||
|
for (int i=0;i< indice;i++)
|
||||||
{
|
{
|
||||||
liste_missile[i].x = liste_missile[i].dx + liste_missile[i].x;
|
|
||||||
liste_missile[i].y = liste_missile[i].dy + liste_missile[i].y;
|
// Si le missile n'est pas sur un bord
|
||||||
if ((liste_missile[i].x == joueur.x)&&(liste_missile[i].y == joueur.y))
|
if (liste_missile[i].valide == 1)
|
||||||
{
|
{
|
||||||
xQueueSend(Queue_JHandle, &liste_missile+indice,0);
|
// Si le missile appartient au joueur :
|
||||||
// TODO Une petite animation d'explosion ?
|
if (liste_missile[i].equipe == 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
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))
|
||||||
|
{
|
||||||
|
BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, LCD_COLOR_BACKGROUND);
|
||||||
|
liste_missile[i].x = liste_missile[i].x - liste_missile[i].dx ;
|
||||||
|
liste_missile[i].y = liste_missile[i].y - liste_missile[i].dy;
|
||||||
|
BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, liste_missile[i].color);
|
||||||
|
}
|
||||||
|
//TODO test sur tous les ennemis
|
||||||
|
else
|
||||||
|
{
|
||||||
|
liste_missile[i].valide = 0;
|
||||||
|
BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, LCD_COLOR_BACKGROUND);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Si le missile appartient aux ennemis
|
||||||
|
else if (liste_missile[i].equipe == 1)
|
||||||
|
{
|
||||||
|
if ((liste_missile[i].x == joueur.x)&&(liste_missile[i].y == joueur.y))
|
||||||
|
{
|
||||||
|
xQueueSend(Queue_JHandle, &liste_missile+indice,0);
|
||||||
|
liste_missile[i].valide = 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))
|
||||||
|
{
|
||||||
|
BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, LCD_COLOR_BACKGROUND);
|
||||||
|
liste_missile[i].x = liste_missile[i].x + liste_missile[i].dx ;
|
||||||
|
liste_missile[i].y = liste_missile[i].y + liste_missile[i].dy;
|
||||||
|
BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, liste_missile[i].color);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
liste_missile[i].valide = 0;
|
||||||
|
BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, LCD_COLOR_BACKGROUND);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
vTaskDelayUntil(&xLastWakeTime, xPeriodeTache);
|
||||||
|
|
||||||
|
|
||||||
vTaskDelayUntil(&xLastWakeTime, xPeriodeTache);
|
|
||||||
}
|
}
|
||||||
/* USER CODE END f_projectile */
|
/* USER CODE END f_projectile */
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -1,30 +1,30 @@
|
||||||
main.c:164:5:main 280 static
|
main.c:166:5:main 280 static
|
||||||
main.c:338:6:SystemClock_Config 216 static
|
main.c:341:6:SystemClock_Config 216 static
|
||||||
main.c:414:13:MX_ADC1_Init 24 static
|
main.c:417:13:MX_ADC1_Init 24 static
|
||||||
main.c:464:13:MX_ADC3_Init 24 static
|
main.c:467:13:MX_ADC3_Init 24 static
|
||||||
main.c:514:13:MX_CRC_Init 8 static
|
main.c:517:13:MX_CRC_Init 8 static
|
||||||
main.c:545:13:MX_DAC_Init 16 static
|
main.c:548:13:MX_DAC_Init 16 static
|
||||||
main.c:583:13:MX_DMA2D_Init 8 static
|
main.c:586:13:MX_DMA2D_Init 8 static
|
||||||
main.c:620:13:MX_I2C1_Init 8 static
|
main.c:623:13:MX_I2C1_Init 8 static
|
||||||
main.c:666:13:MX_I2C3_Init 8 static
|
main.c:669:13:MX_I2C3_Init 8 static
|
||||||
main.c:712:13:MX_LTDC_Init 64 static
|
main.c:715:13:MX_LTDC_Init 64 static
|
||||||
main.c:774:13:MX_RNG_Init 8 static
|
main.c:777:13:MX_RNG_Init 8 static
|
||||||
main.c:800:13:MX_RTC_Init 80 static
|
main.c:803:13:MX_RTC_Init 80 static
|
||||||
main.c:892:13:MX_SPI2_Init 8 static
|
main.c:895:13:MX_SPI2_Init 8 static
|
||||||
main.c:932:13:MX_TIM1_Init 40 static
|
main.c:935:13:MX_TIM1_Init 40 static
|
||||||
main.c:979:13:MX_TIM2_Init 40 static
|
main.c:982:13:MX_TIM2_Init 40 static
|
||||||
main.c:1024:13:MX_TIM3_Init 88 static
|
main.c:1027:13:MX_TIM3_Init 88 static
|
||||||
main.c:1090:13:MX_TIM5_Init 40 static
|
main.c:1093:13:MX_TIM5_Init 40 static
|
||||||
main.c:1135:13:MX_TIM8_Init 112 static
|
main.c:1138:13:MX_TIM8_Init 112 static
|
||||||
main.c:1214:13:MX_UART7_Init 8 static
|
main.c:1217:13:MX_UART7_Init 8 static
|
||||||
main.c:1249:13:MX_USART1_UART_Init 8 static
|
main.c:1252:13:MX_USART1_UART_Init 8 static
|
||||||
main.c:1284:13:MX_USART6_UART_Init 8 static
|
main.c:1287:13:MX_USART6_UART_Init 8 static
|
||||||
main.c:1315:13:MX_FMC_Init 40 static
|
main.c:1318:13:MX_FMC_Init 40 static
|
||||||
main.c:1366:13:MX_GPIO_Init 72 static
|
main.c:1369:13:MX_GPIO_Init 72 static
|
||||||
main.c:1543:5:envoie_score 16 static
|
main.c:1546:5:envoie_score 16 static
|
||||||
main.c:1559:6:f_GameMaster 24 static
|
main.c:1562:6:f_GameMaster 24 static
|
||||||
main.c:1587:6:f_Joueur_1 80 static
|
main.c:1590:6:f_Joueur_1 80 static
|
||||||
main.c:1653:6:f_block_enemie 24 static
|
main.c:1661:6:f_block_enemie 24 static
|
||||||
main.c:1673:6:f_projectile 544 static
|
main.c:1681:6:f_projectile 384 static
|
||||||
main.c:1712:6:HAL_TIM_PeriodElapsedCallback 16 static
|
main.c:1766:6:HAL_TIM_PeriodElapsedCallback 16 static
|
||||||
main.c:1729:6:Error_Handler 4 static,ignoring_inline_asm
|
main.c:1783: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