Note du traducteur: Cet article est basé sur l'article original de Nonki Takahashi où il écrit à la première personne. Comme nous avons gardé la même forme d'écriture dès qu'un "Je" apparaît c'est Nonki qui s'exprime.



Vue d'Ensemble

J'ai écrit le jeu "Turtle Maze Game 1.56" (XHL585-5) comme programme Small Basic.  Dans cet article, j'aimerais vous expliquer comment créer ce type de programme.



J'ai écrit ce programme en trois phases. Premièrement, j'ai écrit le programme qui créé et affiche un labyrinthe. En second, j'ai écrit l'IA (Intelligence Artificielle) qui résout le labyrinthe. Pour finir, j'ai écrit l'IU (Interface Utilisateur) pour affronter l'IA.

La description qui suit détaille chacune de ces trois phases.

1. Création d'un labyrinthe

1.1 Comment créer un labyrinthe ?

Il y a plusieurs idées pour créer un labyrinthe dans Wikipedia (en-US).  Tout d'abord, j'ai décidé d'utiliser l'Algorithme de Prim Aléatoire. Ensuite d'utiliser comme structure de données pour le labyrinthe un tableau à deux dimensions cell[row][col]. Ce tableau contient 1 pour un mur ou "" pour un passage.

2. Création de l'IA pour résoudre le labyrinthe

2.1 Comment résoudre le labyrinthe ?

Il y a plusieurs idées pour résoudre les labyrinthes dans Wikipedia (en-US). En fait, je n'ai pas étudier le site web car je connaissait l'algorithme "Wall Follower" (Suivi des Murs). Cet algorithme est très facile donc l'IA est un peu lente...

Mon premier programme était "Maze 0.3" (PNC833). Ce programme a été publié comme exemple pour le Défi Graphique N°3 dans lors du Challenge of the Month - August 2012 (en-US). Mais ce programme ne fonctionne correctement qu'avec l'environnement local.

2.2 Qu'avons-nous besoin pour l'environnement Silverlight ?

Maze 0.3 ne fonctionne pas correctement dans un navigateur Web avec Silverlight. Donc, je l'ai réécrit pour qu'il fonctionne dans le navigateur et ça à donné Maze 1.2 (PNC833-12). Ce programme à été présenté comme "Turtle Maze" dans le Blog Small Basic (en-US).  Vous pouvez voir les différences à travers les commentaires "Silverlight" dans ce programme. J'ai également ajouté ces différences dans l'article intitulé "Small Basic: Difference Between Local and Remote" (en-US) sur le Wiki TechNet.


3. Créer une IU pour une autre tortue

3.1 Créer une autre tortue

J'ai établi un plan pour créer une autre tortue pour un joueur humain. Les étapes suivantes sont le plan pour la créer.

(1) Créer un programme pour afficher la tortue.

' Afficher la totue à capturer
Turtle.Show()
tx = Turtle.X
ty = Turtle.Y
s = 18            ' défini la taille du cadre
x1 = tx - s / 2
x2 = tx + s / 2
y1 = ty - s / 2
y2 = ty + s / 2
GraphicsWindow.BrushColor = "Gray"
GraphicsWindow.PenWidth = 0
GraphicsWindow.FillRectangle(x1, y1, 1, s)      ' dessine le cadre
GraphicsWindow.FillRectangle(x1, y1, s, 1)
GraphicsWindow.FillRectangle(x2, y1, 1, s)
GraphicsWindow.FillRectangle(x1, y2, s, 1)
GraphicsWindow.FillRectangle(tx, y2, 1, s / 2)  ' dessine le centre
GraphicsWindow.FillRectangle(x2, ty, s / 2, 1)
GraphicsWindow.FillRectangle(tx, y1 - s / 2, 1, s / 2)
GraphicsWindow.FillRectangle(x1 - s / 2, ty, s / 2, 1)
 

(2) Capturer la tortue originale en utilisant les touches [Alt]+[Imprim. Ecran]. Ou vous pouvez également utiliser l'outil Capture.

(3) Créer un bitmap de la tortue originale en utilisant le programme Paint.

(4) Faire un programme pour modifier la couleur de la tortue.  --> J'ai créé un outil (SDH367) pour ça.

(5) Capturer la nouvelle tortue en utilisant les touches [Alt]+[Imprim. Ecran]. Ou vous pouvez également utiliser l'outil Capture.

(6) Créer un bitmap pour la tortue d'une autre couleur en utilisant Paint et GIMP2.

(7) Utiliser le bitmap comme forme Image.  --> J'ai fait un programme d'exemple (CQV406-0).


3.2 Comment contrôler la tortue

J'ai décidé d'utiliser les touches de direction (flèches) pour contrôler la tortue. Les flèches sont reconnues en utilisant GraphicsWindow.KeyDown = OnKeyDown. (OnKeyDown est la sous-routine qui gère l'événement clavier.)

3.3 Comment enregistrer le score

Le score sera enregistré dans un fichier de paramètre. Le nom du fichier de paramètres peut-être obtenu avec File.GetSettingsFilePath(). Mais les opérations sur les fichiers ne peuvent pas être exécutés en distant, par conséquent c'est une limite pour l'environnement distant.


3.4 La tortue disparaît après effacement

La Tortue Small Basic disparaît lorsqu'on appelle GraphicsWindow.Clear() et elle ne réapparaît jamais. Toutefois nous avons besoin de GraphicsWindow.Clear() pour supprimer les lignes dessinées par la tortue. Par conséquent, je pense que la seule possibilité pour redémarrer la Tortue dans le jeu et de ne pas utiliser le crayon de la tortue.


Autres Langues