[VBA Excel] - Jeu Pacman 1980

Bonjour

Juste pour un lever de doute, sur ce fichier, les montres chez vous ne sont pas animés alors ?

Si c'est confirmé alors il me faudra prévenir de la non compatibilité...

@ bientôt

LouReeD

Bonjour,

Aucune animation ... ( Excel 2010 )

( J'aime bien la grosse fonction qui fait tout )

<code'ialement/>

Quand je vous disais que je ne suis pas un développeur ! Alors oui, il m'arrive d'avoir des astuces ou autres, mais comme déjà dit j'aime bien votre façon de faire avec les différents renvois aux fonctions.

Un test = une fonction, une question = une fonction...

En plus je travaille "à la volée" la plupart du temps ! Faites vous des brouillon papier ?

Faut que je m'y mette !

Sinon test sur 2016, c'est figé Reste à tester sur 2019 et plus... Voir un 365 autre que le mien !

@ bientôt

LouReeD

alors je ne vais pas être très utile, au travail j'ai le 2010 et sur mes pc perso le 2007.

Avant oui je faisait beaucoup sur papier, mais c'est plus pratique dans un simple fichier texte.

il suffit d'ajouter des fonctions vides et des noms de variables. En plus de structurer, ça peut aussi bien compacter le code vu qu'on réutilise! et surtout surtout on peut le relire longtemps après.

au travail je code beaucoup sur Linux, ils adorent les arguments après l'appel de la commande, par exemple : toto -r, toto -v etc, l'avantage ici c'est qu'on ajoute juste une fonction qu'on appelle selon l'argument et c'est tout, il peut y avoir 3000 lignes, 20 fichiers c'est pareil

exemple de script > https://codepen.io/stryk/pen/vYdZjqb

on en reparle sur votref fil du jeu j'ai vu des choses sympa. à proposer.

<code'ialement/>

Pourquoi pas, mais il faut du temps pour tout ça !

@ bientôt

LouReeD

Bonsoir,

petite vidéo en gif de ce que cela donne quand les gifs animés fonctionnent :

09 06 2022 23 03 30 rec 00 00 05 00 00 10

On voit bien l'animation des monstres, surtout celui des "boules de glaces" !

@ bientôt

LouReeD

Bonjour

C'est très sympa effectivement !!! Dommage ...

Dès que j'ai 5mn je continue le sujet ^

<code'ialement/>

Bonjour,

On ne pourrait pas ajouter un petit casse-briques sur le bas, qui détruirait petit à petit la grille de Pac-Man ? 😉

Un PacBreack en quelque sorte !

Faut voir avec le développeur...

@ bientôt

LouReeD

Bonjour bonjour

Hey ça peut être fun, j'aime bien l'idée ! A voir pour modifier la première version et déterminer ce qu'il se passe au fur et à mesure de la 'destruction' de la grille !

C'est aussi pour ça que j'avais fait des niveaux un peu décalé, on peut imaginer aussi que ce soit l'utilisateur qui crée la grille avec un tétris, le pacman commence et ça part en space invaders en explosant tout

Pour cette version 1980 on va essayer de rester au plus près de l'original, enfin c'est le but premier de ce sujet.

<code'ialement/>

Bonsoir, enfin une suite

Bon je préviens d'avance, c'est juste pour montrer quelque chose, le code est très moche, c'est vraiment pour avoir un aperçu !

Donc, j'ai créé de nouveaux 'shapes' de fantômes ( 8 par fantômes pour le moment, au final on devrait en avoir 10 ou 11 ).

j'ai imbriqué tout ça pour donner du mouvement, quelques conditions, et hop ça fonctionne, c'est pas si mal pour une maquette

Pour le moment je n'ai 'activé' que 2 fantômes mais les fonctions sont prêtes pour 4.

Et comme attendu, les fantômes utilisent des fonctions communes avec le pacman pour se déplacer

En attendant la suite qui devrait bien optimiser tout ça !

<code'ialement/>

6test-pacman.zip (1.58 Mo)

Bonsoir,

impeccable tout ça !
Par contre un peu énervé ! lors du début du jeu grosse modif du classeur sans avoir été prévenu, mais surtout pas de retour à la normal lors du clic sur Stop !

Sinon bravo, le seul truc qui me dérange à la vu c'est le clignotement des balles synchronisé avec celui du pacman...
Je me suis amusé la dernière fois à modifier votre code et la définition des balles afin d'y ajouter un compteur, et tous les 7 rafraichissement alors je masque la balle.
Le code "animatBall" :

Public Function AnimateBalls()

    Dim ThisElement As Byte
    For ThisElement = 1 To 4
        If Not Balls.isSwallowed(ThisElement) And Balls.Cpt(ThisElement) = 7 Then
            ActiveSheet.Shapes(Balls.Picture(ThisElement)).Visible = False
            Balls.Cpt(ThisElement) = 0
        Else
            ActiveSheet.Shapes(Balls.Picture(ThisElement)).Visible = True
        End If
        Balls.Cpt(ThisElement) = Balls.Cpt(ThisElement) + 1
    Next ThisElement

End Function

le code avec la définition du compteur :

Type Elements

    Picture(1 To 4) As String
    Place(1 To 4) As Range
    Colors(1 To 2) As Double
    isSwallowed(1 To 4) As Boolean
    Bonus(1 To 4) As Integer
    Cpt(1 To 4) As Integer

End Type

et cela donne ceci :

9pacman-lrd-4.zip (1.54 Mo)

Par contre je n'ai pas géré le fait de les effacer si elles sont mangées, donc elles restent dans l'état où elle étaient...

@ bientôt

LouReeD

Les mêmes codes avec cette fois l'effacement de la balle lorsque le PacMan la mange :

Public Function AnimateBalls()

    Dim ThisElement As Byte
    For ThisElement = 1 To 4
        If Not Balls.isSwallowed(ThisElement) And Balls.Cpt(ThisElement) = 7 Then
            ActiveSheet.Shapes(Balls.Picture(ThisElement)).Visible = False
            Balls.Cpt(ThisElement) = 0
        ElseIf Balls.isSwallowed(ThisElement) Then
            ActiveSheet.Shapes(Balls.Picture(ThisElement)).Visible = False
            Balls.Cpt(ThisElement) = 0
        Else
            ActiveSheet.Shapes(Balls.Picture(ThisElement)).Visible = True
        End If
        Balls.Cpt(ThisElement) = Balls.Cpt(ThisElement) + 1
    Next ThisElement

End Function

et

Public Function CheckCollisionBalls()

    Dim ThisElement As Byte
    For ThisElement = 1 To 4

        If Not Intersect(Balls.Place(ThisElement), Pacman.Position(1)) Is Nothing Then

            If Not Balls.isSwallowed(ThisElement) Then
                ActiveSheet.Shapes(Balls.Picture(ThisElement)).Visible = False
                Balls.isSwallowed(ThisElement) = True
                Score.Actual = Score.Actual + Balls.Bonus(1)
            End If

        End If

    Next ThisElement

End Function

@ bientôt

LouReeD

Bonjour,

Oui c'est pas bête du tout, je vais intégrer ça quand j'ai 5mn, merci

Par contre il faut que je modifie les boucles de tempo, peut-être imbriquer une nouvelle boucle ?

Il faut que je fasse des tests pour ma culture perso, débutant oblige

Pas simple avec tout le travail que j'ai, mais on va y arriver ^

<code'ialement/>

Bonsoir,

je reviens sur ce : "J'aime bien la grosse fonction qui fait tout"

Donc je retravaille un peu mon projet et j'en ressort ceci :

Est-ce plus proche de votre façon de faire ?

@ bientôt

LouReeD

Bonjour,

Désolé pour l'attente, trop de choses à faire avant les vacances

Alors, OUI, c'est très bien comme ça, beaucoup plus lisible !!

Bravo

<code'ialement/>

Bonsoir,

après je pense qu'il y a un "abus" de langage, car en fait une Fonction renvoie un résultat, s'il n'y a pas de retour de valeur alors une Sub "suffit", mais qui peut le plus peut le moins...

Merci @ vous car avec votre PacMan je me relance dans mon ArkaLouReeD !

@ bientôt

LouReeD

Bien le bonjour du Camping

Je dirais que ça n'a rien à voir avec le retour éventuel d'une donnée ! Le Sub est un type de fonction particulier !

Les Sub ne sont à utiliser QUE si on doit les appeler depuis un Control !!! ( on ne peut pas appeler une fonction avec un bouton )

Que ça renvoi une donnée ou pas ! D'ailleurs dans mes Sub je ne fais rien à part renvoyer vers une fonction

Quand je dis 'Control' je parle aussi des Sub spéciaux qui servent d'écouteurs d’événements ( actions à l'ouverture, fermeture, etc .. )

En plaçant une fonction on est certain qu'elle est appelé depuis autre part dans le code et pas depuis l'environnement Excel

Mais après oui, avec Des Sub partout ça fonctionne quand même.

Allez go à la piscine, bonne journée ^

<code'ialement/>

Bonjour du bureau !

Pour protéger les sub d'un lancement "extérieur" il suffit de mettre "Private" devant comme cela elles ne peuvent être lancées qu'à partir du code VBA, ou plus simplement s'il y a des paramètres à leur exécution alors là aussi elles sont "invisibles"

Bonne baignade !

@ bientôt

LouReeD

Rechercher des sujets similaires à "vba jeu pacman 1980"