TP Java no2 : Robotique IUP I.I.E.S 21 Février A. Lemay Objectifs du TP : Créer un objet ”simple” en Java et le manipuler. Exercice 1: Robot On désire créer un programme qui utilisera des objets de type Robot. Un robot sera caractérisé par ses coordonnées x et y (deux entiers) et son nom (une chaı̂ne de caractère - objet String). On le manipulera à l’aide des méthodes suivantes : • gauche() : permet de déplacer le robot sur la gauche (on décrémente x) • droite() : idem sur la droite • haut() : idem vers le haut (attention, y devra baisser quand le robot monte, et inversement) • bas() : idem pour le bas Le robot disposera d’un constructeur à trois paramètres : la position initiale du robot (x et y) et son nom sous la forme de d’une chaı̂ne de caractère (ex : new Robot(5,10,"R2D2") devra permettre de créer un robot dont les coordonnées seront x = 10 et y = 10 et dont le nom est R2D2). Question 1.1: Réalisation Réalisez la classe Robot. Téléchargez la classe PlateauRobot.class et exécutez la : elle permet de créer et d’afficher un robot de la class Robot (appelé ”Albert” et placé à la position (10,10)) que vous avez définie et de lui donner des ordres. Question 1.2: Robot2 Créez une classe Robot2 qui définit un objet similaire à celui de la classe Robot à quelques différences près, • un robot2 a cinq attributs :x, y, la direction dans laquelle il regarde (haut, bas, gauche ou droite, on pourra par exemple prendre un entier, et considérer que 0 = haut, 1 = droite, . . .), son nom, et son étiquette (une chaı̂ne de caractère indiquant ce qu’il faut écrire sur son ventre). Le robot commence par regarder en haut, • un robot2 a trois méthodes publiques (en plus de son constructeur), avance() (le robot avance d’une case dans la direction dans laquelle il regarde), tourne gauche() (le robot tourne d’un quart de tour vers la gauche) et tourne droite(), • l’étiquette d’un robot sera égal à la première lettre de son nom. La classe String dispose pour cela d’une méthode substring à deux arguments entiers (début et fin) qui renvoie la sous-chaı̂ne comprise entre les positions de début et de fin (pour un objet truc de type String, truc.substring(0,2) permet d’obtenir une chaı̂ne correspondant aux deux premiers caractères de truc). Réalisez la classe Robot2 à partir de la classe Robot. En particulier, vous récupérerez les méthodes haut(), bas(),gauche() et droite() auxquelles vous pourrez faire appel. Par contre, ces méthodes ne devront pas être accessibles de l’extérieur (déclarez-les private). Téléchargez ensuite le fichier PlateauRobot2.class et exécutez-le pour tester vos robots. A chaque fois qu’on appuie sur le bouton création, un robot est crée avec les arguments spécifiés. Vous remarquerez ainsi qu’on peut avoir différents robots de type Robot2, chacun ayant ses propres attributs et méthodes. Question 1.3: Numérotation des robots Java permet de définir au sein d’une classe des variables ou des méthodes dites de classe. Ce sont des éléments qui caractérisent non pas un objet particulier de la classe, mais l’intégralité de la classe. Par exemple, si on désire compter le nombre de robot de la classe Robot2, on peut utiliser une variable nb robot. Cette variable ne caractérise aucun robot en particulier, mais la classe toute entière, on la déclarera donc variable de classe. Pour cela, ajoutez le mot clé static devant sa déclaration. On pourrait de même définir des méthodes de classes qui permettent de manipuler la classe Robot2 (et non pas un robot particulier). Par ailleurs, on peut initialiser une variable de classe dès sa déclaration. Ainsi, le morceau de code suivant crée la variable de classe nb robot et l’initialise à 0. Cette variable est ici inaccessible de l’extérieure (déclarée private). private static nb_robot = 2; On voudrait maintenant utiliser comme étiquette non pas la première lettre du nom du robot mais son numéro (le premier robot crée aura le numéro 1, le deuxième, le numéro 2, etc...). Créez la variable de classe nb robot et utilisez-la pour résoudre ce problème. Testez. (note : pour transformer un entier en string, on peut l’ajouter à la chaı̂ne vide, ainsi (”” + 5) fournit la chaı̂ne "5") Exercice 2: Jeu de balle On désire réaliser un petit programme qui utilisera des objets de type Balle. Les balles que nous utiliserons se déplacerons sur une fenêtre en rebondissant sur les bords. Téléchargez les fichiers PlateauBalle.class et Balle.class puis exécutez PlateauBalle.class pour voir ce qu’il en est. Une balle est caractérisée par sa position, sa vitesse et sa couleur. Ses attributs sont donc : • x et y : sa position dans l’axe des x et des y (de 0 à 300 ), de type int • vitesse x et vitesse y : sa vitesse dans l’axe des x et des y (à chaque mouvement, les coordonnées sont incrémentées par la vitesse) • couleur : sa couleur (de type Color, vous aurez besoin d’ajouter import java.awt.*; au début de votre fichier). Deux méthodes permettent de manipuler la balle : son constructeur et une méthode bouger() qui est appelée lorsqu’on désire faire bouger la balle. La constructeur doit ici être un constructeur à trois paramètres : la position (x et y) et sa couleur. Par exemple, le code suivant crée une balle bleue aux coordonnées (20, 10) : Balle baballe = new Balle(20, 10, Color.Blue); Le plateau de jeu (classe PlateauBalle) crée une balle aux coordonnées correspondante au dernier clic de souris et avec une couleur aléatoire, et pour chaque balle crée, exécute sa méthode bouger() régulièrement. Question 2.1: Balle simple Concevez l’objet Balle et testez le. Question 2.2: Balle magique Téléchargez le fichier BalleMagique.class, renommez le en Balle.class et executez PlateauBalle. Modifier votre fichier Balle.java pour qu’il ait ce comportement. 2