La programmation en Java et Lejos

Pour expliquer certains fonctionnements, principes et fondements.
Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 51 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Ven Fév 13, 2009 10:05 am

Bonne nouvelle : J'ai réussi à installer LEJOS sur le NXT depuis le Mac :bougeotte:
Je m'attaque à Netbeans et le plugin lejos/nxj si je le trouve, puis les essais de transferts vers le nxt, etc...

Avatar de l’utilisateur
semtou
Level 7
Level 7
 
Messages: 525
Localisation: Toulouse
Âge: 55 ans

Messagepar semtou » Ven Fév 13, 2009 11:02 am

Super Alban pour une fois je suis heureux de ne pas avoir de Mac... :fire:
j'ai commencé mon programme en Java pour le challenge n°1 mais j'ai du ma à organisé les différentes partie de programme. Voici le code du sélecteur qui permet de choisir une des figures à réalisées pour lancé le robot.
Code: Tout sélectionner
import lejos.nxt.*;

// programme destiné à sélectionner une forme dans une liste pour lancé le robot
public class Selecteur {
   public static void main(String[] args) throws Exception {
       LCD.drawString("CHOISIR LE PRG :", 1, 0);
       LCD.drawString("1) Carre", 0, 1);
       LCD.drawString("2) Cercle (petit)", 0, 2);
       LCD.drawString("3) Cercle (grand)", 0, 3);
       LCD.drawString("4) Triangle", 0, 4);   
       LCD.drawString("5) Fin", 0, 5);   
       LCD.drawString("Choix = ", 0, 7); 
       int choix=0;
       int PgmChoisi=0;
      while (true){
         if (Button.ENTER.isPressed()){
            PgmChoisi=choix ; // Transfert de Variable pour la suite du programme
            LCD.drawString("OK pour " , 0, 7) ;
            LCD.drawInt(PgmChoisi, 8, 7);
            Thread.sleep (2000);
            break ; } // En attente de l'écriture de la suite du programme
         if (Button.RIGHT.isPressed()){
            choix=choix + 1;
            Sound.playTone(600, 500);
            Thread.sleep (500);
            LCD.drawInt(choix, 8, 7);}
         if (Button.LEFT.isPressed()){
            choix=choix - 1;
            Sound.playTone(400, 500);
            Thread.sleep (500);
            LCD.drawInt(choix, 8, 7);}
      }
   }
}
Quelqu'un pourrait il m'aider à organiser les différentes routines. J'ai des habitudes du C je voudrais savoir si je peux faire pareil. Genre une main et dedans l'appel aux autres Méthodes (si j'ai bien compris). Comment on évite les throws Exception ? et à quoi ça sert ? moi je les mis à cause des Thread.sleep qui sont pas accepté si ya pas de throws. :help:
Merci à vous.
"Ce qui se conçoit bien s’énonce clairement et les mots pour le dire viennent aisément..." Nicolas Boileau-Despreaux
Mon blog = http://semtou.skyrock.com/
Ma galerie photos = http://www.brickshelf.com/cgi-bin/gallery.cgi?m=SEMTOU

Avatar de l’utilisateur
semtou
Level 7
Level 7
 
Messages: 525
Localisation: Toulouse
Âge: 55 ans

Messagepar semtou » Jeu Fév 19, 2009 6:45 pm

Thibaud a écrit:Il est dans le main, il vaut mieu qu'il attrape l'exception plutôt que de la lancer au niveau supérieur. Ici le try catch va intercepter toute erreurs produite durant le sleep. Si il voulait mettre un throw il faudrait qu'il l'ajoute dans le bloc de traitement du catch.


Salut, quelqu'un pourrait m'expliquer en langage simple :( "comme si j'avais 4 ans" dixit Denzel Washington) le principe des throws et des sleep ? Tout se que je constate c'est que l'EDI n'accepte pas les sleeps quand la méthode n'est pas une throws exception. MERCI
"Ce qui se conçoit bien s’énonce clairement et les mots pour le dire viennent aisément..." Nicolas Boileau-Despreaux
Mon blog = http://semtou.skyrock.com/
Ma galerie photos = http://www.brickshelf.com/cgi-bin/gallery.cgi?m=SEMTOU

Thibaud
Level 6
Level 6
 
Messages: 333
Localisation: Paris
expertnxt

Messagepar Thibaud » Ven Fév 20, 2009 6:56 pm

La méthode sleep est succeptible de lever une erreur en java pour traiter cela tu as deux possibilités si mes souvenirs sont bon.
Tu met un try catch autour du bloc de code succeptible de générer une erreur et tu traites l'erreur dans le catch(ce que l'on fait dans le main)
Soit tu transmet l'erreur au niveau supérieur (si tu es dans une méthode tu transmet à la méthode qui a appelé la premiere) il s'agit du 'throws'
Dans le cas ou tu transmet une erreur ta méthode appelante doit avoir un try catch pour la traiter. Dans tous les cas il faut à un moment traiter ton erreur.

Tu peux faire des bloc des sous routines (appelées méthode) comme en C avec le java.
Venez voir mes créations ;) NXTGEN
-----
La team BrickBot

Avatar de l’utilisateur
semtou
Level 7
Level 7
 
Messages: 525
Localisation: Toulouse
Âge: 55 ans

Messagepar semtou » Lun Fév 23, 2009 12:57 pm

OK Thibaud, j'ai bien lu pour les throws et je comprends maintenant pourquoi il n'accepte pas les sleeps. Y a t-il une autre façon de faire pour le faire attendre. j'ai essayer le wait mais ça passe pas non plus.
Thibaud a écrit:Tu peux faire des bloc des sous routines (appelées méthode) comme en C avec le java.

:oops: J'y ais pensé : genre faire une routine qui reçois la valeur d'une variable (ex.: tempo) et qui réalise des boucle tant que la tempo n'est pas fini.
Est-ce que c'est faisable ? Ce serait (une méthode ou une fonction ?) void qui ne retourne rien. Ma seule crainte c'est que plus aucune des interruptions ne serai prise en compte dans se cas (enfin je crois). :think:
Merci a+
"Ce qui se conçoit bien s’énonce clairement et les mots pour le dire viennent aisément..." Nicolas Boileau-Despreaux
Mon blog = http://semtou.skyrock.com/
Ma galerie photos = http://www.brickshelf.com/cgi-bin/gallery.cgi?m=SEMTOU


Retourner vers De la théorie à la pratique

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 22 invités