Refactor de la fonction projectile
This commit is contained in:
parent
d4f6bce355
commit
d7b3df85d7
2 changed files with 46 additions and 19 deletions
|
@ -114,12 +114,18 @@ void f_projectile(void const * argument);
|
||||||
/* Private user code ---------------------------------------------------------*/
|
/* Private user code ---------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN 0 */
|
/* USER CODE BEGIN 0 */
|
||||||
|
|
||||||
|
const uint16_t joueur_width = 20;
|
||||||
|
const uint16_t joueur_height = 20;
|
||||||
|
|
||||||
|
const uint16_t monstre_width = 20;
|
||||||
|
const uint16_t monstre_height = 20;
|
||||||
|
|
||||||
struct Missile
|
struct Missile
|
||||||
{
|
{
|
||||||
uint16_t x;
|
uint16_t x;
|
||||||
uint16_t y;
|
uint16_t y;
|
||||||
uint8_t dx;
|
int8_t dx;
|
||||||
uint8_t dy;
|
int8_t dy;
|
||||||
uint8_t equipe;
|
uint8_t equipe;
|
||||||
uint32_t color;
|
uint32_t color;
|
||||||
uint8_t damage;
|
uint8_t damage;
|
||||||
|
@ -129,12 +135,12 @@ struct Missile
|
||||||
struct Joueur
|
struct Joueur
|
||||||
{
|
{
|
||||||
// uint32_t et pas 16 car fonction d'affichage bitmap (j'en sais pas plus)
|
// uint32_t et pas 16 car fonction d'affichage bitmap (j'en sais pas plus)
|
||||||
uint32_t x;
|
uint32_t x; // Position de l'angle superieur gauche
|
||||||
uint32_t y;
|
uint32_t y; // Position de l'angle superieur gauche
|
||||||
uint8_t dx;
|
int8_t dx; // Vitesse du joueur
|
||||||
uint8_t dy;
|
int8_t dy; // Vitesse du joueur
|
||||||
uint8_t health;
|
uint8_t health; // Vie du joueur
|
||||||
struct Missile missile;
|
struct Missile missile; // Missile lancé par le joueur
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Monster
|
struct Monster
|
||||||
|
@ -1294,10 +1300,10 @@ static void MX_GPIO_Init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 4 */
|
/* USER CODE BEGIN 4 */
|
||||||
int envoie_score( int score){
|
static int envoie_score( int score){
|
||||||
socket
|
socket
|
||||||
socket = udp_new();
|
socket = udp_new();
|
||||||
return 0
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE END 4 */
|
/* USER CODE END 4 */
|
||||||
|
@ -1361,8 +1367,6 @@ void f_Joueur_1(void const * argument)
|
||||||
/* USER CODE BEGIN f_Joueur_1 */
|
/* USER CODE BEGIN f_Joueur_1 */
|
||||||
TickType_t xLastWakeTime;
|
TickType_t xLastWakeTime;
|
||||||
const TickType_t xPeriodeTache = 10;
|
const TickType_t xPeriodeTache = 10;
|
||||||
uint16_t Width = 20;
|
|
||||||
uint16_t Height = 20;
|
|
||||||
uint32_t joystick_h, joystick_v;
|
uint32_t joystick_h, joystick_v;
|
||||||
uint8_t stop = 1;
|
uint8_t stop = 1;
|
||||||
|
|
||||||
|
@ -1408,15 +1412,15 @@ void f_Joueur_1(void const * argument)
|
||||||
while (HAL_ADC_PollForConversion(&hadc1, 100) != HAL_OK);
|
while (HAL_ADC_PollForConversion(&hadc1, 100) != HAL_OK);
|
||||||
joystick_v = HAL_ADC_GetValue(&hadc1);
|
joystick_v = HAL_ADC_GetValue(&hadc1);
|
||||||
|
|
||||||
if ((joueur.y < LCD_WIDTH- Width - joueur.dy)&&(joystick_h < 1900)) joueur.y += joueur.dy;
|
if ((joueur.y < LCD_WIDTH- joueur_width - joueur.dy)&&(joystick_h < 1900)) joueur.y += joueur.dy;
|
||||||
if ((joueur.y > joueur.dy)&&(joystick_h > 2100)) joueur.y -= joueur.dy;
|
if ((joueur.y > joueur.dy)&&(joystick_h > 2100)) joueur.y -= joueur.dy;
|
||||||
|
|
||||||
if ((joueur.x < LCD_HEIGHT - Height - joueur.dx)&&(joystick_v < 1900)) joueur.x += joueur.dx;
|
if ((joueur.x < LCD_HEIGHT - joueur_height - joueur.dx)&&(joystick_v < 1900)) joueur.x += joueur.dx;
|
||||||
if ((joueur.x > joueur.dx)&&(joystick_v > 2100)) joueur.x -= joueur.dx;
|
if ((joueur.x > joueur.dx)&&(joystick_v > 2100)) joueur.x -= joueur.dx;
|
||||||
|
|
||||||
|
|
||||||
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
|
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
|
||||||
BSP_LCD_FillRect(joueur.x, joueur.y, Width, Height);
|
BSP_LCD_FillRect(joueur.x, joueur.y, joueur_width, joueur_height);
|
||||||
|
|
||||||
if (xQueueReceive(Queue_JHandle, &missile, 0) == pdPASS)
|
if (xQueueReceive(Queue_JHandle, &missile, 0) == pdPASS)
|
||||||
joueur.health = joueur.health - missile.damage;
|
joueur.health = joueur.health - missile.damage;
|
||||||
|
@ -1496,8 +1500,9 @@ 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 = 5000;
|
const TickType_t xPeriodeTache = 5000;
|
||||||
|
const int TAILLE_LISTE_MISSILE = 25;
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
struct Missile liste_missile[20];
|
struct Missile liste_missile[TAILLE_LISTE_MISSILE];
|
||||||
struct Missile missile = {70, 70, 1, 0, 0, LCD_COLOR_WHITE, 1,1};
|
struct Missile missile = {70, 70, 1, 0, 0, LCD_COLOR_WHITE, 1,1};
|
||||||
uint8_t indice = 1;
|
uint8_t indice = 1;
|
||||||
liste_missile[0] = missile;
|
liste_missile[0] = missile;
|
||||||
|
@ -1509,6 +1514,28 @@ void f_projectile(void const * argument)
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
for(int idx_missile = 0; idx_missile < TAILLE_LISTE_MISSILE; idx_missile++){
|
||||||
|
if(liste_missile[idx_missile].valide){
|
||||||
|
new_x = liste_missile[idx_missile].x + liste_missile[idx_missile].dx;
|
||||||
|
new_y = liste_missile[idx_missile].y + liste_missile[idx_missile].dy;
|
||||||
|
if ((new_x<0)|(new_x>LCD_WIDTH)|(new_y<0)|(new_y>LCD_HEIGHT))
|
||||||
|
liste_missile[idx_missile].valide = 0;
|
||||||
|
//TODO e
|
||||||
|
if (liste_missile[idx_missile].equipe == 0)&&(1){//TODO condition de choc avec le joueur
|
||||||
|
xQueueSend(Queue_JHandle, 1, 0);
|
||||||
|
}
|
||||||
|
if (liste_missile[idx_missile].equipe == 1){
|
||||||
|
for (int idx_mechant=0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
//xQueueReceive(Queue_NHandle, &missile, 0);
|
//xQueueReceive(Queue_NHandle, &missile, 0);
|
||||||
//liste_missile[indice++] = missile;
|
//liste_missile[indice++] = missile;
|
||||||
|
|
||||||
|
@ -1566,10 +1593,11 @@ void f_projectile(void const * argument)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
vTaskDelayUntil(&xLastWakeTime, xPeriodeTache);
|
vTaskDelayUntil(&xLastWakeTime, xPeriodeTache);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE END f_projectile */
|
/* USER CODE END f_projectile */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,4 +16,3 @@ Pour indiquer le joueur, on utilise 1 et pour les méchants on utilise 0.
|
||||||
|
|
||||||
Si le game master reçoit un message via FHandle, une des deux entités est morte. Si la variable vaut 0, les méchants sont mort. Si elle vaut 1, le joueur est mort.
|
Si le game master reçoit un message via FHandle, une des deux entités est morte. Si la variable vaut 0, les méchants sont mort. Si elle vaut 1, le joueur est mort.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue