TP Java no2: Robotique
IUP I.I.E.S
21 F´evrier
A. Lemay
Objectifs du TP : Cr´eer un objet ”simple” en Java et le manipuler.
Exercice 1: Robot
On d´esire cr´eer un programme qui utilisera des objets de type Robot. Un robot sera caract´eris´e
par ses coordonn´ees x et y (deux entiers) et son nom (une chaˆıne de caract`ere - objet String). On
le manipulera `a l’aide des m´ethodes suivantes :
gauche() : permet de d´eplacer le robot sur la gauche (on d´ecr´emente x)
droite() : idem sur la droite
haut() : idem vers le haut (attention, ydevra baisser quand le robot monte, et inversement)
bas() : idem pour le bas
Le robot disposera d’un constructeur `a trois param`etres : la position initiale du robot (x et
y) et son nom sous la forme de d’une chaˆıne de caract`ere (ex : new Robot(5,10,"R2D2") devra
permettre de cr´eer un robot dont les coordonn´ees seront x= 10 et y= 10 et dont le nom est
R2D2).
Question 1.1: R´ealisation
R´ealisez la classe Robot. T´el´echargez la classe PlateauRobot.class et ex´ecutez la : elle permet
de cr´eer et d’afficher un robot de la class Robot (appel´e ”Albert” et plac´e `a la position (10,10))
que vous avez d´efinie et de lui donner des ordres.
Question 1.2: Robot2
Cr´eez une classe Robot2 qui d´efinit un objet similaire `a celui de la classe Robot `a quelques
diff´erences pr`es,
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´erer que 0 = haut, 1 = droite,
...), son nom, et son ´etiquette (une chaˆıne de caract`ere indiquant ce qu’il faut ´ecrire sur son
ventre). Le robot commence par regarder en haut,
un robot2 a trois m´ethodes 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’´etiquette d’un robot sera ´egal `a la premi`ere lettre de son nom. La classe String dispose
pour cela d’une m´ethode substring `a deux arguments entiers (d´ebut et fin) qui renvoie
la sous-chaˆıne comprise entre les positions de d´ebut et de fin (pour un objet truc de type
String,truc.substring(0,2) permet d’obtenir une chaˆıne correspondant aux deux pre-
miers caract`eres de truc).
R´ealisez la classe Robot2 `a partir de la classe Robot. En particulier, vous r´ecup´ererez les
m´ethodes haut(),bas(),gauche() et droite() auxquelles vous pourrez faire appel. Par con-
tre, ces m´ethodes ne devront pas ˆetre accessibles de l’ext´erieur (d´eclarez-les private).
T´el´echargez ensuite le fichier PlateauRobot2.class et ex´ecutez-le pour tester vos robots. A
chaque fois qu’on appuie sur le bouton cr´eation, un robot est cr´ee avec les arguments sp´ecifi´es.
Vous remarquerez ainsi qu’on peut avoir diff´erents robots de type Robot2, chacun ayant ses propres
attributs et m´ethodes.
Question 1.3: Num´erotation des robots
Java permet de d´efinir au sein d’une classe des variables ou des m´ethodes dites de classe. Ce
sont des ´el´ements qui caract´erisent non pas un objet particulier de la classe, mais l’int´egralit´e de la
classe. Par exemple, si on d´esire compter le nombre de robot de la classe Robot2, on peut utiliser
une variable nb robot. Cette variable ne caract´erise aucun robot en particulier, mais la classe toute
enti`ere, on la d´eclarera donc variable de classe. Pour cela, ajoutez le mot cl´e static devant sa
d´eclaration. On pourrait de mˆeme d´efinir des m´ethodes 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`es sa d´eclaration. Ainsi, le morceau de
code suivant cr´ee la variable de classe nb robot et l’initialise `a 0. Cette variable est ici inaccessible
de l’ext´erieure (d´eclar´ee private).
private static nb_robot = 2;
On voudrait maintenant utiliser comme ´etiquette non pas la premi`ere lettre du nom du robot
mais son num´ero (le premier robot cr´ee aura le num´ero 1, le deuxi`eme, le num´ero 2, etc...). Cr´eez
la variable de classe nb robot et utilisez-la pour r´esoudre ce probl`eme. Testez.
(note : pour transformer un entier en string, on peut l’ajouter `a la chaˆıne vide, ainsi (”” + 5)
fournit la chaˆıne "5")
Exercice 2: Jeu de balle
On d´esire r´ealiser un petit programme qui utilisera des objets de type Balle. Les balles que nous
utiliserons se d´eplacerons sur une fenˆetre en rebondissant sur les bords. T´el´echargez les fichiers
PlateauBalle.class et Balle.class puis ex´ecutez PlateauBalle.class pour voir ce qu’il en
est.
Une balle est caract´eris´ee 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 `a 300 ), de type int
vitesse x et vitesse y : sa vitesse dans l’axe des x et des y (`a chaque mouvement, les coor-
donn´ees sont incr´ement´ees par la vitesse)
couleur : sa couleur (de type Color, vous aurez besoin d’ajouter import java.awt.*; au
d´ebut de votre fichier).
Deux m´ethodes permettent de manipuler la balle : son constructeur et une m´ethode bouger()
qui est appel´ee lorsqu’on d´esire faire bouger la balle. La constructeur doit ici ˆetre un constructeur
`a trois param`etres : la position (x et y) et sa couleur. Par exemple, le code suivant cr´ee une balle
bleue aux coordonn´ees (20,10) :
Balle baballe = new Balle(20, 10, Color.Blue);
Le plateau de jeu (classe PlateauBalle) cr´ee une balle aux coordonn´ees correspondante au
dernier clic de souris et avec une couleur al´eatoire, et pour chaque balle cr´ee, ex´ecute sa m´ethode
bouger() r´eguli`erement.
Question 2.1: Balle simple
Concevez l’objet Balle et testez le.
Question 2.2: Balle magique
T´el´echargez le fichier BalleMagique.class, renommez le en Balle.class et executez PlateauBalle.
Modifier votre fichier Balle.java pour qu’il ait ce comportement.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !