Module Info31 – L2 Sciences & Techniques Université de Bourgogne Document de travail pour le TP noté – tous sujets confondus Vous disposez dans l'archive correspondant à votre sujet : – de l'énoncé à traiter (document sujetxxxx.pdf) – d'un schéma de programme java à compléter (fichier de nom sujet_base.java). Ce schéma de programme doit être renommé en fonction de votre sujet (sujetxxxx.java) – pour référence, si nécessaire, du programme exhaustif de démonstration des primitives graphiques fournies par Oracle (dessineOracle.java) et d'un extrait (test.java) Vous devez : – récupérer et ouvrir l'archive correspondant à votre sujet et renommer le répertoire qu'elle contient à vos noms et prénoms, sans accents ni espaces – renommer le schéma de programme sujet_base.java selon votre sujet (sujetxxxx.java) : n'oubliez pas de modifier le nom de la classe ainsi que la déclaration d'objet dans la méthode main() – modifier le titre de la fenêtre graphique avec vos noms, prénoms et votre groupe de TP noté (le nom du groupe est indiqué sur la feuille d'émargement) – écrire et tester le programme qui vous est demandé – faire une copie d'écran de la fenêtre graphique que génère votre programme – laisser dans votre répertoire de travail exclusivement : – le source de votre programme sujetxxxx.java – la copie d'écran que vous avez faite – faire une archive de votre répertoire de travail et envoyer par email cette archive à : [email protected] ET à votre responsable de TP noté : [email protected] ou [email protected] Vous pouvez avoir besoin : – de passer des paramètres à votre programme Java lorsque vous l'exécutez. Par exemple, pour récupérer dans les variables entières a et b les deux paramètres entiers passés à un programme Java, vous devez écrire dans la méthode main de votre programme : public static void main(String s[]) { int a,b ; a=Integer.parseInt(s[0]); b=Integer.parseInt(s[1]); – d'extraire le ie caractère d'une chaîne (variable ch de type String) avec : ch.charAt(i) attention, le premier caractère de la chaîne est à l'indice 0 – de calculer une racine carrée avec : Math.sqrt() TP noté-1- Module Info31 – L2 Sciences & Techniques Université de Bourgogne – de programmer une pause dans l'exécution de votre programme avec : int attente=300; // en millisecondes try { Thread.sleep(attente); } catch ( java.lang.InterruptedException ie) { //System.out.println("*"); } – de primitives graphiques celles qui sont présentées ci-dessous s'appliquent à g2, un objet de la classe Graphics2D : Pour choisir des couleurs de tracé ou de coloriage, vous disposez de : g2.setColor(Color.blue); g2.setPaint(Color.blue); Les couleurs disponibles sont : static static static static static static static static static static static static static Color Color Color Color Color Color Color Color Color Color Color Color Color black blue cyan darkGray gray green lightGray magenta orange pink red white yellow Pour définir l'épaisseur du trait à utiliser (un entier ou un réel de type float), vous disposez de : g2.setStroke(new BasicStroke(epaisseur)); Pour tracer ou colorier des figures géométriques simples, vous disposez de : A (xa,ya) B (xb,yb) g2.draw(new Line2D.Double(xa,ya,xb,yb)); SEGMENT A (xa,ya) g2.draw(new Rectangle2D.Double(xa, ya, larg, h)); h larg g2.fill(new Rectangle2D.Double(xa, ya, larg, h)); RECTANGLE-CARRE A (xa,ya) g2.draw(new Ellipse2D.Double(xa, ya, diam, diam)); diam diam g2.fill(new Ellipse2D.Double(xa, ya, diam, diam)); CERCLE Dans les primitives ci-dessus, g2.draw permet de dessiner un contour alors que g2.fill permet de colorier la forme indiquée. TP noté-2- Module Info31 – L2 Sciences & Techniques Université de Bourgogne Pour définir (puis tracer ou colorier) un polygone, vous devez : – déclarer une variable polygone par GeneralPath nom = new GeneralPath(GeneralPath.WIND_EVEN_ODD,nb); où nb est le nombre de points du polygone, – indiquer les sommets du polygone par nom.moveTo(x,x); nom.lineTo(x,x); ces méthodes permettent respectivement de se déplacer au point indiqué (par ses coordonnées x et y) ou de tracer un segment depuis la position courante vers le point indiqué, – ne pas oublier de revenir au premier sommet par par nom.closePath() nom.moveTo(x,x) ou de fermer votre polygone – utiliser les méthodes g2.draw(nom); g2.fill(nom); pour tracer ou de colorier le polygone Programme d'exemple test.java (extrait) : public void paint(Graphics g) { dessine(g); // doit appeler votre méthode de dessin }// fin methode // paramètre g obligatoire // vous pouvez ajouter d'autres paramètres public void dessine(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); GeneralPath tr = new GeneralPath(GeneralPath.WIND_EVEN_ODD,3); // triangle gris via // polygone 3 sommets tr.moveTo(10,100); tr.lineTo(10,140); tr.lineTo(40,140); tr.closePath(); g2.setPaint(Color.lightGray); g2.fill(tr); g2.setStroke(new BasicStroke(2)); // trait epais g2.setColor(Color.blue); g2.draw(new Line2D.Double(10,10,60,10)); // tracé d'un segment bleu g2.setColor(Color.red); g2.draw(new Line2D.Double(5,7,5,7)); // tracé d'un point rouge g2.setColor(Color.black); g2.setStroke(new BasicStroke(1)); // trait fin et couleur noire g2.draw(new Rectangle2D.Double(10,20, 10, 10)); g2.draw(new Rectangle2D.Double(40,20, 30, 10)); g2.draw(new Ellipse2D.Double(80,20,10,10)); // tracé: carré-rectangle-cercle g2.fill(new Rectangle2D.Double(10,50, 10, 10)); g2.fill(new Rectangle2D.Double(40,50, 30, 10)); g2.fill(new Ellipse2D.Double(80,50,10,10)); // remplissage }// fin dessine TP noté-3- Module Info31 – L2 Sciences & Techniques Université de Bourgogne quelque soit votre sujet vous n'avez pas à tenir compte de l'affichage inversé de la fenêtre graphique TP noté-4-