WinGineer
Esiea In'tech Info
 
Mon espace candidat
Nom d'Utilisateur
Mot de passe

Mot de Passe oublié ?
 
Les inscriptions sont terminées
 
A gagner avec Wingineer

1er prix
100% des frais de 5 ans de
scolarité !


2ème prix
Une bourse couvrant 50% des frais !


3ème prix
Une bourse couvrant 25% des frais !

Piloter un tank

Piloter un tank

Pour commencer, enlever le code qui se situe entre

 

to myCode1

end ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

 

Comme vous l'avez peut-être compris, chaque unité peut être controlée individuellement grâce à la fonction qui lui est associée.

"to myCode1" est le début de la fonction controllant l'unité 1, "end" marque la fin de cette fonction. Il en va de même pour les 4 autres unités.

 

Intéressons-nous maintenant aux instructions qui servent à controler l'unité 1, qui est actuellement un tank.

Insérez la fonction move dans la fonction myCode1, de façon à obtenir ceci :

 

to myCode1
  move
end ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

 

"move" est la fonction qui sert à faire avancer le tank. Ainsi, si vous retournez dans l'interface, et que vous faites "reset"

(pour réinitialiser les paramètres du jeu, ainsi que prendre en compte les modifications effectuées sur votre code) et "go",

vos tanks (les bleus) avancent.

Certes, ils avancent bêtement tout droit, mais c'est un début.

J'imagine que maintenant, vous voulez faire tirer vos tanks. Rien de plus facile, il faut utiliser la fonction "fire" avec comme

argument un chiffre entre 1 et 3 qui correspond au nombre de missiles tirés. Par exemple :

 

to myCode1
  move
  fire 1
end ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

 

Voilà, maintenant, nos tanks avancent et tirent en même temps. Cependant, en plus de se faire détruire par les tanks ennemis, nos tanks se détruisent eux-même lorsqu'ils tirent sur un obstacle qui est trop près d'eux :

 

**IMAGE ICI**

 

Pour résoudre ce problème, il suffit de vérifier si il n'est pas dangereux de tirer. Pour cela, il suffit d'utiliser la fonction "safe-fire?" qui renvoie faux si tirer est dangereux, vrai sinon.

 

to myCode1
 move
 if safe-fire?
 [
  fire 1
 ]
end ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

 

 De la même façon, quand vos tanks avancent dans une explosion, ils perdent de leur bouclier. Vous pouvez vérifier qu'il est sûr d'avancer de la même façon grâce à la fonction "safe-move?".

 

Avancer c'est bien, se diriger, c'est mieux. Vous pouvez orienter votre tank de façon absolue :

 

right 180

 

Ce code fait tourner votre tank de 180° par la droite, vous pouvez bien sûr tourner d'un angle différent, ou choisir de tourner à gauche. Par exemple :

 

left 90
 
Vous pouvez également vous orienter de façon relative, par rapport à un élément du jeu. Par exemple, il peut être intéressant (voir indispensable) de pouvoir faire face au drapeau ennemi de cette façon :
 
face enemy-flag
 
Ainsi, pour faire face à un élément particulier, nous utilisons la fonction "face" suivi de l'élément auquel faire face.
 

Repérer les unités

Avec ce qu'on a vu précédemment, vous êtes maintenant capable de faire pas mal de choses. Voici cependant quelques fonctions qui pourront vous être utiles :

 

let missilesEnApproche rockets in-radius 10

 

Ici, nous déclarons (let) la variable "missilesEnApproche" comme étant le nombre de missiles dans un cercle de rayon de 10 ayant pour centre votre unité.

 

let missilesEnFace rockets in-cone 25 45

 

De la même façon, nous déclarons la variable "missilesEnFace" comme étant le nombre de missiles dans un cône face à l'unité, d'angle 45 et de longueur 25.