Le robot joue au ballon
 
  Comment programmerr le ballon
  Un robot joue au ballon
  Comment programmer plusieurs robots
  Partie de basket
  Retour au sommaire du tutoriel
   
Comment aller chercher le ballon
 

*Dans ce chapitre, vous allez programmer le robot pour qu'il trouve le ballon, puis le lance. Il est donc d'abord nécessaire de savoir faire aller le robot dans une case du terrain, celle où se trouve le ballon. (La gestion du ballon sera expliquée au paragraphe suivant)

* Vous allez donc écrire un sous-programme AllerALaCaseXY faisant aller le robot dans une case de coordonnées (x, y) x et y étant deux variables dont les valeurs auront été affectées avant d'appeler le sous-programme.
Pour faire aller le robot à la case x,y on le déplacera en direction de la position x,y et ceci tant que le robot ne sera pas en x,y.
On utilisera pour cela une boucle TantQue et un autre sous-programme AllerVersXY

* Avant de commencer :
- Ouvrez un nouveau programme
- Choisissez le niveau 5
- Choisissez le terrain Terrain9x9SansObstacles (menu Terrain > Modifier, puis menu Terrain > Ouvrir, puis clic sur Utiliser ce terrain)

* Sous-programme AllerVersXY
Ce sous-programme permettra de faire avancer le robot s'il est orienté vers la case à atteindre sinon il fera tourner le robot
- Créez un nouveau sous-programme auquel vous donnerez le nom AllerVersXY
- Construire l'organigramme suivant :

 
 

Conditions logiques utilisées pour tester la direction du robot :
dyRobot=0 et (x-xRobot)*dxRobot > 0 : la condition dyRobot = 0 est vraie dans le cas où le robot est orienté suivant l'axe des x, dxRobot vaut alors 1 pour une orientation vers la droite et - 1 pour une orientation vers la gauche
La valeur x - xRobot représente le parcours à effectuer suivant l'axe des x, le robot est orienté vers la colonne x à atteindre si sa direction dxRobot et le parcours à effectuer sont de même signe, le produit des deux doit alors être positif, ce qui est traduit par la condition (x-xRobot)*dxRobot > 0
De la même façon la condition dxRobot=0 et (y-yRobot)*dyRobot > 0 permet de tester l'orientation du robot suivant l'axe des y.
- Verifiez que l'organigramme est correct en cliquant le bouton "Vérifier organigramme"

* Sous-programme AllerALaCaseXY
- Créez un nouveau sous-programme de nom AllerALaCaseXY
- Construisez l'organigramme suivant :

 
 

* La boucle TantQue est représentée par un bloc boucle de même forme que la boucle Pour. L'en-tête de la boucle contient l'instruction TantQue qui est de la forme : le mot-clef TantQue suivi d'une condition logique (comme celles utilisées dans les tests)
Si la condition logique donne le résultat Vrai l'organigramme présent dans le corps de la boucle est exécuté, puis l'instruction Fin TantQue ramène l'exécution à l'en-tête de la boucle, la condition est à nouveau évaluée, etc ...
Si la condtion logique donne le résultat Faux, le corps de la boucle n'est pas exécuté et l'exécution se poursuit au bloc suivant la boucle.

* Dans le sous-programme AllerALaCaseXY, le corps de la boucle, c'est à dire l'appel du sous-programme AllerVersXY sera exécuté tant que la condition xRobot <> x ou yRobot <> y sera vraie ; xRobot <> x est une expression logique qui compare xRobot et x, le résultat est vrai si xRobot est différent de x ; de même yRobot <> y est vraie si yRobot est different de y ; en conséquence la condition xRobot <> x ou yRobot <> y sera vraie si le robot n'est pas dans la case x, y

* Test du sous-programme AllerALaCaseXY :
- Entrez l'organigramme suivant dans le programme principal.
- Lancer l'exécution et verifiez que la robot arrive bien dans la case indiquée par les variables x et y.
- Changez la position de départ du robot et relancer le programme.
- Changer les valeurs de x et y dans le programme principal et relancer le programme.

 
Comment programmer le ballon
 

* Le ballon apparaît sur le terrain uniquement quand le programme utilise un mot-clef relatif au ballon.
Au début de l'exécution le ballon est placé dans une case déterminée au hasard.

* La position du ballon sur le terrain est donnée par deux mots-clef xBallon et yBallon.
On peut pas exemple tester si le robot est dans la même case que le ballon en utilisant la condition :
xRobot = xBallon et yRobot = yBallon

* Commandes du robot relatives au ballon : PrendreBallon, PoserBallon, LancerBallon
Ces commandes doivent être écrites dans des blocs de commande éditables.

 
 

PrendreBallon : le robot prend le ballon s'il se trouve dans la même case que le ballon.
PoserBallon : le robot pose le ballon dans la case qu'il occupe.
LancerBallon : le robot lance le ballon à trois cases devant lui. Si le ballon sort du terrain, il est relancé automatiquement dans une case prise au hasard.

Un robot joue au ballon
 

* Avant de commencer :
- l'utilisation du ballon n'est posssible qu'au niveau 6 : choisissez le menu Configuration > Niveau et passez au niveau 6.

* Ici vous allez écrire un programme dans lequel le robot trouve le ballon et le lance.
On utilisera le sous-programme AllerALaCaseXY en donnant à x et y les valeurs de xBallon et yBallon.
- remplacer l'organigramme du programme principal par le suivant :

 

  - lancer l'exécution et appréciez votre travail ...
Comment programmer et faire jouer plusieurs robots
 

* Au niveau 6, on peut faire exécuter simultanément les programmes de plusieurs robots sur le même terrain.
Chacun des robots est associé à une fenêtre de programme.
Quand le niveau est inférieur à 6, l'ouverture d'un programme ou la création d'un nouveau programme entraîne la fermeture du programme courant : il ne peut y avoir qu'un seul programme utilisé à la fois. Au niveau 6, quand vous ouvrez un autre programme les autres précedemment ouverts le restent.

* L'ensemble des programmes des robots constituent le projet. Vous pouvez voir la liste de ces programmes dans la fenêtre du projet
avec le menu Fenêtre > Projet. Cette fenêtre vous permet aussi d'afficher les programmes masqués ou de supprimer des programmes du projet. Au niveau 6, quand une fenêtre de programme est fermée, le programme proprement dit reste dans le projet même s'il n'est plus affiché

* Au niveau 6 il est possible aussi de faire jouer les robots à différents jeux. Ici les robots vont jouer au basket.
- choisissez le menu Configuration > Choisir un jeu. La fenêtre de choix de jeu apparaît.
- sélectionnez le jeu de basket
- consultez les règles de ce jeu en cliquant sur le bouton "Règles du jeu"
- validez le choix en cliquant sur le bouton OK
Vous constaterez que l'objectif du programme est devenu "Lancer le ballon dans le panier" : c'est l'objectif du jeu et il n'est plus modifiable tant qu'un jeu est en cours.
Le terrain est aussi fixé et non modifiable, vous pouvez voir le terrain de basket en affichant la fenêtre exécution. Le panier est la case centrale entourée de murs.

Partie de basket
  * Essai du programme précédent
- Lancer le programme précédent : problème ! Dans certains cas le robot s'écrase contre les murs au centre du terrain, il faut revoir le sous programme AllerVersXY qui ne tenait pas compte des obstacles sur le terrain
- Modifier le sous-programme AllerVersXY en remplaçant le bloc Avancer par un test qui permet soit d'avancer soit de tourner avant d'avancer pour éviter le mur.
 
 

- relancez l'exécution : c'est dèja mieux, le robot ne s'écrase plus contre les murs au centre. Par contre il lance le ballon n'importe où !

* Pour pouvoir marquer un point au jeu de basket , le robot doit lancer le ballon dans le panier au centre. Or, quand le robot lance le ballon, le ballon va à 3 cases devant lui. Donc avant de lancer le ballon le robot doit aller dans une case distante de 3 pas du panier, par exemple la case 2,5 puis s'orienter vers le panier. D'où la modification suivante du programme principal :

 
  - lancez le programme, vous constaterez que maintenant le robot marque des points ....
* La partie de basket à plusieurs robots :
- Pour essayer de jouer à plusieurs robots, vous pouvez enregistrer le programme que vous venez d'écrire, puis dupliquer le fichier et enfin ouvrir le fichier dupliqué : vous aurez deux robots joueurs suivant le même programme.
- lancer l'exécution : et il apparait encore des problèmes : en effet, d'abord quand il y a plusieurs robots ils peuvent s'écraser les uns contre les autres, il faut donc tester la présence d'un autre robot avec le mot-clef CaseDevantOccupée, d'autre part, quand un robot a pris le ballon, le ballon change de place avec le robot, il faut donc modifier la recherche du ballon pour que les robots aillent vers le ballon au lieu d'aller vers une case x, y. A vous de jouer ....
 

 

Retour au sommaire du tutoriel