CODE : SéANCE 2

 

  • Nous nous retrouvons pour la seconde étape de codage. Le but de cette séance sera de :

- Faire apparaître les ennemis (cibles).
- Faire déplacer les ennemis.
- Faire apparaître un fond étoilé.
- Varier la vitesse de déplacement des ennemis.
- Varier la taille des ennemis.
- Varier la position des ennemis dans la fenêtre ( en "x" et en "y").
- Mettre une image pour représenter les ennemis.
- Faire apparaître le tir lorsque l'on presse sur la touche espace (' ')


CODE:
 

PImage espace; //image du fond d'ecran
PImage vaisseau; //image du tireur
PImage invaders;
int monTableauX [] = new int [60];
int [] monTableauY = new int [60];  
int [] monTableauR = new int [60];
int [] monTableauVitesse = new int [60];
int x = 370; //position initiale en x du tireur
int y = 530; //position initiale en y du tireur
int z = 20; //nombre de balles
boolean tir = false;
 
 
void setup() {
 
  size(800, 600); //taille de la fenêtre
  vaisseau = loadImage("vaisseau.png");
  espace = loadImage("espace.jpg");
  invaders = loadImage("invaders.png");
  frameRate(800); 
  textSize(20);
  for (int i=0; i<20; i=i+1) 
  { 
    monTableauY[i] = (int)random(30, 270);
    monTableauR[i] = (int)random(5, 30);
    monTableauVitesse[i] = (int)random(1, 10);
  }
}
 
 
void draw() {
 
  image(espace, 0, 0, width, height);
  dessinerTireur(); 
  deplacerTireur();
  dessinerCibles();
  deplacerCibles();
  dessinerTir();
}
 
 
 
void keyPressed() {
  if (keyCode == LEFT) {
 
    x=x-10;
  } else {
    if (keyCode == RIGHT) {
 
      x=x+10;
    } else {
      if (key == ' ') {
        tir = true;
        println("true");
      }
    }
  }
}
 
void keyReleased() {
  if ( key == ' ') {
    tir = false;
    println("false");
  }
}
 
 
 
void dessinerTireur() {
  image(vaisseau, x, y, 70, 70);
}
 
void deplacerTireur() {
  if ( x > 730) {
    x = 730;
  }
  if ( x<10) {
    x = 25;
  }
}
 
void dessinerCibles() {
  for (int i=0; i
  { 
    fill(#FFFCFC);
    image(invaders, monTableauX[i], monTableauY[i], monTableauR[i], monTableauR[i]);
  }
}
 
void deplacerCibles() {
  for (int i=0; i
  { 
    monTableauX[i] =  monTableauX[i]+ monTableauVitesse[i];
    if (monTableauX[i] > 780 ) {
      monTableauVitesse[i] = - monTableauVitesse[i];
      monTableauY[i] = monTableauY[i] +30;
    }
    if (monTableauX[i] < 1) {
      monTableauVitesse[i] = - monTableauVitesse[i];
      monTableauY[i] = monTableauY[i] +30;
    }
  }
}
 
 
void dessinerTir() { 
  if (tir ==true) {
    rect(x+33, 0, 2, 532);
  }
}
 
  • Lors de cette séance, nous nous divisé le travail en deux: En effet, Nicolas s'est occupé de faire apparaître le tir lorsque l'on appuie sur la barre d'espace, il a aussi fait apparaître le fond étoilé. Pour ma part je me suis occupé des cibles (apparition, déplacement, image, vitesse, taille, position dans la fenêtre).

     
  • Durant cette séance, nous nous sommes rendu compte que le fond étoile n'était pas approprié alors nous avons décidé de l'enlever. Ce n'est pas grave le plus important fut de réussir a concevoir le code pour qu'il puisse apparaître. De plus, le l'image de fond d'écran que nous avions mis était trop claire et on voyait mal l'image du tireur donc nous avons remplacé cette image.
     
  • Pour afficher les cibles, il a fallu déclarer trois tableaux :

           « monTableauX [] »
           « monTableauY [] »
           « monTableauR [] »
           ces trois tableaux d'entiers vont contenir 60 valeurs chacuns. C'est-à-dire 60 valeurs en « x » ,60 valeurs en « y » et 60 valeurs pour              la taille des cibles. Ensuite, nous avons décider de mettre une image afin de représenter les cibles. Pour cela,
on déclare un objet                  image appelé «invaders» avec la fonction « PImage » , ensuite on glisse notre image dans le sketch processing afin de l'intégrer .                On charge l'image dans la case mémoire nommée « invaders » grâce à la fonction « loadImage » et dans notre « void                                  dessinerCibles » on affiche l'image grâce à la fonction « image » avec pour coordonnées en « x » notre tableau                                           « monTableauX[i] » et en « y » le tableau « monTableauY[i] ». Pour cela, il a fallu que l'on utilise une boucle « for » en déclarant           deux variables entière « i » et « z ». La variable « z » définie le nombre de cibles initialisées, nous lui avons affecté la valeurs 20.                 Ainsi, pour « i » initialisée a 0, elle s'incrémente de une unité jusqu'à atteindre la valeur de « ». Il ensuite fallu choisir la taille de               nos cibles, pour cela en paramètres de la fonction « image » nous mettons notre tableau « monTableauR[i] ». Afin que notre cibles             aient des positions et des tailles aléatoire, nous utilisons la méthode « random » qui choisi aléatoirement une valeur parmis les 60               affectées a nos tableaux.

          ---> Travail effectué par Christopher.
 

  • Une fois nos cibles créées, il a fallu qu'elles se déplacent. Pour cela, nous avons déclaré un quatrième tableau d'entiers « monTableauVitesse » qui contient 60 valeurs pour la vitesse de déplacement des cibles. Ensuite dans un « void deplacerCibles » nous avons réutilisé la boucle « for » et nous avons affecté a « monTableauX[i] » la valeur « monTableauX[i] + monTableauVitesse[i]. Ainsi, les cibles se déplaceront a vitesses aléatoires. Deplus, il a fallu comme pour le tireur mettre des limites à leurs déplacements pour pas qu'elles ne sortent de la fenêtre. Pour cela, nous avons utilisé une structure conditonnelle « if » qui lorsque les cibles atteindront des valeurs limites de la fenêtre, alors leurs position en « y » s'incrémentera de 30 unités ( Pour qu'elles puissent progresser petit à petit en direction du tireur » et leur vitesse sera négative pour qu'elles repartent en arrière ou positive pour qu'elles avancent.

    ---> Travail effectué par Christopher
     

  • Afin de créer le tir, nous allons faire apparaître un rectangle fin seulement lorsqu'une condition est vérifiée. Pour cela nous avons premièrement déclaré une variable booléen appelée « tir » qui n'a que deux valeurs possibles 0 ou 1 soit « false » ou « true ». Nous avons affecté a notre variable la valeur « false ». Notre tir se gérèrera seulement lorsque la variable prendre la valeur 1 soit « true ». Ensuite, pour faire apparaître le tir nous avons utilisé la fonction « rect » avec comme position en « x » : « x+33 ». C'est-à-dire que nous avons ajouter 33 à la variable qui contient la valeur en « x » du tireur afin que le tir parte précisement du milieu du tireur. Nous avons ensuite déclaré une variable entière nommé « low » qui contiendra la position en « y » afin qu'il ne prenne pas systématiquement toute la largeur de la fenêtre mais seuleument l'ordonnée de la cible la plus basse. Puis nous avons choisis les paramètres de largeur du tir. Enfin, afin que le tir n'apparaisse que lorsque l'on appuie sur la barre d'espace dans le « void Keypressed » nous avons rajouter une structure conditionnelle « if » afin que lorsque l'on appuie sur la bare d'espace la variable booléen prenne la valeur « true » et que le tir apparaisse. Pour que processing reconnaisse la barre d'espace nous avons utilisé la méthode « key». Afin, que le tir soit éphémère nous avons utilisé la fonction « keyReleased » afin que lorsque l'on lache la barre d'espace alors la variable « tir » prenne la valeur « false » et le tir disparaît.

    ---> Travail effectué par Nicolas.
     

  • Dans notre prochaine séance, nous allons commencer une des parties les plus difficiles qui est de gérer les collisions entre le tir et les cibles. Ainsi que :
    - Mettre une musique de fond.
    - Mettre une musique lorsque l'on tire.
    - Mettre une musique lors de la collision.
    - Faire apparaître "l'affichage général" ( score, chronomètre ).