Normalement tu aurais du savoir coder cette demande car ça revient à faire la même chose que le tireur mais en sens inverse.Bernie a écrit :est ce que c'est possible un nouveau cours comme faire bouger un ennemi en le faisant tirer sur le joueur par exemple?
■ L'ennemi se déplace de gauche à droite et vice-versa.
- Il ne doit pas sortir des limites gauche et droite de la surface du jeu
Code : Tout sélectionner
If EnemyX < 0 Or EnemyX > ScreenWidth() - SpriteWidth(Enemy)
EnemyDirection * -1 ;Direction sera égale alternativement à 1 ou -1
EndIf
EnemyX - 2 * EnemyDirection
Code : Tout sélectionner
If Random(50, 1) = 1
;On ajoute ce tir dans la liste des tirs de l'ennemi EnemyShoots()
AddElement(EnemyShoots())
;Création du nouveau sprite de tir à partir du sprite Shoot
EnemyShoots()\Sprite = CopySprite(Shoot, #PB_Any)
;Le nouveau tir est effectuté à partir du milieu bas de l'ennemi
EnemyShoots()\x = EnemyX + SpriteWidth(Enemy)/2 - SpriteWidth(EnemyShoots()\Sprite)/2
EnemyShoots()\y = EnemyY + SpriteHeight(Enemy)
EndIf
EndIf
- Chaque shoot de l'ennemi descend de deux pixels.
- Si le shoot sort en bas de l'ecran, suppression du sprite représentant le tir.
- Si Collision entre un tir et le vaisseau, suppression du sprite.
- Si Collision entre un tir et le vaisseau, une vie de moins pour le vaisseau.
Code : Tout sélectionner
;-Affichage des shoots de l'ennemi
ForEach EnemyShoots()
EnemyShoots()\y + 2 ;Chaque shoot de l'ennemi descend de deux pixels
;Ce tir sort t'il en bas de l'écran ?
If EnemyShoots()\y > 600
FreeSprite(EnemyShoots()\Sprite) ;Destruction du tir
DeleteElement(EnemyShoots(), #True) ;Destruction des information du tir
Else
DisplaySprite(EnemyShoots()\Sprite, EnemyShoots()\x, EnemyShoots()\y)
If ShipLife > 0 And SpriteCollision(Ship, ShipX, ShipY, EnemyShoots()\Sprite, EnemyShoots()\x, EnemyShoots()\y)
FreeSprite(EnemyShoots()\Sprite) ;Destruction du tir
DeleteElement(EnemyShoots(), #True) ;Destruction des information du tir
;Diminution du nombre de vie ou destruction du vaisseau (Player)
ShipLife - 1
If ShipLife = 1
FreeSprite(Ship) ;C'est terminé pour lui
EndIf
EndIf
EndIf
Next
■ Modification de l'archive.
Mise à jour du code 03 - Exercice de tir.pb
Mise à jour du code 04 - Dessiner dans un sprite.pb
Mise à jour du code 05 - Rotation d'un sprite.pb