Carnet de bord

14/12/15

A l'occasion de cette première séance nous définiront les actions et intéraction des objets du jeu entre eux et avec les bords de l'écran de manière à les transformer en lignes de code lors de la phase de programmation.

 

-quand on appuie sur la barre d'espace le vaisseau envoie un missile.

-le vaisseau suit la position de la souris en sur l'axe horizontal (x), et conserve la même position sur l'axe vertical (y).

-quand le vaisseau arrive au bord de l'écran il se stoppe.

-quand un missile touche une cible, le missile disparaît et la cible avec.

-les cibles commencent leur déplacement de gauche à droite et quand elles touchent le bord droit de l'écran, elles descendent d'un cran et se déplace de gauche à droite,et ainsi de suite.

-faire afficher une image de fond lors du lancement de la partie.

-affecter aux cibles une image ou les dessiner sur processing.

-affecter au tireur une image ou la dessiner sur processing.

-envoyer une musique de fond au lancement de la partie.

 

 

11/01/2016

 

Lors de cette séance nous allons poser des questions précises en rapport sur chaque élément du programme et y répondre par la marche à suivre informatiquement parlant, c'est à dire la solution concrète au problème (utilisation de variables, fonction,...).

 

affichage :

-comment afficher un tireur ?:Nous allons enregistrer une image de vaisseau spatial dans le même dossier que le programme et afficher celle-ci grâce aux fonctions Pimage; loadImage ; image.

-comment afficher des cibles?:Nous allons enregistrer une image de monstre dans le même dossier que le sketch et afficher celle-ci grâce aux fonctions Pimage; loadImage ; image                            

-comment afficher un tir ?:On crée un rectangle de faible largeur qui s'affiche lorsqu'on appui sur le clic droit de la souris.On va créer le grâce à la fonction rect .Et on va la faire apparaître grâce au booléen  mousePressed .

-comment afficher une image de fond ? :On prend enregistrer une image dans le même dossier que le programme, et on la met aux dimensions de l'écran avec les  méthode Pimage; loadImage ; image.

 

déplacement : 

-comment déplacer le tireur ?: Nous allons faire en sorte que le tireur soit a la position en x de la souris grâce à la fonctions mouseX. Mais il faut que le tireur ne se déplace qu'horizontalement nous allons alors lui affecter une position en y fixe dans la fonction image.

comment déplacer les cibles? On crée des tableaux de valeurs pour les cibles (int monTableauX[]= new int [60],...) qui leurs affecterons des position et vitesses respectives, puis on leurs affecte des valeurs aléatoire entière comprises entre deux constantes (monTableauX[i]= (int) random(cte,cte) .

 

autres : 

-comment faire stopper le vaisseau lorsqu'il touche un bord de l'écran ?: On le bloque avec une boucle if  mouseX <= ou>= cte, mouseX=cte.

-Comment faire qu'une cible disparaisse au contact du tir?: Si un tir est vrai, et que la cible est dans la zone de tir, la cible est envoyée  hors de hors de l'écran et sa vitesse vaut 0.

-comment lancer une musique de fond ?: On va utiliser la fonction Minim minim ainsi que la fonction Audio AudioPlayer.

-comment afficher un temps imparti ?: on crée un chronomètre et à une date t, si les cibles ne sont pas détruites, le partie est perdue. Utilisaton de if.

 

arrêt : 

-comment afficher gagner ou perdu ?: Utilisation de la fonction text.

-comment arrêter la musique lorsque la partie est terminée ?: On utilise la variable if  ainsi qu'un void stop, lorsque la partie s'arrête on arrête la musique.

-comment arrêter le jeu lorsque le temps est écoulé ? :On utilisera la variable if . A une date t, si les cibles ne sont pas détruite on affiche le message perdu et le tir reste faux.

-comment arrêter le programme lorsque toutes les cibles sont détruites ?: On utilisera la variable if ainsi que la fonction exit.

 

 

   18/01/2016

Lors de cette séance nous avons commencé la programmation de notre jeu.Nous avons dans un premier temps commencé par l'affichage du fond d'écran pour ensuite afficher un rectangle qui fais office de tireur. La principale difficulté de cette séance était que lorsque nous avons créer le void fond, et appelé la fonction dans le void draw, le programme ne marchait pas. Nous avons alors copié le code présent dans le void fond, collé ceci dans le void draw, et supprimé le void fond. En faisant cela, le programme fonctionnait. Nous avons ensuite placé le void fond avant le void tireur, ce qui premis le fonctionnement du programme.                                                                                                                                                            

PImage espace ;
void setup() {
  size(800,600);
  frameRate(100);
  espace=loadImage("espace.jpeg");
}
void draw() {
  fond();
  Tireur();
}
  void fond()
  {
    background(0);
    image(espace,0,0, width,height);
  }

  void Tireur()
  {   fill(#0B37DE);
    rect(mouseX,585,100,10);
  }

 

25/01/2016

Dans cette séance nous avons continué le codage de notre programme.Nous avons réussi a coder le tir, ainsi que le mouvement des cibles. Pour le tir nous pensions créer des ellipses qui, en contact avec la cible, allait la faire disparaître. Après réflexion, nous avons décidé d'opter pour un tir laser.

//variables paramètres de base
int x = 800;
int y = 600;
int z = 20;
int b = 0;
boolean tir = false;
int lowest=0;
int vitesseTir=5;
//variables images
PImage espace ;
//tableaux cibles
int monTableauX [] = new int [60];
int monTableauY [] = new int [60];  
int monTableauR [] = new int [60];
int monTableauV [] = new int [60];

//setup

void setup() {
  size(800,600);
  frameRate(100);
  espace=loadImage("espace.jpeg");
  for (int i=0; i   {
    monTableauX[i] = (int)random(0, 200);
    monTableauY[i] = (int)random(10, 550);
    monTableauR[i] = (int)random(10, 25);
    monTableauV[i] = (int)random(1, 5);
  }
}

//draw
void draw() {
  fond();
  Tireur();
  creationBalles();
  dynamiqueBalles();
  Tir();
}
  void fond()
  {
    background(0);
    image(espace,0,0, width,height);
  }
  void Tireur()
  {   fill(#0B37DE);
    rect(mouseX,585,100,10);
  }
void creationBalles() {
  for (int i=0; i   {
    ellipse(monTableauX[i], monTableauY[i], monTableauR[i], monTableauR[i]);
  }
}
void dynamiqueBalles() {
  lowest =0;
  for (int i=0; i   {
    monTableauX[i] =  monTableauX[i] + monTableauV[i];
    if (monTableauX[i] >790 || monTableauX[i] <1) { // rebond : si > 380 alors -(vitesse) ou si < 1 alors -(-vitesse)
      monTableauV[i] = - monTableauV[i];
    }
  }
}
void Tir()
  {
  if (mousePressed){
    tir= true;
     println("true");
    fill(#F71919);
    rect(mouseX+50,585,3,-120000);
  }
  }

 

01/02/2016

Nos objectifs durant cette séance ont étés de  faire disparaitre les cibles et de créer leur trajet. Malheuresement nous n'avons réussi que un objectif sur les deux qui est le trajet des cibles. Le problème pour la disparition des cibles se situe dans le void dynamiqueCible , mais nous ne l'avons détecté pour le moment.

//variables paramètres de base
int x = 0;
int y = 600;
int z = 15;
boolean tir = false;
int lowest=0;
 
//variables images
PImage espace ;
 
//tableaux cibles
int monTableauX [] = new int [60];
int monTableauY [] = new int [60];  
int monTableauR [] = new int [60];
int monTableauV [] = new int [60];
 
 
//setup
void setup() {
  size(800, 600);
  frameRate(100);
  espace=loadImage("espace.jpeg");
 
  for (int i=0; i
  { 
    monTableauX[i] = (int)random(0, 800);
    monTableauY[i] = (int)random(10, 40);
    monTableauR[i] = (int)random(10, 25);
    monTableauV[i] = (int)random(1, 6);
  }
}
 
 
//draw
void draw() {
  fond();
  Tireur();
  creationBalles(); 
  dynamiqueBalles();
  Tir();
  score();
}
 
void fond()
{
  background(0);
  image(espace, 0, 0, width, height);
}
void Tireur() 
{   
  fill(#0B37DE);
  rect(mouseX, 585, 100, 10);
}
 
 
void dynamiqueBalles()
{
  lowest =0;
  for (int i=0; i
  { 
 
    monTableauX[i] =  monTableauX[i] + monTableauV[i];
    if (monTableauX[i] >790 || monTableauX[i] <1) { // rebond : si > 380 alors -(vitesse) ou si < 1 alors -(-vitesse)
      monTableauV[i] = - monTableauV[i];
      monTableauY[i]= monTableauY[i] +30;
    }
    if (tir==true) {
      if (monTableauX[i] <= x+50 && monTableauX[i] >= x+40  ) {
        monTableauX[i] = -2000;
        monTableauV[i]=0;
    if ( monTableauY[i]>lowest) {
          lowest =  monTableauY[i];  
    }
    }
  }
}}
 
void creationBalles() {
 
  for (int i=0; i
  { 
    ellipse(monTableauX[i], monTableauY[i], monTableauR[i], monTableauR[i]);
  }
}
 
 
void Tir()
{
  if (mousePressed) {
    tir= true;
    println("true");
    fill(#F71919);
    rect(mouseX+50, 585, 3, -120000);
  }else{tir=false;
  println("false");
}}
 
 
 
08/02/2016

 

A l'occasion de cette séance nous avons projeté de résoudre le problème concernant la disparition des cibles , ajouter un score sur l'écran de jeu et faire apparaitre un message "GAGNE" lorsque toutes les cibles sont détruites. Nous avons rempli tous nos objectifs. De plus nous avons également réussi a affiner le tir et commencer la création de salve de tir au lieu d'un tir continu.

 

//variables paramètres de base
int x = 0;
int y = 600;
int z = 15;
int score=0; 
int lowest=0;
boolean tir = false;
 
//variables images
PImage espace ;
 
//tableaux cibles
int monTableauX [] = new int [60];
int monTableauY [] = new int [60];  
int monTableauR [] = new int [60];
int monTableauV [] = new int [60];
 
 
//setup
void setup() {
  size(800, 600);
  frameRate(100);
  espace=loadImage("espace.jpeg");
 
  for (int i=0; i
  { 
    monTableauX[i] = (int)random(0, 800);
    monTableauY[i] = (int)random(10, 40);
    monTableauR[i] = (int)random(10, 25);
    monTableauV[i] = (int)random(1, 6);
  }
}
 
 
 
 
//draw
void draw() {
  fond();
  Tireur();
  creationBalles(); 
  dynamiqueBalles();
  Tir();
  score();
}
 
void fond()
{
  background(0);
  image(espace, 0, 0, width, height);
}
void Tireur() 
{   
  fill(#0B37DE);
  rect(mouseX, 585, 100, 10);
}
 
 
void dynamiqueBalles()
{
  lowest =0;
  for (int i=0; i
  { 
 
    monTableauX[i] =  monTableauX[i] + monTableauV[i];
    if (monTableauX[i] >790 || monTableauX[i] <1) { // rebond : si > 380 alors -(vitesse) ou si < 1 alors -(-vitesse)
      monTableauV[i] = - monTableauV[i];
      monTableauY[i]= monTableauY[i] +30;
    }
    if (tir==true) {
      if (monTableauX[i] <= mouseX+50 && monTableauX[i] >= mouseX+40  ) {
        monTableauX[i] = -2000;
        monTableauV[i]=0;
        score=score+1;
    if ( monTableauY[i]>lowest) {
          lowest =  monTableauY[i];  
    }
    }
  }
}}
 
void creationBalles() {
 
  for (int i=0; i
  { 
    ellipse(monTableauX[i], monTableauY[i], monTableauR[i], monTableauR[i]);
  }
}
 
 
 
void Tir()
{
  if (mousePressed) {
    tir= true;
    println("true");
    fill(#F71919);
    rect(mouseX+50, 585, 3, -120000);
  }else{tir=false;
  println("false");
}}
 
 
void score(){
   if (score == 15) {
    fill(#03FA31);
    textSize(64);
    text("GAGNE", 300, 200);
  } else {
    fill(#FA0F03);
    textSize(20);
    text("Score :", 10, 30);
    text(score, 90, 31);
  }
}
 

 

12/02/2016 (hors cours)

Nous ne l'avons pas vu préalablement mais nous avons un probléme au niveau des salves de tir, quand on reste appuyé sur le clic de la souris le tir disparaît mais les cibles continuent a se détruire. Pour régler ce problème Lucas a ajouté une variable else dans void draw après la première variable if. Pendant ce temps, Illyas s'est occupé de remplacer les ellipses par des images de monstre pour les cibles et le rectangle par une image de vaisseau pour le tireur. Cela a entrainé plusieurs problémes:

-le tir s'est décalé 

-les cibles ne se détruisées plus

Pour régler ces problémes Illyas a réajusté le tir au niveau de la pointe du vaisseau, et a affiné et cenré la zone de destruction des cibles. Il a ensuite donné un effet "laser" au tir en lui affectant pour couleur centrale blanche (fill), et pour couleur du périmètre, du vert (stroke).