Je vous présente ici mon Pacman spécial Halloween.

Pour changer, il est fait sous Access en VBA.
(Donc ne tourne que sous windows)

Le jeu en Access 2000

Si vous n'avez pas Access, ça devrait tourner avec le runtime :
http://www.microsoft.com/downloads/d...displaylang=fr
(je n'ai pas testé, je n'ai que des PC avec Access installé )

Il faut juste exécuter le fichier .mdb

Pour voir le code VBA, exécutez le fichier .mdb en laissant la touche majuscule appuyée.

Il est terminé, je poste juste pour le présenter.

Captures d'écran :


La structure de l'archive zip
- un fichier mdb qui contient tout le code => exécutez ce fichier
- un dossier gdiplus avec la librairie gdiplus.dll (nécessaire pour autre windows que XP)
- un dossier img avec les images du jeu
- un dossier sound avec les sons du jeu

Le graphisme :
Tout le graphisme est géré avec gdi+.
Pour faciliter l'utilisation de gdi+ en VBA, j'ai développé un module de classe clGdiplus

A l'origine ce n'était pas prévu pour faire des jeux mais ça m'a semblé amusant de le faire.

Toutes les images (citrouille, chauve-souris, pac, fantômes) sont dessinées avec le Paint de microsoft.

Le tableau de jeu :
Le contenu de chaque case est défini dans la table TPacMan.
Le tableau est dessiné dynamiquement avec des lignes et des arcs en fonction du contenu des cases.

Les sons :
Pour les sons j'utilise l'API winmm.dll, fonction mciSendString.

Les sons ont été enregistrés avec le magnétophone de windows, en augmentant ensuite la vitesse de lecture.

La minuterie :
Pour la minuterie de la boucle principale j'utilise les timers multimédia (API winmm.dll) qui me donne une bonne précision.

Les commandes :
Pour le clavier je teste les touches avec GetAsyncKeyState (user32.dll).
Pour le joytick j'utilise encore une fois l'API winmm.dll.

Les touches du joystick ne sont pas paramétrables, je teste le premier joypad (index 0) et le bouton de validation est le bouton n° 2.

Le déplacement des objets :
Les objets sont déplacés en fonction de leur vitesse (0.5, 1, 2 pixels en fonction de l'objet et de son statut (fantôme effrayé plus lent, retour au centre plus rapide))
Leur position est multipliée par 10.
Si un objet est en abscisse 25, il est entre les colonnes 2 et 3.
Si un objet est en abscisse 30 et ordonnée 40, il est sur la colonne 3 et la ligne 4 => on fait alors les tests en fonction de ce qu'il y a sur la case (pastille à manger pour le pac) et sur les cases alentours (s'il y a un mur => on stoppe le pac ou le fantôme, ...).

Les collisions :
Pour simplifier et accélérer le jeu, les tests de collision se font sur des régions rectangulaires qui encadrent chaque objet (fantôme ou pac).
Pour un pacman ça suffit.

Poursuite et PathFinding
Il n'y a pas d'algorithme de pathfinding élaboré du style A*.

Les fantômes essayent de se rapprocher du pac en fonction de leur position par rapport à lui (recherche de la distance X ou Y maxi puis déplacement vers le pac sur l'axe sur lequel les objets sont le plus éloigné).
C'est assez simple et suffisant pour que les fantômes ne se bloquent trop souvent dans un coin.
Et surtout le jeu serait trop difficile si les fantômes étaient plus intelligent.

Pour le retour au centre d'un fantôme mangé (les yeux qui retourne au milieu du tableau de jeu) : il y a un table TPath qui donne, en fonction de la position sur le tableau de jeu, la direction à suivre pour retourner au centre.

Voilà, je me suis bien amusé à le faire, même avec Access!