L'animation du sprite

Publié le par DM Didier

1/ANIMER LE SPRITE

Pour que notre personnage se déplace, nous allons devoir créer un movement et une animation:

 

Pour le mouvement, nous allons effectuer les actions suivantes:

- effacer l'image

- calculer ses nouvelles coordonnées

- afficher la nouvelle image

Et pour donner l'impression d'animation, l'affichage de la nouvelle image devra respecter l'ordre du sprite_set.

 

 

Ci-dessous une partie du code:

 

 

Public x As Long

Public y As Long

Public pos As Long

' x et y sont les coordonnées de notre sprite

' pos représente l'une des 4 position de la direction. L'impression d'animation vient du changement de posture

 

Sub déplacement_haut()

Range(Cells(y, x), Cells(y + 16, x + 14)).Clear

'effcement de la position précédente

y = y - 3

'nouvelles coordonnées

 

Select Case pos

 Case 0

    Range(Cells(1, 1 + 32), Cells(16, 14 + 32)).Copy Cells(y, x)

    pos = 1

 Case 1

    Range(Cells(18, 1 + 32), Cells(33, 14 + 32)).Copy Cells(y, x)

    pos = 2

 Case 2

    Range(Cells(1, 17 + 32), Cells(16, 31 + 32)).Copy Cells(y, x)

    pos = 3

 Case 3

    Range(Cells(18, 17 + 32), Cells(33, 31 + 32)).Copy Cells(y, x)

    pos = 0

End Select

'choix et affichage de l'image en fonction de la position attribuée

End Sub

 

 

Remarques:

- si la feuille 1 n'est pas active, l'instruction "Feuil1.Range(Cells(1, 1), Cells(10, 10)).Copy" ne fonctionne pas. On pourrait contourner le problème avec un for next, mais si vous savez pourquoi, n'hésitez pas à commenter.

 

 

2/Un vrai jeu vidéo

Tout cela est bien joli, mais on en est encore loin d'un jeu vidéo. Pour s'en rapprocher, nous allons automatiser les macros en les affectants aux flèches directionnelles:

 

(d'avantage d'infos ici:http://users.skynet.be/micdub/vba6.htm)

 

 

 

Sub init()

y = 300

x = 100

'positions initiales de notre personnage

Range(Cells(1, 1), Cells(16, 14)).Copy Cells(y, x)'affichage du personnage

Application.OnKey "{haut}", procedure:="déplacement_haut"

Application.OnKey "{bas}", procedure:="déplacement_bas"

Application.OnKey "{gauche}", procedure:="déplacement_gauche"

Application.OnKey "{droite}", procedure:="déplacement_droite"

'Ces instructions permmetent de réaffecter l'appui des touches. Ainsi, appuyer sur la flèche de droite ne déplacera plus la sélection de cellule vers la droite, mais lancera la macro "déplacement_droite"

End Sub

 

 

 

 

 

C'est pas mal, non?

Remarque:

      - Argghhh! Mon sprite clignote!!! Même si CamStudio y est pour beaucoup, ça clignote également sur Excel lorsque on laisse appuyé trop longtemps dans la même direction. Pas de quoi se rendre épileptique, mais quand même! Il faudra que j'essaie avec d'autres méthodes (remplacer le range par un for-next, copier mon sprite_set dans une variable tableau et simplement afficher le tableau). Si vous avez des idées, n'hésitez pas.

 

D'ailleurs, nous rechercherons un jour les moyens d'optimiser le code. En effet, si certaines méthodes semblent de premier abord équivalente, elles ne le sont pas en terme d'efficatité et d'optimisation des ressources.

Pour info: http://xcell05.free.fr/pages/prog/accvba.htm

 

Ci-dessous une procédure bien utile également!

Sub rétablir_touches_curseur()

' Ne rien écrire après le nom de la touche à rétablir

Application.OnKey "{haut}"

Application.OnKey "{bas}"

Application.OnKey "{gauche}"

Application.OnKey "{droite}"

End Sub

 

 

Maintenant que notre personnage se déplace "comme un vrai", nous verrons la prochaine fois comment remplir son décor.

Publié dans Quête principale

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article