Passer au contenu

Programmez vos jeux en Small Basic 0.2

Une nouvelle version de Small Basic est disponible depuis quelques jours. Cette édition “Décembre 2008”, numérotée “0.2” corrige de nombreux bugs et ajoute de nouvelles fonctions. Elle est surtout l’occasion de découvrir les premiers jeux écrits en Small Basic, dont les codes sources vous aideront à créer votre propre jeu vidéo. Nous allons vous livrer ici quelques clés pour mieux comprendre la création de jeux en Small Basic.

Etape 1/5: Résumé des épisodes précédents

Small Basic est un langage d’initiation à la programmation qui privilégie l’idée de s’amuser en programmant. Il appartient à cette nouvelle initiative de Microsoft visant à encourager les plus jeunes (de 7 à 77 ans) à découvrir les joies de la programmation. Pour en savoir plus, cliquez — ici — .

Dans notre premier épisode (voir ici), nous avons présenté l‘environnement de développement, montré que le logiciel permettait non seulement de créer des petites applications simples (en mode console), mais aussi des plus sophistiquées capables d’interroger des services Web comme Flickr (ici)

Dans le deuxième épisode (voir ici), nous avons étudié quelques concepts fondamentaux du langage comme les variables, les boucles et les tests. Nous les avons illustrés avec le Jeu du nombre mystérieux ( voir ici).

Dans le troisième épisode (voir ici), nous avons vu que Small Basic s’est inspiré du langage LOGO pour offrir des instructions graphiques très amusantes et pédagogiques (voir ici)!

Dans le quatrième épisode (voir ici), nous avons découvert le rôle des sous-programmes et de l’instruction SUB et nous avons recréé le célébrissime jeu PONG, l’ancêtre des jeux vidéo modernes!

Dans ce cinquième épisode, nous allons découvrir les nouveautés de la version “0.2” de Small Basic ainsi que les instructions qui permettent d’animer des sprites à l’écran.

Etape 2/5: Les nouveautés de la version “0.2 Decembre 2008”

Comme promis, Microsoft a bien publié juste avant Noël une mise à jour de son Small Basic: la version 0.2 connue sous le nom de “Decembre 2008 edition”.

Celle-ci corrige de nombreux petits problèmes de la première version, et corrige surtout le bug qui empéchait Small Basic de fonctionner sur les systèmes Français sans changer les paramètres régionaux!

Cette nouvelle version apporte également son lot d’améliorations sur le langage lui-même:

Array (Tableaux):
Apparition des fonctions GetItemCount, ContainsIndex, ContainsValue, et RemoveValue.

Desktop (Bureau):
Les fonctions ScreenWidth et ScreenHeight permettent d’obtenir la résolution du Bureau Windows.

File (Fichier):
Apparition des fonctions CreateDirectory, DeleteFile, GetFiles, GetDirectories et WriteContents.

GraphicsWindow (Application graphique):
Apparition de AddTriangle, FillTriangle, RotateShape, CanResize, Left, Top et GetColorFromRGB.

Text (Texte):
Apparition des fonctions Append, GetCharater et GetCharacterCode.

TextWindow (Application console):
Apparition de la commande Clear pour effacer l’écran et des commandes Left et Top.

Turtle (Tortue):
Apparition des commandes Angle (donne l’angle de la Tortue) ainsi que X et Y (donne la position de la Tortue).

Etape 3/5: A la découverte des SHAPES

L’un des concepts essentiels pour la création de jeux en Small Basic est celui des SHAPES (ou formes). Il s’apparente quelque peu à la notion de “sprites” autrement dit d’objets que l’on anime et que l’on déplace à l’écran.

Les “Shapes” sont des formes géométriques: Rectangle, Ellipse, Triangle et Line.

En premier lieu, ces formes peuvent être dessinées (commandes Draw) et remplies (commandes Fill).

‘ Préparation des couleurs
GraphicsWindow.BackgroundColor = “Black”
GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
‘ On s’assure que la couleur de dessin est différente de la couleur de fond
While GraphicsWindow.PenColor = GraphicsWindow.BackgroundColor
GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
EndWhile
‘ On prépare la fenêtre
GraphicsWindow.Top = 10
GraphicsWindow.Left = 10
H = Desktop.Height – 100
GraphicsWindow.Width = H
GraphicsWindow.Height = H
‘ On dessine
H = H/2
For i = 1 To H Step 4
GraphicsWindow.DrawEllipse(H – i, H – i, i * 2, i * 2)
EndFor

Mais elles peuvent aussi être assignées à des variables et êtres déplacées à l’écran grâce à la fonction MoveShape:

GraphicsWindow.Top = 10
GraphicsWindow.Left = 10
GraphicsWindow.Width = 600
GraphicsWindow.Height = 400
‘ Préparation des Shapes et nommage des Shapes
GraphicsWindow.PenColor = “Blue”
Ligne = GraphicsWindow.AddLine(10,10,100,10)
GraphicsWindow.PenColor = “Yellow”
Rect = GraphicsWindow.AddRectangle(20,50)
GraphicsWindow.PenColor = “Red”
Cercle = GraphicsWindow.AddEllipse(30,50)
GraphicsWindow.PenColor = “Green”
Trian = GraphicsWindow.AddTriangle(10,200,60,200,35,250)
For i=1 To 200
GraphicsWindow.MoveShape(Ligne, i+1,i+1)
GraphicsWindow.MoveShape(Rect, i+2, 50)
GraphicsWindow.MoveShape(Cercle, 30, i+2)
GraphicsWindow.MoveShape(Trian, 10, 200-i)
Program.Delay(20)
EndFor

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 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 DeltaXB = -DeltaXB
Endif
YB = YB + DeltaYB
If (YB >= GH-50 Or YB DeltaYB = -DeltaYB
Endif
EndSub

‘ Collision simplifiée
Sub DetecteCollision
collX = GraphicsWindow.GetLeftOfShape(Trian)
collY = GraphicsWindow.GetTopOfShape(Trian)
If (XB+50 >= collX and XB = collY And YB deltaYB = -DeltaYB
EndIf
EndSub

‘ On quitte quand l’utilisateur clique

Sub OnCLick
Program.End()
EndSub

 

Etape 5/5: Exemples de jeux en Small Basic

Les utilisateurs de Small Basic les plus actifs publient des sources de leurs applications sur le forum de Small Basic. On y trouve notamment quelques exemples de jeux à même de vous inspirer et de vous aider dans la création de vos propres jeux:

* Le jeu de la vie de Christian Jacob  (recherchez “GOL.SB” sur cette page)

* Le jeu Point-And-Shoot de McLeod  (recherchez “-SHOOT” sur cette page

* Des versions améliorées de PONG (recherchez “B0ff1n” et “Dan Do”sur cette page

* Le jeu de billes de Nidzo (recherchez “Nidzo” sur cette page)

* Un jeu de Serpent (clone de SNAKE) que vous trouverez en suivant ce lien

 

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Duval Loic