Nom : Logo-Xo
Auteur : Sébastien Magdelyns
Version : 1.0 (28/10/2003)
Logo-Xo est un petit jeu didactique pour familiariser des enfants à
se déplacer avec la tortue. Le principe du jeu est assez simple :
à tour de rôle, le joueur et le robot doivent choisir une case
libre sur la grille pour essayer d'aligner 3 "croix" ("cercle"
pour le robot). Le premier à y parvenir l'emporte.
Le joueur doit se déplacer dans la case à l'aide des primitives
Logo AV, RE, TG, TD" avant d'utiliser la commande "X" pour
jouer.
Lancement de Logo-Xo : LOGOXO
Remarque : voir Logo-Man à
cette page et lire LOGOXO là où
est écrit LOGOMAN
Copyright / Permissions : idem (ici)
Commentaires de l'auteur sur les procédures :
LOGOXO
Fonction principale du jeu. Exécute la commande spéciale "X"
et appelle CROSS. Sinon, exécute les primitives Logo habituelles
(AV,RE,TG,TD) en appelant EXECCMD.
Ré initialise le tableau statut du jeu. ;;Voir commentaires au même endroit à Logo-Man
Boucle interprétant les commandes : REPETE 1000 [RECYCLE SI PLG
;;et suite de la ligne
Paramètre : Rien
Retour : Rien
EXECCMD
Exécute la commande interprétée et vérifie la
position de la tortue (pour les sorties d'écrans).
Remarque : la commande doit être une primitive Logo (à 1 paramètre).
Paramètre : cmd --> la commande à exécuter.
Retour : Rien.
CROSS
Valide la croix à la position de la tortue si la case est vide (dessin
de la croix + mise à jour des variables d'états).
Ce qui suit le second RECYCLE de cette procédure = mise à
jour des variables d'états (reconstruction d'un nouveau grid), vérifie
si joueur a gagné, puis robot joue, vérifie si robot gagne
et vérifie l'ex-aequo.
Paramètre : Rien.
Retour : Rien.
DRAWWIN
Trace la ligne gagnante
3 tests pour ligne gagnante ; 3 tests pour colonne gagnante ; 4 tests pour
diagonale 1 gagnante et 4 autres pour diagonale 2 gagnante.
Paramètre : win --> Indices de ligne et colonne gagnants.
ring --> 1 si c'est un cercle et 0 pour une croix.
Retour : Rien.
CHKOUTSCREEN
Vérifie la position de la tortue et l'empêche de sortir de
l'écran.
Remarque : Cette fonction est nécessaire car l'activation de la primitive
Logo "CLOS" génère un message d'erreur sur la console
(ordinateur) en cas de sortie !
La console étant asservie par Logo-Man --> erreur ;;Logo-XO,
Sébastien : je t'y prends ! :-)
Paramètre : Rien.
Retour : Rien.
REPLACE
Replace la tortue à l'endroit où elle a quitté l'écran.
Astuce : voir Logo-Man au même endroit.
Paramètre : Rien.
Retour : Rien.
GETPOS
Retourne la case de la grille dans laquelle se trouve la tortue.
Paramètre : Rien.
Retour : Liste contenant les indices (i et j) de la case.
[2 3] pour la case à la 2ème ligne et à la 3ème
colonne.
[-1 -1] si la tortue n'est pas dans la grille.
DRAWRING
Dessine un cercle à un endroit stratégique calculé
; mise à jour des variables d'états (reconstruction d'un nouveau
grid).
Paramètre : Rien.
Retour : Rien
DISPRING
Dessine un cercle à l'endroit spécifié.
Paramètre : Rien. ;;bon, cette fois, je le
dis : que signifie cette ligne pour Sébastien alors qu'un
;;amateur de Logo verra, dans la procédure en question 3 paramètres
?
Retour : Rien ;;et ces "Retour" : sont-ils
du "Logo" ou sont-ils du "Sébastien" ?
GETBESTCELL
Dessine un cercle à un endroit stratégique.
1 : Si le robot peut, il doit gagner ! ;;Non : ce
n'est pas une des 3 lois d'Asimov ! ;-)
2 : Si le joueur peut gagner, le robot doit l'en empêcher !
3 : Sinon, jouer au hasard dans une case libre !
D'abord tester si le robot peut gagner ? Puis : si le joueur peut gagner
--> l'empêcher...
Jouer au centre si libre
;SI EGAL? -1 ITEM 5 :grid [RENDS 5]
;;pourquoi Sébastien met-il cette ligne en
commentaire (non exécutable) avant un "au hasard sur
une case libre"
;;précédent le dernier DONNE de
cette procédure et un "erreur!"
juste devant le RENDS 0 final ?
Paramètre : Rien.
Retour : La "meilleure" case où jouer.
DRAWGRID
Dessine la grille.
Paramètre : Rien.
Retour : Rien
DRAWCROSS
Dessine une croix à un endroit donné.
Paramètre : x,y --> La position du centre de la croix à
dessiner.
Retour : Rien
DRAWROBOT
Dessine un robot dans la partie droite de l'écran.
Paramètre : col --> couleur (noir pour effacer) ;;et
oui : on n'a pas de GOMMECRAYON (GC) comme
;;primitive dans cette version de Logo...
Retour : Rien
CHKWIN
Analyse la grille de jeu pour savoir si quelqu'un a gagné.
Paramètre : j --> "1" ou "2" représentant
le joueur ou le robot.
Retour : Une liste contenant l'indice de ligne ou colonne gagnant.
WIN
Ecran de fin de partie. Le joueur a gagné.
Sauvegarde la fenêtre graphique dans un fichier ("LogoXo.pcx")
;;voir à LOSE dans les commentaires sur
le procédures de Logo-Man
Paramètre : Rien.
Retour : Rien
EXAEQUO
Ecran de fin de partie. Ex-aequo. ;;voir ci-dessus.
Paramètre : Rien.
Retour : Rien
LOSE
Ecran de fin de partie. Le joueur a perdu. ;;idem.
Paramètre : Rien.
Retour : Rien
ECRISGRAPH
;;voir commentaires pour la même procédure
de Logo-Man.
© Olivier Schmidt-Chevalier - oct., nov. 2003 |