-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBoid.h
85 lines (71 loc) · 2.49 KB
/
Boid.h
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//
// Created by louis on 25/04/2021.
//
#ifndef FOULOSCOPIE_LOUIS_VOLAT_BOID_H
#define FOULOSCOPIE_LOUIS_VOLAT_BOID_H
#include <vector>
#include <allegro5/allegro_primitives.h>
#include "Vectors.h"
using std::vector;
class Boid {
// Représentation de la position et de l'angle du boid
Vectors vectorPosition;
// Indique la vitesse à laquel se déplace un boid (compris entre 1.5 et 5)
double velocity;
// Représente la taille du boid
int size;
// Représente le champs de vision du boid
int detectionBox;
// Indique la couleur du boid
ALLEGRO_COLOR color{};
public:
/**
* Constructor Boid
* @param startPos indique la position inisial du boid
* @param velocity indique sa vélocité inisial
* @param size indique la taille du boid
* @param detectionBox indique la taille du champs de vision du boid
* @param color indique la couleur du boid
*/
Boid(Vectors startPos, double velocity,int size,int detectionBox, ALLEGRO_COLOR color);
/**
* Methode step
* Permmet de mettre à jour les donnes du boid et d'editer c'est variable
* @param boidsSee Listes de tous les boid vue au tour précédent à l'aide de la methode isSee()
* @param screenWidth taille de la fenêtre horizontal en px
* @param screenHeight taille de la fenêtre vertial en px
*/
void step(vector<Vectors> boidsSee, int screenWidth, int screenHeight);
/**
* Methode drawBoid
* Permet de déssiner le bloid dans alegros tant que le backbuffer et ouvert
*/
void drawBoid();
/**
* Methode isSee
* Permet de savoir si un vecteur de position peut être vue par ce boid
* @param pos position de l'empalcement à détécter
* @return true si il est visible false si il est pas visible
*/
bool isSee(Vectors pos);
/**
* Methode getPositionAndDirection
* Permet de renvoyer la position actuel du boid sur la grille
* @return Le vecteur de position actuel du boid
*/
Vectors getPositionAndDirection();
private:
/**
* Methode changeDirection
* Permet de changer de direction vers un angle definit
* Ajoutera ou elevera de la vélocité en fonction de l'angle choisie
* @param angle
*/
void changeDirection(double angle);
/**
* Methode randomDirectionChange
* Permet de générer une direction alléatoir à partir de la direction actuel
*/
void randomDirectionChange();
};
#endif //FOULOSCOPIE_LOUIS_VOLAT_BOID_H