TP Java no2 : Robotique

publicité
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
Téléchargement