xxxxxxxxxx
343
/* Les variables d'initialisation */
// Stocke le nombre d'éléments
let nombre;
// Tableau stocke la coordonée x des fantômes
let tableau_position_x = [];
// Tableau qui stocke la coordonée y des fantômes
let tableau_position_y = [];
// Tableau qui stocke la largeur des fantômes
let largeur = [];
// Tableau qui stocke la hauteur des fantômes
let hauteur = [];
// couleur qui gère le corps des fantômes [tête + bas du corps]
let couleur = [];
// Tableau qui stocke la couleur des yeux
let couleur_yeux = [];
// La vitesse des éléments
let vitesse = 10;
// Stocke la position du Pac Man
let pac_Man_Position_X;
let pac_Man_Position_Y;
// Stocke la taille du Pac Man
let pac_Man_Largeur;
let pac_Man_Hauteur;
// Etat de la taille des yeux du Pac Man
let pac_Man_Hauteur_yeux;
// Stocke la couleur du Pac Man
let pac_Man_Couleur_Yeux;
// -----------------------------------------------------------------
// Fonction qui permet de dessiner les fantômes
const DessinerFantome = (
position_x,
position_y,
largeur,
hauteur,
couleur_yeux,
couleur
) => {
// Couleur de la tête
fill(couleur);
// Forme de la tête
ellipse(position_x, position_y, largeur, hauteur);
// Forme du corps
triangle(
position_x,
position_y + hauteur,
position_x - largeur / 2,
position_y,
position_x + largeur / 2,
position_y
);
// Couleur des yeux
fill(couleur_yeux);
// Oeil gauche
ellipse(position_x - 8, position_y, 8, 10);
// Oeil droit
ellipse(position_x + 8, position_y, 8, 10);
// Couleur de la bouche
fill(0x000000);
// Bouche
ellipse(position_x, position_y + 10, 5, 10);
};
// -----------------------------------------------------------------
// Fonction qui construit le Pac Man
const PacMan = (position_X, position_Y, Largeur, Hauteur, Couleur) => {
// La forme de la tête
fill("yellow");
ellipse(position_X, position_Y, Largeur, Hauteur);
/* Le bas du corps en partant de la gauche */
// 1er pli
fill("yellow");
ellipse(position_X - 12, position_Y + 7, Largeur - 20, Hauteur + 5);
// 2nd pli
fill("yellow");
ellipse(position_X, position_Y + 7, Largeur - 20, Hauteur + 5);
// 3e pli
fill("yellow");
ellipse(position_X + 12, position_Y + 7, Largeur - 20, Hauteur + 5);
/* Les yeux */
// Oeil gauche
fill(Couleur);
ellipse(
position_X - 6,
position_Y + 4,
Largeur - 30,
Hauteur - pac_Man_Hauteur_Yeux
);
// Oeil droit
fill(Couleur);
ellipse(
position_X + 6,
position_Y + 4,
Largeur - 30,
Hauteur - pac_Man_Hauteur_Yeux
);
};
// -----------------------------------------------------------------
function setup() {
createCanvas(800, 800);
// Change le taux de rafraîchissement
frameRate(24);
// Change l'origine de translation des rectangles
rectMode(CENTER);
// Change l'origine de translation des ellipses
ellipseMode(CENTER);
// Enleve les contours des éléments
noStroke();
// Le nombre de fantôme qui sera afficher dans le Canvas
nombre = 10;
// Initialisation de tableau des coordonnées [x, y]
for (let iteration = 0; iteration < nombre; iteration++) {
// Tableau des coordonnées x avec des valeurs aléatoires
tableau_position_x[iteration] = random(0, 800);
// Tableau des coordonnées y avec des valeurs aléatoires
tableau_position_y[iteration] = random(0, 800);
// Valeurs utiliser pour la largeur de l'ellipse
largeur[iteration] = random(20, 80);
// Valeurs utiliser pour la hauteur de l'ellipse
hauteur[iteration] = random(20, 80);
couleur_yeux[iteration] = 0;
// couleur qui gère le corps des fantômes [tête + bas du corps]
couleur[iteration] = 255;
}
/* Les positions du Pac Man */
pac_Man_Position_X = 400;
pac_Man_Position_Y = 400;
/* La largeur taille du Pac Man */
pac_Man_Largeur = 35;
pac_Man_Hauteur = 20;
// Pac Man ferme les yeux
pac_Man_Hauteur_Yeux = 19;
pac_Man_Couleur_Yeux = 0;
}
// -----------------------------------------------------------------
function draw() {
// Redessiné la couleur de fond du Canvas à chaque changement
background(0x000000);
// Vérification de l'évènemment si la souris est pressé
if (mouseIsPressed) {
// La boucle qui gère la taille d'agrandissement des fantômes
for (let iteration = 0; iteration < nombre; iteration++) {
largeur[iteration] += 1;
}
// La boucle qui gère les intéraction des fantômes
for (let iteration = 0; iteration < nombre; iteration++) {
// Change aléatoirement la couleur des yeux quand la souris est pressé
couleur_yeux[iteration] = color(
random(0, 255),
random(0, 255),
random(0, 255)
);
// Faire grossir les fantômes quand la souris est pressé
largeur[iteration]++;
}
// Pac Man en colère
pac_Man_Couleur_Yeux = color(255, 0, 0);
} else {
// La boucle qui gère les intéraction des fantômes
for (let iteration = 0; iteration < nombre; iteration++) {
// Change aléatoirement la couleur des yeux quand la souris est pressé
couleur_yeux[iteration] = color(0);
}
// Pac Man en colère
pac_Man_Couleur_Yeux = color(0);
}
// ---------------------------------------------------------------
/* Gestion des évènemments du clavier */
// Vérifie si une touche est pressé et si la touche est égale au code de la flèche gauche
if (keyIsPressed === true && keyCode === 37) {
// La boucle qui gère le déplacement des fantômes vers la gauche
for (let iteration = 0; iteration < nombre; iteration++) {
tableau_position_x[iteration] -= vitesse;
// Vérification de la position des fantômes et s'ils dépassent le canvas ils reviennent du côté inverse
if (tableau_position_x[iteration] <= 0) {
tableau_position_x[iteration] = width;
}
}
}
// Vérifie si une touche est pressé et si la touche est égale au code de la flèche droite
if (keyIsPressed === true && keyCode === 39) {
// La boucle qui gère le déplacement des fantômes vers la droite
for (let iteration = 0; iteration < nombre; iteration++) {
tableau_position_x[iteration] += vitesse;
// Vérification de la position des fantômes et s'ils dépassent le canvas ils reviennent du côté inverse
if (tableau_position_x[iteration] > width) {
tableau_position_x[iteration] = 0;
}
}
}
// Vérifie si une touche est pressé et si la touche est égale au code de la flèche du haut
if (keyIsPressed === true && keyCode === 38) {
// La boucle qui gère le déplacement des fantômes vers le haut
for (let iteration = 0; iteration < nombre; iteration++) {
tableau_position_y[iteration] += vitesse;
// Vérification de la position des fantômes et s'ils dépassent le canvas ils reviennent du côté inverse
if (tableau_position_y[iteration] > 800) {
tableau_position_y[iteration] = 0;
}
}
}
// Vérifie si une touche est pressé et si la touche est égale au code de la flèche du bas
if (keyIsPressed === true && keyCode === 40) {
// La boucle qui gère le déplacement des fantômes vers le bas
for (let iteration = 0; iteration < nombre; iteration++) {
tableau_position_y[iteration] -= vitesse;
// Vérification de la position des fantômes et s'ils dépassent le canvas ils reviennent du côté inverse
if (tableau_position_y[iteration] <= 0) {
tableau_position_y[iteration] = height;
}
}
}
// ---------------------------------------------------------------
/* Gestion des évènemments au changement de position de la souris */
// Au changement de position de la souris
if ((mouseX, mouseY)) {
// Pac Man ouvre les yeux
pac_Man_Hauteur_Yeux = 10;
// Pac Man suit la position de la souris sur X
pac_Man_Position_X = mouseX;
// Pac Man suit la position de la souris sur Y
pac_Man_Position_Y = mouseY;
// Dessine un trait jaune qui suit la souris
stroke("yellow");
// Dessine un trait qui suit la souris
line(pmouseX, pmouseY, mouseX, mouseY);
}
// Enlève le trait jaune qui suit la souris
noStroke();
for (let iteration = 0; iteration < nombre; iteration++) {
/* Quand les fantômes auront une taille supérieur ou égale à 100
* Modifie la couleur du corps des fantômes en "noir"
* Modifie la couleur des yeux des fantômes
*/
// Vérification de la taille des fantômes pour qu'ils ne dépassent pas la taille maximale choisit
if (largeur[iteration] >= 100) {
/* Changer la couleur des fantômes lorsque leur taille est supérieur ou égale à 100 */
// couleur qui gère le corps des fantômes [tête + bas du corps]
couleur[iteration] = 0x000000;
couleur_yeux[iteration] = 0x000000;
}
// Appellation de la fonction DessinerFantome()
DessinerFantome(
tableau_position_x[iteration],
tableau_position_y[iteration],
largeur[iteration],
hauteur[iteration],
couleur_yeux[iteration],
// couleur qui gère le corps des fantômes [tête + bas du corps]
couleur[iteration]
);
}
// Appel de la fonction PacMan()
PacMan(
pac_Man_Position_X,
pac_Man_Position_Y,
pac_Man_Largeur,
pac_Man_Hauteur,
pac_Man_Couleur_Yeux
);
}