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 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é.
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 :
|