Bonjour, bonsoir !
Je suis actuellement en Terminale S et j'ai un projet ISN à rendre pour bientôt. Malheureusement, il nous reste quelque chose qui bloque et nous ne trouvons pas la solution. Nous avions comme projet de créer un petit jeu où le personnage se déplace sur une carte, est bloqué par les rochers et autres obstacles. Cela est fait. Puis comme nous trouvions ça un peu léger, nous avons ajouté un second niveau. Malheureusement, lorsque le personnage passe à la seconde carte, les obstacles de la première sont toujours actifs. Enfin je vous montre le code actuel, ce sera sans doute plus clair que toutes mes explications.
Les obstacles des deux cartes sont chacun définis dans des void différentes en bas du programme (la seconde carte n'ayant qu'un obstacle - ou buisson - fictif en attendant de régler le problème). Est-il possible de « désactiver » une void quand une seconde est appelée ?
Merci d'avance !
Tagada -
Hors ligne
Je ne sais pas trop si tu veux conserver tes images, mais tu peux jouer sur le "isVisible" true, false. C'est long et tu dois le faire pour chacune des images.
Tu peux jouer avec les boolean. Tu lances une condition, if(niveau1==true) tu lances le niveau 1, puis tu dis niveau1=false et tu lances le niveau 2 de la même façon (ou avec un else si tu en n'as que 2)
Je ne suis pas un expert mais je fais comme ça.
Hors ligne
Dans la classe Buisson, j'introduirais un autre paramètre celui du niveau :
class Buisson { //buissons int x; int y; int l; int h; int niveau; Buisson(int _niveau, int nouvx, int nouvy, int nouvl, int nouvh) { niveau = _niveau; x=nouvx; y=nouvy; l=nouvl; h=nouvh; } } //fin class buisson
de même dans la classe de ton personnage, lors des collisions, je j'ajouterais une condition pour savoir si
balle.niveau == b[i].niveau
Petite remarque, quand tu as des sketchs avec des images ou des sons, il est préférable de faire une compression de l'ensemble du répertoire afin de pouvoir tester en condition réelle le sketch.
Hors ligne
Ouh, merci pour vos réponses rapides !
Miaou » Alors oui, pour les boolean, on a testé mais la void du niveau 1 reste toujours active. La void du niveau 2 se « rajoute » simplement par dessus.
Mushussu » J'avoue ne pas avoir trop compris la façon dont « balle.niveau == b[i].niveau » se plaçait. ö
Merci tout de même de votre aide vraiment rapide, et en espérant avoir des éclaircissement !
Hors ligne
Voilà un exemple de gestion de niveau comme je le disait précédemment :
Personnage perso; Buisson[][] buissons; int nombreElement, nombreNiveau; void setup() { size(600, 600); nombreNiveau = 5; nombreElement = 40; buissons = new Buisson[nombreNiveau][nombreElement]; perso = new Personnage(width / 2, height / 2); for (int j = 0; j < nombreNiveau; j++) { for (int i = 0; i < nombreElement; i++) { buissons[j][i] = new Buisson(j, (int)random(width), (int)random(height)); } } noStroke(); } void draw() { background(255); for (int i = 0; i < nombreElement; i++) { buissons[perso.niveau][i].affichage(); } perso.affichage(); } class Personnage { int x, y, r; int niveau; Personnage(int _x, int _y) { x = _x; y = _y; niveau = 0; r = 10; } void affichage() { fill(255, 0, 0); ellipse(x, y, 2 * r, 2 * r); } } class Buisson { int x, y, r; int niveau; Buisson(int _niveau, int _x, int _y) { niveau = _niveau; x = _x; y = _y; r = 20; } void affichage() { fill(0, 255, 0); ellipse(x, y, 2 * r, 2 * r); } } void keyPressed() { int dx = 0; int dy = 0; if (key == ' ') { perso.niveau++; if (perso.niveau == nombreNiveau) { perso.niveau = 0; } } if (keyCode == UP) { dx = 0; dy = -4; } if (keyCode == DOWN) { dx = 0; dy = 4; } if (keyCode == LEFT) { dx = -4; dy = 0; } if (keyCode == RIGHT) { dx = 4; dy = 0; } boolean test = false; for (int i = 0; i < nombreElement; i++) { if (dist(perso.x + dx, perso.y + dy, buissons[perso.niveau][i].x, buissons[perso.niveau][i].y) < (perso.r + buissons[perso.niveau][i].r)) { test = true; break; } } if (!test) { perso.x += dx; perso.y += dy; } }
La simulation du changement de niveau se fait par la touche espace.
Je te recommande la lecture de ce post pour générer les niveaux :
http://codelab.fr/4974
Dernière modification par Mushussu (2014-05-11 00:52:05)
Hors ligne
Re-bonjour !
Alors merci pour ces plus amples explications, nous sommes en train d'essayer de le mettre en pratique. Nous repasserons sans doute pour de nouvelles questions, toutefois.
Merci encore pour l'aide apportée !
Hors ligne