TRAVAIL EN COURS D'ISN (4)

Objectif : Etablir la fonction random et la réponse.

/?\ QUESTIONS /?\

-comment integrer la fonction random dans chaques niveaux?
-comment faire afficher la valeur choisie par l'utilisateur?
-Comment donner une reponse à l'utilisateur?
 

/ TRAVAIL REALISE \

 
-Pierric :  A réussi à integrer la fonction random dans le programme. Pour ceci il a importé le format décimal de java en debut de programme. Ensuite il a déclaré deux variables entières au debut du programme aussi. Puis dans le void public du bouton random, il a rentré la methode suivante: DecimalFormat df = new DecimalFormat ("0,##");
                                                                 nombrealeatoire1 = int(random(0,5));
                                                                 nombre1.setText(df.format(nombrealeatoire1));
                                                                 nombrealeatoire2 = int(random(0,5));
                                                                 nombre2.setText(df.format(nombrealeatoire2));
 
-Nicolas : A intégré cette méthode dans chaques niveaux. Il a déclaré 6 autres variables entières en les adabtant à chaques lignes de code de niveau correspondant. Du coup chaques niveaux possèdent ses variables entières. Et grâce à ceci tous les niveaux fonctionnent avec leurs particularitées differentes comme nous l'avions prévu. 
niveau 1 avec des nombres de 0 à 10 
niveau 2 de 0 à 50 
niveau 3 de 0 à 100 
niveau 4 de 0 à 500.
    Il a également décidé de créer un label qui donnera la reponse exacte à l'utilisateur. Pour ceci il a crée un bouton pour que l'utilisateur puisse vérifier son résultat. Dans le public void de ce bouton, Nicolas a rentré quelques lignes de code pour faire afficher la bonne réponse dans un label. Il a ensuite crée ce bouton pour chaque niveau en adaptant encore toutes les variables relative à chaques niveaux. Ceci sans passer par GuiBulder mais en créant manuellement les nouvelles variables GButtoncalculer2 Gbuttoncalculer2..... GLabelresultat2 GLabelresultat3....
    Il a aussi crée manuellement un autre label propre à chaque "windows1" "windows2" etc... c'est à dire propre à chaques niveaux qui permet d'afficher "Bravo" ou bien "Perdu" selon que l'utilisateur ait entré une bonne ou mauvaise réponse. Pour cela il a crée un if dans le public void du boutton calculer qui compare le Texfieldresultat de l'utilisateur au bon résultat du calcul de la manière suivante :
 
float valeur1;
valeur1 = int(VALEUR TEXTFIELDRESULTAT UTILISATEUR);
if( valeur1 == nombrealeatoire1+nombrealeatoire2) 
{bravo = new GLabel(window1.papplet, 230, 172, 80, 20);
  bravo.setText("Bravo");
  bravo.setOpaque(false);} 
else 
  {perdu = new GLabel(window1.papplet, 230, 172, 80, 20);
  bravo.setText("Perdu");
  bravo.setOpaque(false);}
 
Cependant un dernier petit problème reigne, nous de savons pas quoi entrer à la place de "VALEUR TEXTFIELDRESULTAT UTILISATEUR" pour que la valeur que l'utilisateur soit intégré et affecté à la valeur1 du if. Nicolas à affecté ce if à tous les autres niveau, il ne reste donc plus qu'a connaître le code qui permet d'intégrer au if la vauleur que l'utilisateur aura entré dans le textfield pour la comparer.
 
Pierric : Cependant Pierric a effectué 2 niveaux dans une copie du programme avec un slider pour que l'utilisateur puisse sélectionner sa réponse au cas ou nous ne parvenons pas à résoudre le problème avec le textfield. Grace à ce slider nous pouvons donc attribuer la valeur de l'utilisateur à la valeur1 (voir ci dessus). Ainsi le if fonctionne et affiche ce que l'on souhaite. 
 
===> Ceci est une solution sur laquelle on peut se "rabattre" parceque  ce n'est pas un slider que nous souhaitons mais un textfield pour 2 raisons : Essayer d'avoir un programme assez différent de celui en exemple que le prof nous a montré comme modèle, et en suite intégrer le pseudo de l'utilisateur dans chaque fenêtre de niveaux. C'est pour ça que nous souhaitons absolument connaître le code qui permet d'indégrer la valeur d'un textfield à un if ou ul label.

 

/!\ PROBLEMES /!\

* Nicolas n'a pas accès au GuiBuilder chez lui malgès plusieurs tentatives de retéléchargement et de remplacement de dossier "processing". Le logiciel lui affichee "GuiBuilder is not compatible with your version"... Mais il a réussi à se débrouiller sans pour créer les bouttons et les labels ainsi que les textfields en s'inspirant du travail déjà effectué et en comprenant les variables et les fonctions que le GuiBuilder crée.
* Nous avons résolu quasiment tous nos problèmes sauf celui indiqué ci-dessus : savoir qu'elle ligne de code correspondant à la valeur du résultat du textfield de l'utilisateur il faut entrer dans le if pour la comparer au vrai résultat. D'ou la possibilité mise en place d'utiliser un slider au cas ou nous n'y arriverons pas.

 

/ SYNTHESE \

> Nous avons donc beaucoup avancé dans le programme de part la fonction random, le boutton qui permet d'afficher le bon résultat ou encore le if. Chaque niveau est établit, le programme fonctionne, il ne reste plus que la réponse à notre problème pour que le jeu soit principalement terminé. Nous allons donc si nous le pouvons (et avons le droit pendant les vacances), améliorer le jeu par d'autres moyens et essayer d'entrer d'autres calculs que les additions  :  soustractions ou encore des multiplications de manières aléatoire. 
> Ayant beaucoup travaillé sur le programme chez nous même, nous avons compris quasiment toutes les lignes du programme, ce qu'elles exécutent, leurs organisations et leurs fonctions...
> Vous pouvez consulter l'ETAT DU CODE COURS ISN (4) où vous verez notre programme actuel, principalement terminé.
> Vous pouvez voir la copie du programme avec un slider comme solution pour se "rabattre" dans COPIE CODE AVEC SLIDER (4).
                                                                                                                   
Article rédigé par Nicolas et Pierric