Etape 1/4 : Rappel des épisodes précédents
Small Basic est un langage d’initiation à la programmation conçu pour 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 ce quatrième épisode, nous allons découvrir le rôle des sous-programmes et de l’instruction SUB. Et nous allons, par la même occasion, créer un remake du célébrissime PONG, l’ancêtre des jeux vidéo modernes!
Etape 2/4 ; Avertissement préalable
Small Basic, dans sa première édition bêta dénommée “Octobre 2008”, est victime d’un bug qui empêche le bon fonctionnement des programmes sur un Windows paramétré en région française.
Pour que les applications fonctionnent bien, il faut momentanément placer les paramètres régionaux de Windows sur “Anglais (Etats-Unis)”:
– Allez dans le panneau de configuration
– Allez dans les paramètres régionaux (options régionales et linguistiques)
– Ouvrez l’onglet Formats
– Dans le menu popup Format Actuel, sélectionnez Anglais (Etats-Unis)
– Cliquez sur Appliquer.
Remarque:
Ce bug sera corrigé dans la prochaine “bêta” de Small Basic (“Christmas Release 2008”) attendue fin Décembre 2008.
Etape 3/4 : Notion de sous-programmes
Un programme est avant tout une succession d’ordres séquentiels. Cependant, il arrive très fréquemment que certaines séquences de code se répètent. Au lieu de dupliquer ces lignes à l’infini, il est plus judicieux de ne les écrire qu’une seule fois au sein d’un sous-programme que l’on appelle chaque fois que l’on en a besoin. Ainsi, si vous devez modifier ces lignes, vous n’aurez qu’à modifier le sous-programme au lieu de répéter la modification sur chacune de ses occurrences comme vous auriez eu à le faire si vous aviez répété les instructions.
Un sous-programme est donc une portion de code qui fait généralement une chose spécifique et qui peut être appelée autant de fois que nécessaire depuis n’importe où dans le programme principal.
Les sous-programmes offrent l’avantage de rendre le code plus lisible. On parle alors de programmation structurée. Tout programme prend ici la forme suivante :
1ère instruction du programme principal
2ème instruction du programme principal
…
nième instruction du programme principal appelant le sous-programme n°x
…
Dernière instruction du programme principal
‘
SUB SousProgramme1
1ère instruction du sousprogramme1
…
Dernière instruction du sousprogramme1
ENDSUB
‘
SUB SousProgramme2
1ère instruction du sousprogramme2
…
Dernière instruction du sousprogramme2
ENDSUB
Par exemple, le programme ci-dessous affiche l’heure à chaque fois que l’utilisateur appuie sur une touche (sauf sur la touche [Q], utilisée ici pour quitter le programme).
‘ Début du programme principal
Entree = “”
While (Text.ConvertToLowerCase(Entree)<> “q”)
AfficheHeure()
Entree = TextWindow.Read()
EndWhile
‘ Fin du programme principal
‘ Sous-Programme:
Sub AfficheHeure
TextWindow.WriteLine(“”)
TextWindow.Write(“Il est actuellement: “)
TextWindow.WriteLine(Clock.Time)
EndSub
Etape 4/4 : Le jeu PONG
Les sous-programmes sont également utilisés pour gérer les évènements Windows et interagir avec la souris. Nous allons illustrer ce principe avec le jeu Pong dont on va piloter la raquette à l’aide de la souris et d’un sous-programme de gestion de celle-ci “OnMouseMove”.
Ce programme utilise un concept que nous n’avons pas encore étudié mais que nous verrons dans notre cinquième épisode: les Shapes. Ces objets graphiques sont très utiles pour les jeux, car on peut leur attribuer des noms, puis utiliser ces noms pour indiquer que l’on souhaite déplacer ces objets. Le programme ci-dessous utilise deux “Shapes”. Une pour la balle (nommée Ball) et une pour la raquette (nommée Paddle).
Voici donc le programme du jeu PONG. A vous de l’améliorer ensuite…
‘ Début du programme principal
Initialisations()
BouclePrincipale()
Program.End()
‘ Fin du programme principal
‘ Ce sous-programme initialise l’écran et les variables
Sub Initialisations
GraphicsWindow.BackgroundColor = “DarkBlue”
GraphicsWindow.PenColor = “Red”
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
Turtle.Show()
Turtle.Speed = 10
Turtle.PenUp()
Turtle.Turn(180)
Turtle.Move(gh/2 – 2)
Turtle.TurnRight()
Turtle.Move(gw/2 – 2)
Turtle.PenDown()
Turtle.TurnRight()
Turtle.Move(gh-4)
Turtle.TurnRight()
Turtle.Move(gw-4)
Turtle.TurnRight()
Turtle.Move(gh-4)
Turtle.Hide()
GraphicsWindow.PenColor = “Blue”
paddle = GraphicsWindow.AddRectangle(120, 12)
GraphicsWindow.MoveShape(paddle, 0, GraphicsWindow.Height – 12)
ball = GraphicsWindow.AddEllipse(16, 16)
GraphicsWindow.MouseMove = OnMouseMove
x = 0
y = 0
deltaX = 1
deltaY = 1
Score = 0
EndSub
‘ Ce sous-programme gère le déplacement de la balle et le score
Sub BouclePrincipale
While (y < gh)
x = x + deltaX
y = y + deltaY
If (x >= gw – 16 or x deltaX = -deltaX
EndIf
If (y deltaY = -deltaY
EndIf
padX = GraphicsWindow.GetLeftOfShape(paddle)
If (y = gh – 28 and x >= padX and x deltaY = -deltaY
Score = Score+1
GraphicsWindow.BrushColor = “DarkBlue”
GraphicsWindow.FillRectangle(gw/2-60, 10, 100, 22)
GraphicsWindow.BrushColor = “Yellow”
GraphicsWindow.DrawText(gw/2-60,20,”Score: “+Score)
EndIf
GraphicsWindow.MoveShape(ball, x, y)
Program.Delay(5)
EndWhile
GraphicsWindow.ShowMessage(“Vous avez perdu!”, “Paddle”)
EndSub
‘ Ce sous-programme gère le déplacement de la raquette
Sub OnMouseMove
paddleX = GraphicsWindow.MouseX
GraphicsWindow.MoveShape(paddle, paddleX – 60, GraphicsWindow.Height – 12)
EndSub
🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.