Java---> Reprendre une boucle en java

overpowed Messages postés 116 Date d'inscription   Statut Membre Dernière intervention   -  
overpowed Messages postés 116 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'aimerais savoir comment faire une boucle pour afficher une boîte de dialogue tant que la personne n'as pas rentré les bonnes coordonnées.
Voici le code:
///////////////////////
//support acm.jar//
///////////////////////


public class JeuPereNoel extends GraphicsProgram{
public static final int APPLICATION_WIDTH = 1366; //Définir les dimmensions de l'applet
public static final int APPLICATION_HEIGHT = 650; //Option "mac avec dock pour //explication

private GLine ligneCheminee; //Les images pour mon projet.//
private GImage sol;
private GImage tele2;
private GImage guirlande;
private GImage guirlande2;
private GImage guirlande3;
private GImage maMaison;
private GImage pnoel;
private GImage traineau;
private GImage jump;
private GImage jump2;
private GImage bulle;
private GImage regle;
private GImage tele;

public static void main(String[] args){
new JeuPereNoel().start();
}




public GPoint evalPos( double v0, double angle0, double instantT){
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//création de la courbe pour l'envoie d'une image avec prise en compte de la gravité verion// //simple //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
double x,y;
x = v0*GMath.cosDegrees(angle0)*instantT;
y = v0*GMath.sinDegrees(angle0)*instantT-(9.81*(instantT*instantT)/2);


return new GPoint(x,y);
}
public void traceTrajectoir(double v0, double angle0){
double temps = 0.01;
GPoint p ;
do{
p = evalPos(v0, angle0, temps);
marquerPoint(p);
pause(2);
temps +=0.1;
}while(p.getY()>0);
}


public void marquerPoint(GPoint p){



double y = (400-p.getY());
tele = new GImage ("tele.png",420+p.getX(), y);

remove (bulle);
remove (tele2);
remove (jump);
add (jump2);
add(tele);
pause (10);
remove (tele);


/**Voilà le souci:
* Si l'image en question touche la cheminée dans les points données (ici le haut de la *cheminée représenté par une ligne pour que se soit plus simple) une bulle apparaît avec *marqué good ! dedans. Sinon redemander à l'utilisateur de rentrer les coordonnées de la *vitesse et de l'angle pour essayer à nouveau de mettre les cadeaux (images) dans la *cheminée.


if (tele.getX()==ligneCheminee.getX() & tele.getY()==ligneCheminee.getY()){


GImage good = new GImage ("bulle verygood.png",15,100);
add (good);

}

}
//tentative de la mise en place de la boîte de dialogue mais sans succés\\
|
|
\/
------------------------------------------------------------------------------------------------------
public void redemarage (){

IODialog clavier = getDialog();
double vitesseInitiale = clavier.readDouble("Saisir Vitesse initiale en KM/h : ");
GImage txt1 = new GImage ("fenetreVista.png",500,100);
add (txt1);
pause (1000);
remove (txt1);
double angleDeTir = clavier.readDouble("Saisir angle du lance : ");
add (txt1);
pause (1000);
remove (txt1);
remove (bulle);
traceTrajectoir(vitesseInitiale, angleDeTir);
}


----------------------------------------------------------------------------------------------------
//Méthode run//
------------------------------------------------------------------------------------------------------------
public void run(){
//Mise en place des images pour le projet//

ligneCheminee = new GLine (880,260,920,260);
tele2 = new GImage ("tele.png",400,455);
pnoel = new GImage ("pere noel.jpg", 50,438);
traineau = new GImage ("traineaup.png",150,410);
maMaison = new GImage ("maison pour le projet.jpg",800,235);
jump = new GImage ("jump.jpg", 400,505);
guirlande = new GImage ("guirlande.gif",0,0);
guirlande2 = new GImage ("guirlande.gif",530,0);
guirlande3 = new GImage ("guirlande.gif",1060,0);
jump2 = new GImage ("jump2.png", 395,485);
bulle = new GImage ("bulle ppnoel.png",15,100);
regle = new GImage ("Regledujeu.jpg",0,560);
sol = new GImage ("sol.jpg",0,520);

add (ligneCheminee);
add (sol);
add (regle);
add (tele2);
add (maMaison);//Cheminee 880--920--y=260\\
add (bulle);
add (pnoel);
add (traineau);
add (jump);
add (guirlande);
add (guirlande2);
add (guirlande3);


pause (2000);

//Boîte de dialogue pour définir l'angle et la vitesse du déplacement des images//
//C'est cette partit là que je voudrais mettre en boucle après l'échec de l'envoie du cadeau.

IODialog clavier = getDialog();
double vitesseInitiale = clavier.readDouble("Saisir Vitesse initiale en KM/h : ");
GImage txt1 = new GImage ("fenetreVista.png",500,100);
add (txt1);
pause (1000);
remove (txt1);
double angleDeTir = clavier.readDouble("Saisir angle du lance : ");
add (txt1);
pause (1000);
remove (txt1);
remove (bulle);
traceTrajectoir(vitesseInitiale, angleDeTir);
}

}
J'espère que j'ai été assez clair dans mon explication.
Dans l'attente d'une réponse, je vous remercie d'avance.

A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Le principe général est celui-ci :

do
{
     demander_valeurs
}
while (!valeurs_correctes);

Après il te faut bien sûr adapter ce principe à ton cas.
0
overpowed Messages postés 116 Date d'inscription   Statut Membre Dernière intervention   2
 
ça ne fonctionne pas car la boîte de dialogue ne s'affiche pas à la fin du programme.
Ensuite, les valeurs ne doivent pas être corrects lorsque cette fenêtre de dialogue s'affiche.
Merci quand même.
0