1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "enemy.h"
#include "projectile.h"
#include "graphic.h"
#include "robot.h"
#include "constante.h"
//modele de la structule PROJECTILE
struct projectile
{
float x_projectile;
float y_projectile;
float vitesse;
float delta_phi;
PROJECTILE* projectile_suivant;
};
void projectile_collision(PROJECTILE** tete_projectile_robot, ENEMY** tete_enemy)
{
PROJECTILE* pjte_compareur = *tete_projectile_robot;
while(pjte_compareur != NULL)
{
ENEMY* enemy_courant = *tete_enemy;
PROJECTILE* pjte_courant = pjte_compareur->projectile_suivant;
//le pjte_compareur compare sa position avec celle des autres projectiles
while(pjte_courant != NULL)
{
if(abs(pjte_compareur->x_projectile - pjte_courant->x_projectile) < DELTA_X
&&
abs(pjte_compareur->y_projectile - pjte_courant->y_projectile) < DELTA_Y)
{
projectile_supprimer(tete_projectile_robot, pjte_compareur );
projectile_supprimer(tete_projectile_robot, pjte_courant);
}
pjte_courant = pjte_courant->projectile_suivant;
}
//le pjte_compareur compare sa position avec celle des enemies
while(enemy_courant != NULL)
{
if(pow(pjte_compareur->x_projectile - enemy_courant->x_enemy, 2)
+
pow(pjte_compareur->y_projectile - enemy_courant->y_enemy, 2)
<
pow(R_ENEMY, 2))
{
projectile_supprimer(tete_projectile_robot, pjte_compareur);
enemy_supprimer(tete_enemy, enemy_courant);
}
enemy_courant = enemy_courant->enemy_suivant;
}
pjte_compareur = pjte_compareur->projectile_suivant;
}
} |