http://louispayen.apinc.org/

Atelier informatique
2006-2007
Horaire : 2h/semaine

Initiation à l'algorithmique à travers la programmation d'un petit jeu en Qbasic

Jeu réalisé : Pacman (techniques de bases)
 

Séance 1
13/11/2006
Réalisation du labyrinthe : technique du codage des données dans un tableau ( 21*21 ) associé aux DATA
Dessin des briques (mur ) , Dessin du pacman (forme simple)
Déplacement du pacman dans le labyrinthe : codage des routines de déplacement (haut, bas, gauche droite)
Programme : algo1.bas
Séance 2
27/11/2006
Mise en place des gommes : codage dans le tableau.
Codage routine de détection des gommes par le pacman
Affichage du Score
Dessin du Fantôme 1 (fantôme de base : niveau d'intelligence : bas)
Etude d'un premier algorithme simplifié pour le déplacement du fantôme
Séance 3
(4/12/2006
)
Programmation du déplacement du fantome1 : technique de l'heuristique. Le fantôme se déplace vers le pacman (cible) à condition qu'il n'y ait pas de mur sur son chemin. On teste les coordonnées Xf (fantôme) et Xp (pacman) .
Si Xf > Xp , le fantôme est à droite, il faut alors le faire déplacer à gauche.
De même pour l'ordonnée, si Yf > Yp , le fantôme est plus bas que le pacman, il faut donc le faire remonter
Pour l'instant le fantôme peut rester coincer derrière un mur.
Détection collision : on décrémente le score
Problème : le fantôme est trop rapide, il faut le ralentir !
Solution mauvaise : mettre une tempo , car cela ralenti tout le programme .
Bonne solution : appeler la routine de déplacement 1 fois toutes les n boucles du do...loop de gestion général.
Recherche algorithme pour que le fantôme ne soit plus bloqué derrière un mur :
Technique simple : modifier les coordonnées de la cible (qui ne sera plus le pacman) . A coder à la prochaine séance.
Programme : pac1.bas
Séance 4
(11/12/2006)

 

Quelques mises au point graphique
Codage du fantôme : déplacement vers une nouvelle cible ne cas de blocage: 4 cas possibles:

     Cas 1               Cas2                  Cas3                Cas 4
        F                  F                               P                 P

P                                 P               F                                F  

 Dans le cas 1, le fantôme (F) se déplace vers le bas à gauche en direction du pacman (P) puis se trouve bloqué : il faut donc lui indiquer comme nouvelle cible virtuelle une position en bas à droite

Dans le cas 2, le fantôme (F) se déplace vers le bas à droite en direction du pacman (P) puis se trouve bloqué : il faut donc lui indiquer comme nouvelle cible virtuelle une position en bas à gauche

Dans le cas 3, le fantôme (F) se déplace vers le haut à droite en direction du pacman (P) puis se trouve bloqué : il faut donc lui indiquer comme nouvelle cible virtuelle une position en haut à gauche

Dans le cas 4, le fantôme (F) se déplace vers le haut à gauche en direction du pacman (P) puis se trouve bloqué : il faut donc lui indiquer comme nouvelle cible virtuelle une position en haut à droite

On a eu juste le temps de coder le cas 1 car plusieurs erreurs dans la transcription  de l'algo nous ont retardé.
Séance de débugage : Comment trouver une erreur, comment analyser un problème (mise en place de points d'arrêt, affichage des variables... )
 

Autre stratégie : déplacer le fantôme en direction opposée au pacman en cas de blocage puis revenir vers le pacman en cas de deuxième blocage (switcher l'une et l'autre) . On a une variable cible qui vaudra 1 ou -1 en fonction du déplacement :
Voir le programme pac3.bas