Prise en compte des bords pour les projectiles
Problème sur les bords en horizontal positif (x je crois mais je doute de tt actuellement). On utilise BSP_LCD_GetXSize pour les bornes donc ca m'etonne bcp...
This commit is contained in:
parent
9c28bf0677
commit
9619f398a2
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 END PFP */
|
||||
|
||||
/* Private user code ---------------------------------------------------------*/
|
||||
|
@ -135,8 +134,9 @@ struct Missile
|
|||
uint8_t dx;
|
||||
uint8_t dy;
|
||||
uint8_t equipe;
|
||||
char color;
|
||||
uint32_t color;
|
||||
uint8_t damage;
|
||||
uint8_t valide;
|
||||
};
|
||||
|
||||
struct Joueur
|
||||
|
@ -153,6 +153,8 @@ struct Joueur
|
|||
|
||||
struct Joueur joueur = {10, 10, 1, 1, 3};
|
||||
|
||||
uint32_t LCD_COLOR_BACKGROUND = LCD_COLOR_BLACK;
|
||||
|
||||
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
@ -171,6 +173,7 @@ int main(void)
|
|||
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
|
||||
|
||||
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
||||
/* MCU Configuration--------------------------------------------------------*/
|
||||
|
@ -218,10 +221,10 @@ int main(void)
|
|||
LCD_FB_START_ADDRESS + BSP_LCD_GetXSize() * BSP_LCD_GetYSize() * 4);
|
||||
BSP_LCD_DisplayOn();
|
||||
BSP_LCD_SelectLayer(1);
|
||||
BSP_LCD_Clear(LCD_COLOR_LIGHTGREEN);
|
||||
BSP_LCD_Clear(LCD_COLOR_BLACK);
|
||||
BSP_LCD_SetFont(&Font12);
|
||||
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());
|
||||
|
||||
|
@ -1606,28 +1609,33 @@ void f_Joueur_1(void const * argument)
|
|||
|
||||
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 */
|
||||
for (;;)
|
||||
{
|
||||
|
||||
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
|
||||
|
||||
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)
|
||||
while (HAL_ADC_PollForConversion(&hadc3, 100) != HAL_OK);
|
||||
joystick_v = HAL_ADC_GetValue(&hadc3);
|
||||
while (HAL_ADC_PollForConversion(&hadc1, 100) != HAL_OK);
|
||||
joystick_h = HAL_ADC_GetValue(&hadc1);
|
||||
//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);
|
||||
// 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.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;
|
||||
|
||||
|
||||
BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
|
||||
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
|
||||
BSP_LCD_FillRect(joueur.x, joueur.y, Width, Height);
|
||||
|
||||
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);
|
||||
|
||||
// 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};
|
||||
xQueueSend(Queue_NHandle,&missile,0);
|
||||
// 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);
|
||||
vTaskDelayUntil(&xLastWakeTime, xPeriodeTache);
|
||||
}
|
||||
/* USER CODE END f_Joueur_1 */
|
||||
|
@ -1674,29 +1682,75 @@ void f_projectile(void const * argument)
|
|||
{
|
||||
/* USER CODE BEGIN f_projectile */
|
||||
TickType_t xLastWakeTime;
|
||||
const TickType_t xPeriodeTache = 10;
|
||||
const TickType_t xPeriodeTache = 5000;
|
||||
/* Infinite loop */
|
||||
struct Missile liste_missile[50];
|
||||
struct Missile missile;
|
||||
uint8_t indice = 0;
|
||||
struct Missile liste_missile[20];
|
||||
struct Missile missile = {70, 70, 0, 1, 0, LCD_COLOR_WHITE, 1,1};
|
||||
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 (;;)
|
||||
{
|
||||
xQueueReceive(Queue_NHandle, &missile, 0);
|
||||
liste_missile[indice++] = missile;
|
||||
for (int i=0;i<= indice;i++)
|
||||
//xQueueReceive(Queue_NHandle, &missile, 0);
|
||||
//liste_missile[indice++] = missile;
|
||||
|
||||
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;
|
||||
if ((liste_missile[i].x == joueur.x)&&(liste_missile[i].y == joueur.y))
|
||||
|
||||
// Si le missile n'est pas sur un bord
|
||||
if (liste_missile[i].valide == 1)
|
||||
{
|
||||
xQueueSend(Queue_JHandle, &liste_missile+indice,0);
|
||||
// TODO Une petite animation d'explosion ?
|
||||
// Si le missile appartient au joueur :
|
||||
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 */
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -1,30 +1,30 @@
|
|||
main.c:164:5:main 280 static
|
||||
main.c:338:6:SystemClock_Config 216 static
|
||||
main.c:414:13:MX_ADC1_Init 24 static
|
||||
main.c:464:13:MX_ADC3_Init 24 static
|
||||
main.c:514:13:MX_CRC_Init 8 static
|
||||
main.c:545:13:MX_DAC_Init 16 static
|
||||
main.c:583:13:MX_DMA2D_Init 8 static
|
||||
main.c:620:13:MX_I2C1_Init 8 static
|
||||
main.c:666:13:MX_I2C3_Init 8 static
|
||||
main.c:712:13:MX_LTDC_Init 64 static
|
||||
main.c:774:13:MX_RNG_Init 8 static
|
||||
main.c:800:13:MX_RTC_Init 80 static
|
||||
main.c:892:13:MX_SPI2_Init 8 static
|
||||
main.c:932:13:MX_TIM1_Init 40 static
|
||||
main.c:979:13:MX_TIM2_Init 40 static
|
||||
main.c:1024:13:MX_TIM3_Init 88 static
|
||||
main.c:1090:13:MX_TIM5_Init 40 static
|
||||
main.c:1135:13:MX_TIM8_Init 112 static
|
||||
main.c:1214:13:MX_UART7_Init 8 static
|
||||
main.c:1249:13:MX_USART1_UART_Init 8 static
|
||||
main.c:1284:13:MX_USART6_UART_Init 8 static
|
||||
main.c:1315:13:MX_FMC_Init 40 static
|
||||
main.c:1366:13:MX_GPIO_Init 72 static
|
||||
main.c:1543:5:envoie_score 16 static
|
||||
main.c:1559:6:f_GameMaster 24 static
|
||||
main.c:1587:6:f_Joueur_1 80 static
|
||||
main.c:1653:6:f_block_enemie 24 static
|
||||
main.c:1673:6:f_projectile 544 static
|
||||
main.c:1712:6:HAL_TIM_PeriodElapsedCallback 16 static
|
||||
main.c:1729:6:Error_Handler 4 static,ignoring_inline_asm
|
||||
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
|
||||
|
|
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