Un jeu de pacman ... sur excel (vba)

Soyez le premier à donner votre avis sur cette source.

Vue 25 985 fois - Téléchargée 3 824 fois

Description

Voici un jeu de pacman en VBA assez simple ,mais le VBA comporte quelques restrictions comme pratiquement aucune fonction prédéfini du genre Form_Onload ou Form_OnKeyPress et aussi tout doit être exécuté en une seule fonction. Malgré tout le jeu est assez fluide et est jouable. J'ai réussi a crée une certain forme d'intelligence artificielle (les ennemies ne change pas d'idée au milieu d'un couloir), mais c'est pas encore parfait.

Les controles :
Se déplacer : Avec les flèches
Terminer : Alt

Etant donné qu'en VBA il n'y a pas la fonction onkeypress veuillez laissez la touche enfoncer.

Conclusion :


Vous pouvez modifier la map en changeant la couleur des cases (rouge : couloir et noir : mur) et n'oubliez pas d'aller changer la position de départ des ennemies vers la fin de la fonction Debut. Si vous avez des idées pour optimiser le code ou encore amilioré le déplacement des ennemies veuillez me les faire parvenir. N'hésitez à ajouter vos commentaires que vous ayez aprécier ou non mon code.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7 -
Bonsoir,


Ton petit jeu m'a bien amusé... j'y jouerai pas pendant des heures, mais bon, 5' c'est sympa... et tout marche bien...

=

Maintenant, si on veut rentrer dans le détail, pour essayer d'avoir un jeu plus complet, je te propose quelques remarques...
J'ai dû régler une attente plus faible, pour que cela devienne plus amusant... mais cette attente dépend de la puissance du PC, sur lequel on joue, car tu utilises deux boucles FOR TO NEXT... Peut-être, une programmation reposant sur la vraie durée écoulée serait préférable... De plus, on pourrait penser proposer alors, un niveau de difficulté en fonction de la vitesse. Pour cela, il faut chercher du côté de la fonction TIMER, je pense. Un truc du genre : t=timer, puis dans une boucle DO , if timer-t > 0.3 then exit do... Bref, à voir, c'est qu'une idée...

Ensuite, de nombreuses lignes sont redondantes, il me semble qu'il aurait fallu les regrouper dans une même structure... Je dis là qu'une impression à chaud, je ne sais pas si c'est réellement possible... (je pense vraiment que oui, pourtant..)

Puis, l'espace du jeu, me semble limité... et ne plus fonctionner au-delà de (A1:V22)... IL aurait été plus sympa de pouvoir faire plus grand, voir prendre la totalité des cases d'une feuille... Je sais que cette idée est un peu "folle", mais pour un p'tit jeu comme celui-là amuse plus de monde... Cela serait un poil plus délire ! ... Bon, bon... Si on pense programmation... Avec quelle idée réalisé cela sans faire trop lourd à gérer par le PC ?... A première vue, je pense que pour ma part, je laisserai excel gérer les déplacements comme quand on se déplace normalement sur une feuille. En utilisant, l'événement Selection_change on peut repèrer sur quelle cellule le curseur se trouve... et faire si le fond est noir, revenir sur la cellule précédente... bien sur il convient de retenir les coordonnées du cuseur aprés chaque déplacement, afin de revenir en arrière, et mettre à jour les variables qui mémorise les coordonnées du curseur, seulement si le déplacement est valide... cela se réalise trés facilement donc... ainsi par la même occassion le recours à la LIB pour la détection des touches ne serait pas nécessaire... (on verrai, hélas le curseur)... Pour les ennemis, je pense que le principe serait un peu le même. Si l'ennemi se trouve à un carrefour, on choisit au pif une direction, autrement on répète le dernier mouvement... Bref, pour en revenir au Pacman de grande taille, je voudrai encore signalé, un truc... L'écran se déplacera normalement avec le curseur de l'utilsateur, comme quand on se déplace avec les touches flèchés dans le tableau vierge, bien évidemment... mais pour les ennemis, il faut faire attention, à ne pas utiliser cells.select, si l'ennemi est hors d'une plage affiché à l'écran, car sinon on verra la Map sauter d'une position de l'ennemi à l'autre... donc injouable... (et gerbe assurée !) ... C'est point à voir, car comme cela je ne vois pas comment on peut connaître la plage affiché à l'écran... il y a surement moyen, mais bon faut y réfléchir...


Voilà, enfin j'arrête là mes nombreuses remarques, un peu flou... en espérant que certains points t'inspirera peut-être...

=

Amicalement,
Us.
Arto_8000
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
5 -
us_30 -> Pour la map grandeur folle on pourait en changeant le range de la variable "play_range" et partout où on vérifie si on se déplacer à l'extérieur (changer la valeur 21 pour autre chose de plus gros) et pour la map fait là comme tu veux (rouge:couloir et noir:mur). Pour le déplacement en sélectinnant une cellule, je ne crois pas que c'est possible, car il faut faire rouler un script en même temps pour les ennemies, donc impossible de sélectionner une cellule pendant l'éxecution (sur Office 98 et les autres versions ?).

J'apprécie ton commentaire et je vais voir pour les autres amiliorations possibles.
cs_djmemo
Messages postés
4
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
23 avril 2006
-
ce qui serez bien c'est que tu mette un bouton contrôle sur la page pour commencer plus vite et plus simplement
Arto_8000
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
5 -
Il y a des siècles que je n'ai plus fait de vba. À vrai dire ce projet est mort depuis bien longtemps ... si tu veux le continuer et l'amélioré davantage vas-y et tu peux en poster une nouvelle version.

De mon côté, j'ai complètement délaissé toutes les formes de VB, pour laisser place au C et PHP/JS.
fendjoulive
Messages postés
1
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
14 juin 2008
-
très très bien
l'aspect visuel pourrait être amléioré sans trop de travail,
par contre la prgrammation est très bonne
c'est pas facile à faire un truc comme ça bien fluide et les deplacements des mechants

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.