Menu, collisions améliorées, début des items, et début de la gestion des bombes

29/01/2015 09:33

Beaucoup de modifications ont été faites depuis le dernier article. Un menu a été fait pour rendre l'expérience du joueur un peu plus ludique. 

void afficherMenu() {
 
  image(logo,0,0);

  fill(#7994CB);
  noStroke();
  rect(60,330, 210,50);
  fill(255);
  textFont(texteMenu);
  text("Commencer", 70, 366);
 
  fill(#7994CB);
  noStroke();
  rect(60,390, 210,50);
  fill(255);
  textFont(texteMenu);
  text("Quitter", 110, 426);
 
  //CHANGEMENT AU PASSAGE DE LA SOURIS
  if (mouseX >=60 && mouseX<=269 && mouseY >=330 && mouseY <=380) {
    fill(#2E8BC6);
    rect(60,330, 210,50);
    stroke(0);
    fill(255);
    textFont(texteMenu);
    text("Commencer", 70, 366);
  }
 
  if (mouseX >=60 && mouseX<=269 && mouseY >=390 && mouseY <=439) {
    fill(#2E8BC6);
    rect(60,390, 210,50);
    fill(255);
    textFont(texteMenu);
    text("Quitter", 110, 426);
  }
 
 //CLIC DES BOUTONS
  if (mousePressed == true) {
    if (mouseX >=60 && mouseX<=269 && mouseY >=330 && mouseY <=380) {
      menu = false;
    }
    if (mouseX >=60 && mouseX<=269 && mouseY >=390 && mouseY <=439) {
      exit();
    }  
  }
}

Ceci nous a conduit à modifier le setup() et le draw() avec un boolean menu : 

boolean menu = true;

void setup(){
  texteMenu = createFont("Arial",35,true);
  logo = loadImage("logo.jpg");
  logo.resize(870,570);
  size(870,570);
  frameRate(50);
  carte();
}
 
void draw(){
  if (menu == true) {
      afficherMenu();
  }
 
  if (menu == false) {
  afficherc();
  noStroke();
  }
  println(map[mouseX/crect][mouseY/crect]);
  println(b);
  println(b1);

}

De plus, nous avons du modifier l'onglet Map car afficherc() est placé dans le draw(), or il y avait les calculs de répartition des bonus. Ils sont maitenant dans carte(). Si nous n'avions pas fait celà, tous les blocs cassables auraient été avec des bonus or, ce n'est pas le but. 

Nous avons réalisé un bonus : OverWalls. C'est celui qui permet à la déflagration de la bombe de passer à travers les blocs cassables et non plus de s'arrêter au premier bloc que la flamme rencontre. En revanche, les blocs fixes restent impassibles. 

      boolean blocg = true;
      boolean blocb = true;
      boolean blocd = true;
      boolean bloch = true;

 if(b >= 60)
    map[g][h] = 11;
    
      if(b == 70){
      boom = true;
      
      
    for(int l = g; l < g+def; l++){
      if(boom == true && blocg == true){
      if(map[l][h] == 2){boom = false;}
      if(map[l][h] == 0){
        bomb = false; blocg = true;}
    if(map[l][h] == 1 || map[l][h] == 3 || map[l][h] == 4 || map[l][h] == 5 || map[l][h] == 6 || map[l][h] == 7 || map[l][h] == 8){map[l][h] = 0;bomb = false; blocg = false;}
      if(OverWalls == true){
        blocg = true;}
  }}  
      boom = true;
      
      
    for(int l = h; l < h+def; l++){
      if(boom == true && blocb == true){
      if(map[g][l] == 2){boom = false;}
      if(map[g][l] == 0){
        bomb = false; blocb= true;}
    if(map[g][l] == 1 || map[g][l] == 3 || map[g][l] == 4 || map[g][l] == 5 || map[g][l] == 6 || map[g][l] == 7 || map[g][l] == 8){map[g][l] = 0; bomb = false; blocb = false;}
      if(OverWalls == true){
        blocb = true;}
  }}
       boom = true;
       
       
    for(int l = g; l > g-def; l--){
      if(boom == true && blocd == true){
      if(map[l][h] == 2){boom = false;}
      if(map[l][h] == 0){
        bomb = false; blocd = true;}
    if(map[l][h] == 1 || map[l][h] == 3 || map[l][h] == 4 || map[l][h] == 5 || map[l][h] == 6 || map[l][h] == 7 || map[l][h] == 8){map[l][h] = 0; bomb = false; blocd = false;}
      if(OverWalls == true){
        blocd = true;}
  }}
       boom = true;
       
    for(int l = h; l > h-def; l--){
      if(boom == true && bloch == true){
      if(map[g][l] == 2){boom = false;}
      if(map[g][l] == 0){
        bomb = false; bloch = true;}
    if(map[g][l] == 1 || map[g][l] == 3 || map[g][l] == 4 || map[g][l] == 5 || map[g][l] == 6 || map[g][l] == 7 || map[g][l] == 8){map[g][l] = 0; bomb = false; bloch = false;}
      if(OverWalls == true){
        bloch = true;}
  }}
       boom = true;
 
 
    if(bomb == false){ b = 0;
       map[g][h] = 0;}
    }

Nous avons fait de même pour l'autre personnage.

 

Nous avons également conjointement légérement améliorer les collisions entre la bombe et le joueur, c'est à dire que le joueur, une fois la bombe posée, ne peut pas passer au travers de celle ci. Il suffisait de rajouter la valeur de la bombe en attente d'explosion et celle où la bombe explose dans les longues lignes de collisions des personnages.

 


Nous allons commener à gérer le nombre de bombes et cahque compteur mais cela s'avère plus difficile que prévu. Nous penser à créer soit un tableau de compteur pour les explosions soit à une class mais nous devons encore méditer dessus.