Home      Downloads             Documentation      FAQ     

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:

HToGoX = 125
HToGoY = 30

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>>>

 

   

 

 

     
    About ETP Contact Us