Avancement du code Processing au 22/01/2015 :
/* Le programme illustre une voiture qui apparaît aléatoirement dans la fenêtre avec une onde qui suit jusqu'à t+50 pixel devant elle.
Des obstacles apparaîssent aléatoirement devant la voiture. A l'aide de l'onde,la voiture va esquiver les obstacles qui apparaissent devant elle */
// DECLARATION des variables
float xond=100; //Position sur axes des abcisses de l'onde
float xvoit=70; //Position sur axe des abscisses de la voiture : x de 0 à 70 = accélération de la voiture
float yvoit= random(50,100); //Position random sur axe ordonnée de la voiture
float yond=yvoit; //Position axe ordonnée onde = ordonnée voiture
//Tailles et placement des obstacles
//OBSTACLE 1
float lobs1 = random(8,40); //Largeur de l'obstacle n°1
float xobs1 = random(200,595); //Random abscisses obstacle n°1
float yobs1 = random(40,100); //Random ordonnée obstacle n°1
//OBSTACLE 2
float lobs2 = random(8,40); //L. de l'obstacle n°2
float xobs2 = random(200,595); //random abscisses obstacle n°2
float yobs2 = random(40,100); //random ordonnées obstacle n°2
//OBSTACLE 2
float lobs3 = random(8,40); //L. de l'obstacle n°3
float xobs3 = random(200,595); //random abscisses obstacle n°3
float yobs3 = random(40,100); //random ordonnées obstacle n°3
//Boolean de pour les deplacements
boolean onde=true; //boolean pour le mouvement de l'aller-retour onde
boolean obs1b=false; //boolean pour l'esquive par le bas de l'obstacle 1 lorsque (yvoit+10 >= yobs1+lobs1/2)
boolean obs1h=false; //boolean pour l'esquive par le haut de l'obstacle 1 lorsque (yvoit+10 <= yobs1+lobs1/2)
boolean obs2b=false; //boolean pour l'esquive par le bas de l'obstacle 1 lorsque (yvoit+10 >= yobs2+lobs2/2)
boolean obs2h=false; //boolean pour l'esquive par le haut de l'obstacle 1 lorsque (yvoit+10 <= yobs2+lobs2/2)
boolean obs3b=false; //boolean pour l'esquive par le bas de l'obstacle 1 lorsque (yvoit+10 >= yobs3+lobs3/2)
boolean obs3h=false; //boolean pour l'esquive par le haut de l'obstacle 1 lorsque (yvoit+10 <= yobs3+lobs3/2)
void setup() {
size (600,600);
}
void draw() {
background (#FADC2D); //couleur de fond
//définition des tailles des différents élèments
voiture(); //classe qui représente les paramètres de la voiture
rect(xond+2,yond,1,20); //onde x+2 pour décalage bug par rapport a la voiture. le y=milieu voiture
rect(xobs1,yobs1,1,lobs1); //obstacle n°1
rect(xobs2,yobs2,1,lobs2); //obstacle n°2
rect(xobs3,yobs3,1,lobs3); //obstacle n°3
deplacementonde(); //classe qui représente le déplacement de l'onde
//esquive de l'osbtacle 1
mvtobs1b(); //Mouvement de la voiture si l'obstacle 1 se dresse devant elle et si le plus court chemin pour l'esquiver passe par le bas de cet obstacle
mvtobs1h(); //Mouvement de la voiture si l'obstacle 1 se dresse devant elle et si le plus court chemin pour l'esquiver passe par le haut de cet obstacle
//esquives de l'obstacle 2
mvtobs2b(); //Mouvement de la voiture si l'obstacle 2 se dresse devant elle et si le plus court chemin pour l'esquiver passe par le bas de cet obstacle
mvtobs2h(); //Mouvement de la voiture si l'obstacle 2 se dresse devant elle et si le plus court chemin pour l'esquiver passe par le haut de cet obstacle
//esquives de l'obstacle 3
mvtobs3b(); //Mouvement de la voiture si l'obstacle 3 se dresse devant elle et si le plus court chemin pour l'esquiver passe par le bas de cet obstacle
mvtobs3h(); //Mouvement de la voiture si l'obstacle 3 se dresse devant elle et si le plus court chemin pour l'esquiver passe par le haut de cet obstacle
}
//FIN DU DRAW
//différentes CLASS pour l'organisation du programme
//void des paramètres de la voiture
void voiture() {
rect(xvoit,yvoit,-30,20); //tailles voiture
xvoit=xvoit+1; //vitesse voiture
}
//void du déplacement de l'onde
/* PARAMETRAGE ONDE ALLEZ RETOUR
Si le boolean onde==true ET SI xond est inférieur à sa distance max(xvoit+50), alors onde avance
SINON onde == false et si onde == false et tant que xonde est supérieur au capot de la voiture ALORS onde recule
SINON onde == true
*/
void deplacementonde() {
if(onde==true){
if(xond
xond=xond+4;
}else{
onde=false;
}
}else{
if(xond>xvoit){
xond=xond-2;
}else{
onde=true;
}
}
}
/* DIFFERENTS VOID D'ESQUIVES D'OBSTACLES
Si la voiture se situe dans la moitié inférieure de la taille de l'osbtacle , alors la voiture esquive l'obstacle par le haut
Si la voiture se situe dans la moitié supérieur de la taille de l'osbtacle , alors la voiture esquive l'obstacle par le bas
*/
//void mvtobs1b mouvement d'esquive par le bas de l'obstacle 1
void mvtobs1b() {
if((xond >= xobs1) && (yvoit+10 >= yobs1+lobs1/2) && (yvoit+10 <= yobs1+lobs1+10)) /*si le x de l'onde dépasse ou est égal au x d'une obstacle , ET SI, Le capot de la voiture se situe sur la moitié supérieure de
l'obstacle, ET SI, le capot de la voiture se situe sous la longeur de l'obstacle alors : */
{
obs1b=true; //boolean de l'esquive d'obstacle devient vrai
if(obs1b==true) //si ce boolean est vrai alors :
{
yvoit=yvoit+1; //la voiture se déplace vers le bas de la fenetre
yond=yond+1; //l'onde qui suit la voiture se déplace aussi vers le bas de la fenetre
}
if(xvoit>xobs1) //si xvoit dépasse xobs alors la voiture cesse de descendre vers le bas : la voiture à esquivé l'obstacle
{
obs1b=false; //le boolean devient faux
}
}
}
//void mvtobs1h mouvement d'esquive par le haut de l'obstacle 1
void mvtobs1h() {
if((xond >= xobs1) && (yvoit+10 <= yobs1+lobs1/2) && (yvoit+10 >= yobs1-10))
{
obs1h=true;
if(obs1h==true)
{
yvoit=yvoit-1;
yond=yond-1;
}
if(xvoit>xobs1)
{
obs1h=false;
}
}
}
//void mvtobs2b mouvement d'esquive par le bas de l'obstacle 2
void mvtobs2b() {
if((xond >= xobs2) && (yvoit+10 >= yobs2+lobs2/2) && (yvoit+10 <= yobs2+lobs2+10))
{
obs2b=true;
if(obs2b==true)
{
yvoit=yvoit+1;
yond=yond+1;
}
if(xvoit>xobs2)
{
obs2b=false;
}
}
}
//void mvtobs2h mouvement d'esquive par le haut de l'obstacle 2
void mvtobs2h() {
if((xond >= xobs2) && (yvoit+10 <= yobs2+lobs2/2) && (yvoit+10 >= yobs2-10))
{
obs2h=true;
if(obs2h==true)
{
yvoit=yvoit-1;
yond=yond-1;
}
if(xvoit>xobs2)
{
obs2h=false;
}
}
}
//void mvtobs3b mouvement d'esquive par le bas de l'obstacle 3
void mvtobs3b() {
if((xond >= xobs3) && (yvoit+10 >= yobs3+lobs3/2) && (yvoit+10 <= yobs3+lobs3+10))
{
obs3b=true;
if(obs3b==true)
{
yvoit=yvoit+1;
yond=yond+1;
}
if(xvoit>xobs3)
{
obs3b=false;
}
}
}
//void mvtobs3h mouvement d'esquive par le haut de l'obstacle 3
void mvtobs3h() {
if((xond >= xobs3) && (yvoit+10 <= yobs3+lobs3/2) && (yvoit+10 >= yobs3-10))
{
obs3h=true;
if(obs3h==true)
{
yvoit=yvoit-1;
yond=yond-1;
}
if(xvoit>xobs3)
{
obs3h=false;
}
}
}