Documentation>Tutoriel
> Etape 6
Adversaires:
Maintenant nous allons ajouter
des adversaires à notre
hélicoptère.
Ouvrez le map Map1,
et glissez un sprite helicopter
à coté de celui
qui est déjà
sur le map. Changez les coordonnées
de manière à
avoir quelque chose d'identique
à ce qui suit:
Le sprite correspondant à
l'hélicoptère
adversaire s'appelle donc
helicopter3.
Si vous compilez et executez
le programme, vous verrez
que le deuxième hélicoptère
est en place. Mais il ne bouge
pas et n'explose pas lorsqu'on
lui tire dessus car nous ne
l'avons pas encore programmé.
Dans un premier temps, nous
allons programmer l'explosion
de l'hélicoptère
adverse. Pour cela, il faut
faire un test de collision
entre le sprite fire et le
sprite helicopter3. Il faut
donc faire une comparaison
entre les coordonnées.
La collision peut se traduire
avec la condition: If
AbsInt(fire2.x - helicopter3.x)
< 16 And AbsInt(fire2.y
- helicopter3.y)<8 Then
Nous devons placer cette condition
à l'intérieur
de la condition fire2.visible
= 1, en effet si le
tir n'est pas visible, la
collision ne peut pas avoir
lieu.
Une fois qu'on a détécté
la collision, il ne nous reste
plus qu'à faire afficher
l'explosion de l'hélicoptère
adverse grâce à
l'instruction: helicopter3.action
= 3 et il faut rendre
le tir invisible: fire2.visible
= 0
If fire2.visible = 1 Then fire2.x = fire2.x + FireVel If fire2.x > cam.x + 160 Or fire2.x +16 < cam.x Then fire2.visible = 0 EndIf
If AbsInt(fire2.x - helicopter3.x) < 16 And AbsInt(fire2.y - helicopter3.y)<8 Then
helicopter3.action = 3
fire2.visible = 0
EndIf
EndIf
|
|
A ce stade,
le jeu fonctionne
mais n'est pas très
difficile à
jouer! |
Nous allons maintenant faire
bouger l'adversaire. L'intelligence
artificielle sera très..
artificielle mais vous pouvez
l'améliorer à
votre guise. Nous allons faire
en sorte que l'hélicoptère
adverse se déplace
aléatoirement. Bien
entendu, nous pouvons utiliser
la fonction Random directement,
et mettre helicopter3.x
= helicopter.x + Random(3)
par exemple. Mais dans
ce cas, nous ne controlerions
pas l'éventuelle sortie
des limites de l'écran
de l'hélicoptère.
Nous allons passer par deux
variables qui vont contenir
des coordoonées aléatoires
(mais dans les limites de
l'écran ou du map)
et l'hélicoptère
adverse se déplacera
vers ces coordonnées.
Déclarons ces deux
variables en début
de procédure:
Local HToGoX as Integer Local HToGoY as Integer |
et on les initialise à
un endroit visible dès
le départ du jeu:
Maintenant, il faut dire à
l'hélicoptère
adverse de se déplacer
vers ces coordonnées
à chaque pas de l'affichage.
Donc quelque part à
l'intérieur de la boucle
principale. Il faut comparer
les coordonnées actuelles
de l'hélicoptère
avec les coordonnées
auxquelles on veut qu'il y
aille. Par exemple: If
helicopter3.x < HToGoX
veut dire: "si
la coordoonnée X de
l'hélicoptère
est inférieure à
là où il doit
aller". Dans ce cas,
il faut aller vers la droite,
ainsi on met: helicopter3.x
= helicopter3.x + 2
, et ainsi de suite..
If helicopter3.x < HToGoX Then ' déplace toi vers la droite helicopter3.x = helicopter3.x + 1 helicopter3.action = 1 ElseIf helicopter3.x > HToGoX Then ' déplace toi vers la gauche helicopter3.x = helicopter3.x - 1 helicopter3.action = 2 ElseIf helicopter3.y < HToGoY Then helicopter3.y = helicopter3.y + 1 ElseIf helicopter3.y > HToGoY Then helicopter3.y = helicopter3.y - 1 Else 'on est arrivé à destination EndIf |
Une fois que l'hélicoptère
est arrivé à
destination, nous pouvons
affecter de nouvelles valeurs
aux coordonnées HToGoX
et HToGoY.
If helicopter3.x < HToGoX Then ' déplace toi vers la droite helicopter3.x = helicopter3.x + 1 helicopter3.action = 1 ElseIf helicopter3.x > HToGoX Then ' déplace toi vers la gauche helicopter3.x = helicopter3.x - 1 helicopter3.action = 2 ElseIf helicopter3.y < HToGoY Then helicopter3.y = helicopter3.y + 1 ElseIf helicopter3.y > HToGoY Then helicopter3.y = helicopter3.y - 1 Else 'on est arrivé à destination
HToGoX = 10+Random(160)
HToGoY = 10+Random(90) EndIf |
L'hélicoptère
se déplace sans problème
de façon aléatoire.
Juste une dernière correction.
Il faut mettre tous ces déplacement
sous condition. En effet,
si l'hélicoptère
est frappé par un tir
et qu'il explose, il ne devrait
pas bouger. La version finale
est donc:
If helicopter3.action <> 3 Then If helicopter3.x < HToGoX Then helicopter3.x = helicopter3.x + 1 helicopter3.action = 1 ElseIf helicopter3.x > HToGoX Then helicopter3.x = helicopter3.x - 1 helicopter3.action = 2 ElseIf helicopter3.y < HToGoY Then helicopter3.y = helicopter3.y + 1 ElseIf helicopter3.y > HToGoY Then helicopter3.y = helicopter3.y - 1 Else HToGoX = 10+Random(160) HToGoY = 10+Random(90) EndIf EndIf |
Et voilà, votre jeu
fonctionne à merveille!
Si vous avez eu du mal à
suivre certaines étapes
vous pouvez Télécharger
le projet helico_step6
La suite>>>
|