











Etape 4/5: Animation des Shapes
La commande GraphicsWindow comporte plusieurs fonctions de gestion des Shapes.
Comme nous l'avons vu dans l'exemple précédent, les commandes Add permettent d'associer une variable à une forme géométrique. En Small Basic on appelle cela "nommer" une Shape.
Par exemple:
Trian1 = GraphicsWindow.AddTriangle(50,0,100,100,0,100)
définit un triangle nommé Trian1
La commande MoveShape permet de positionner la forme définie aux coordonnées spécifiées.
Par exemple:
GraphicsWindow.MoveShape(Trian1,200,200)
positionne le triangle nommé Trian1 (et définit plus haut) à la position x=200, y=200 à l'écran.
La commande AnimateShape permet d'animer automatiquement une forme. Il ne s'agit pas véritablement d'une animation mais plutôt d'un déplacement fluide en précisant une destination et le temps que doit mette la forme pour arriver à destination.
Par exemple:
GraphicsWindow.MoveShape(Trian1,0,0,1000)
anime le triangle en le déplaçant vers la position [0,0] en 1 seconde (1000 millisecondes).
La commande RotateShape effectue une rotation de la forme sur elle-même.
Par exemple la séquence suivante imprime un déplacement et une rotation au triangle Trian1:
For i = 0 To 360
GraphicsWindow.MoveShape(Trian1,i,i)
GraphicsWindow.RotateShape(Trian1,i)
Program.Delay(10)
EndFor
Les commandes GetLeftOfShape et GetTopOfShape donnent les coordonnées du coin supérieur gauche d'un rectangle qui entourerait la forme. On l'utilise pour la détection de collision de formes.
Par exemple...
CollX = GraphicsWindow.GetLeftOfShape(Trian1)
Enfin la commande RemoveShape permet de supprimer une forme de l'affichage. C'est très utile dans un jeu pour éliminer dé l'écran un ennemi qui a été détruit par exemple.
Par exemple;
GraphicsWindow.RemoveShape(Trian1)
Efface l'objet Trian1 de l'écran.
L'exemple ci-dessous anime une balle et un triangle à l'écran pour illustrer le fonctionnement des différentes fonctions Shape:
' Initialisations
GraphicsWindow.MouseDown = OnClick
GraphicsWindow.Top = 10
GraphicsWindow.Left = 10
GraphicsWindow.Width = 600
GraphicsWindow.Height = 400
'
GraphicsWindow.pencolor="Green"
GraphicsWindow.BrushColor="LightGreen"
Trian = GraphicsWindow.AddTriangle(50,0,100,100,0,100)
'
GraphicsWindow.pencolor="Blue"
GraphicsWindow.BrushColor="LightBlue"
Ball = GraphicsWindow.AddEllipse(50,50)
'
XT = 0
XB = 0
YB = 0
DeltaXT = 1
AngleT = 1
DeltaXB = 1
DeltaYB = 1
'
GW = GraphicsWindow.Width
GH = GraphicsWindow.Height
'
' BOUCLE PRINCIPALE
Boucle:
AnimeLeTriangle()
AnimeLeCercle()
DetecteCollision()
GraphicsWindow.MoveShape(Trian,XT,200)
GraphicsWindow.RotateShape(Trian,AngleT)
GraphicsWindow.MoveShape(Ball,XB,YB)
Program.Delay(5)
Goto Boucle
' Gestion du Triangle
Sub AnimeLeTriangle
XT = XT + DeltaXT
If (XT >= GW-50 Or XT <= 0) Then
DeltaXT = -DeltaXT
Endif
AngleT = AngleT+1
If AngleT > 360 Then
AngleT = 1
EndIf
EndSub
' Gestion du Cercle
Sub AnimeLeCercle
XB = XB + DeltaXB
If (XB >= GW-50 Or XB <= 0) Then
DeltaXB = -DeltaXB
Endif
YB = YB + DeltaYB
If (YB >= GH-50 Or YB <= 0) Then
DeltaYB = -DeltaYB
Endif
EndSub
' Collision simplifiée
Sub DetecteCollision
collX = GraphicsWindow.GetLeftOfShape(Trian)
collY = GraphicsWindow.GetTopOfShape(Trian)
If (XB+50 >= collX and XB <= CollX+50) And (YB+50 >= collY And YB <= collY+50) Then
deltaYB = -DeltaYB
EndIf
EndSub
' On quitte quand l'utilisateur clique
Sub OnCLick
Program.End()
EndSub
![]() |
![]() |
![]() |
> Logiciel :
Magix Vidéo Easy Créez vos films le plus simplement du monde...
|
|




![]() |
NOUVEAU sur Windows
Tout le Web sur votre bureau : plus d’un millier de flux et widgets…
|
|
