Bonjour,
Je suis en train de travailler pour coder un petit jeu du style de BB TAN ( https://play.google.com/store/apps/d...m.crater.bbtan ) mais un peu moins poussé.
Voici là où je suis actuellement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
int nbriquetot=56;
int n=0;
Brique rect[] = new Brique[nbriquetot];
 
class Brique {     // nom de la classe
  int xbrique, ybrique ;
  int tbrique=45;
  int vie;
  boolean visible;
  int contbri = 4;
 
 
  Brique(int posx, int posy, boolean vis) {  //constructeur
    xbrique=posx ; 
    ybrique=posy ;
    visible=vis;
  }
 
  void bouger (int decalageX, int decalageY) {
  }
 
  void dessiner() {
    if (visible==true) {
      stroke(255, 0, 0);
      strokeWeight(contbri);
      fill(0);
      rect(xbrique, ybrique, tbrique, tbrique);
      fill(255);
      text(vie, xbrique+(tbrique/2-3), ybrique+(tbrique/8*5));
    }
  }
}
 
 
 
class Bille {
  int tbille=12;
  float xvitesse, yvitesse;
  float xbille=random(5, 346), ybille=440;
  boolean lancer;
 
  Bille(float posx, float posy, int taille) {
    xbille=posx;
    ybille=posy;
    tbille=taille;
  }
  void dessin_bille() {
    noStroke();
    fill(255);
    ellipse(xbille, ybille, tbille, tbille);
    if ( lancer==true) {
      xbille=xbille+xvitesse;
      ybille=ybille+yvitesse;
    }
  }
  void collision_mur() {
    if (xbille>344) {
      xvitesse*=(-1);
    }
    if (xbille<6) {
      xvitesse*=(-1);
    }
    if (ybille<6) {
      yvitesse*=(-1);
    }
    if (ybille>444) {
      xbille=xbille-xvitesse;
      ybille=ybille-yvitesse;
      lancer=false;
    }
  }
  void lance_bille() {
    if (lancer==false) {
      fill(0, 0, 0, 0);
      stroke(255);
      strokeWeight(10);
      arc(xbille, ybille, 87.5, 87.5, 16*PI/14, 30*PI/16);
    }
  }
  void testLance(int mX, int mY) {
    if (mX>=xbille) {
      xvitesse=((mX-xbille)*7)/(43.75);
      yvitesse=((mY-ybille)*7)/(43.75);
      lancer=true;
    } else {
      xvitesse=-((xbille-mX)*7)/(43.75);
      yvitesse=((mY-ybille)*7)/(43.75);
      lancer=true;
    }
  }
}
 
 
Bille b_m;
int m;
int nbrique=(int)random(1, 8);
int lvl=1;
float xvitesse, yvitesse;
int xbrique=2, ybrique=52 ;
float xbille=random(6, 344), ybille=444;
int tbrique=45, tbille=12;
boolean visible=false;
void setup() {
 
  size (350, 450);
  background(0);
  // lancer=false;
  for (m=0; m<=lvl; m++) {
    b_m=new Bille(xbille, ybille, tbille);
  }
 
  for (n=0; n<56; n++) {
    rect[n]=new Brique (xbrique, ybrique, visible);
    xbrique=xbrique+50;
    if (xbrique>305) {
      xbrique=2;
      ybrique+=50;
    }
    rect[n].vie=lvl;
  }
}
 
 
void draw() {
  background(0);
  creation_brique();
  for ( m=1; m<=lvl; m++) {
    b_m.dessin_bille();
    b_m.lance_bille();
    b_m.collision_mur();
  }
  collision_brique();
}
 
void creation_brique() {
  if (nbrique==1) {
    for (n=0; n<nbrique; n++) {
      if (rect[n].vie>0) {
        rect[n].dessiner();
        rect[n].visible=true;
      } else {
        rect[n].visible=false;
      }
    }
  } else if (nbrique==2) {
    for (n=0; n<nbrique; n++) {
      if (rect[n].vie>0) {
        rect[n].dessiner();
        rect[n].visible=true;
      } else {
        rect[n].visible=false;
      }
    }
  } else if (nbrique==3) {
    for (n=0; n<nbrique; n++) {
      if (rect[n].vie>0) {
        rect[n].dessiner();
        rect[n].visible=true;
      } else {
        rect[n].visible=false;
      }
    }
  } else if (nbrique==4) {
    for (n=0; n<nbrique; n++) {
      if (rect[n].vie>0) {
        rect[n].dessiner();
        rect[n].visible=true;
      } else {
        rect[n].visible=false;
      }
    }
  } else if (nbrique==5) {
    for (n=0; n<nbrique; n++) {
      if (rect[n].vie>0) {
        rect[n].dessiner();
        rect[n].visible=true;
      } else {
        rect[n].visible=false;
      }
    }
  } else if (nbrique==6) {
    for (n=0; n<nbrique; n++) {
      if (rect[n].vie>0) {
        rect[n].dessiner();
        rect[n].visible=true;
      } else {
        rect[n].visible=false;
      }
    }
  } else if (nbrique==7) {
    for (n=0; n<nbrique; n++) {
      if (rect[n].vie>0) {
        rect[n].dessiner();
        rect[n].visible=true;
      } else {
        rect[n].visible=false;
      }
    }
  }
}
 
void mousePressed() { 
  for ( m=0; m<=lvl; m++) {
    b_m.testLance(mouseX, mouseY);
  }
}
 
void collision_brique() {
  for (n=0; n<56; n++) {
    for ( m=1; m<=lvl; m++) {
      if (rect[n].visible==true) {
        if (b_m.ybille>((rect[n].ybrique-rect[n].contbri)-b_m.tbille/2) && (b_m.xbille>((rect[n].xbrique-rect[n].contbri)-b_m.tbille/2)) && (b_m.xbille<((rect[n].xbrique+rect[n].tbrique+rect[n].contbri)+b_m.tbille/2)) && (b_m.ybille<((rect[n].ybrique+rect[n].tbrique+rect[n].contbri)+b_m.tbille/2))) { //Quand la bille touche la brique ...
          rect[n].vie=rect[n].vie-1;
          if (b_m.xvitesse>=0 && b_m.yvitesse<=0 && b_m.xbille>(rect[n].xbrique-rect[n].contbri)) {  //... et arrive par la gauche sur le bas de la brique ...
            b_m.yvitesse*=(-1);  //... yvitesse est multiplié par -1 pour que la bille change de direction.
          } else if (b_m.xvitesse<=0 && b_m.yvitesse<=0 && b_m.xbille<(rect[n].xbrique+rect[n].contbri+rect[n].tbrique)) {  //... et arrive par la droite sur le bas de la brique ...
            b_m.yvitesse*=(-1);  //... yvitesse est multiplié par -1 pour que la bille change de direction.
          } else if (b_m.xvitesse<=0 && b_m.yvitesse>=0 && b_m.xbille<(rect[n].xbrique+rect[n].contbri+rect[n].tbrique)) {  //... et arrive par la droite sur le haut de la brique ...
            b_m.yvitesse*=(-1);  //... yvitesse est multiplié par -1 pour que la bille change de direction.
          } else if (b_m.xvitesse>=0 && b_m.yvitesse>=0 && b_m.xbille>(rect[n].xbrique-rect[n].contbri)) {  //... et arrive par la gauche sur le haut de la brique ...
            b_m.yvitesse*=(-1);  //... yvitesse est multiplié par -1 pour que la bille change de direction.
          } else {  //... et arrive sur les cotés droit ou gauche de la brique par le haut ou par le bas...
            b_m.xvitesse*=(-1);  //... xvitesse est multiplié par -1 pour que la bille change de direction.
          }
        }
      } else {
      }
    }
  }
}
 
/
Voici les problèmes que je rencontre :
- Je n'arrive pas à faire en sorte que mes briques apparaissent aléatoirement sur la ligne plutôt qu'alignées à gauche.
-Quand la dernière balle revient en bas, on passe au niveau suivant ( déjà ici je bloque - il y a conflit entre ma variable lvl dans ma class bille et dans mon void setup () -) ; les briques restantes doivent descendre d'une ligne et il y a réapparition d'un certain nombre de brique sur la première ligne.
-Enfin, au niveau n il doit y avoir n billes et les briques doivent avoir n points de vie ( ça c'est bon ). Sauf que je n'arrive pas à mettre un temps entre le lancement de chaque bille ( elles sont bien là mais au meme endroit ).
Voilà
Si vous avez des pistes je suis preneur ^^
Merci :p