IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Développement du jeu Pirates !


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien régulation/ Automatismes/ Ingénieur Fluides et Energies
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien régulation/ Automatismes/ Ingénieur Fluides et Energies

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Par défaut Développement du jeu Pirates !
    Bonjour à tous

    Je suis actuellement en train de développer un petit jeu sur le thème des pirates, de style RPG/Action.

    Je souhait via cette discussion vous faire partager mon petit projet. Cela vous permettra de me faire des remarques, de me donner des conseils ou des améliorations de codes.
    Cela permettra aussi à ceux qui sont intéressés de voir quelles ont été mes idées ;D

    Egalement si vous avez des idées concernant une histoire ou des éléments de gameplay, je serai tout à fait preneur !!!

    J’essaierai de mettre à jour régulièrement ce post !!



    Mercredi 9 novembre 2016 :

    Cela fait environ 3 jours que je l'ai commencé, j'ai débuté par mettre en place un personnage et essayé de le faire se déplacé dans un petit décor.
    J'ai aussi commencé la mise en place d'un menu, et donc de l'amélioration de l'interface joueur.

    Lien de dl : www.transfernow.net/813qy7p8suh1

    Cordialement

    Greg

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Comme tu l'as sans doute imaginé, il te faudra multiplier les plateaux de jeu.
    Pour cela, il faut que ton code de départ soit le plus simple, le plus court, et le plus explicite possible.

    Par exemple, au lieu d'avoir 4 Sub pour le déplacement du personnage, tu pourrais n'en avoir qu'une paramétrée.
    Je te propose donc de remplacer tes Sub Haut, Bas, Gauche et Droite par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Public Sub Bouge(Sens As String)
    Dim prefixImage As String
     
        With Fenetre.Controls("perso")
            Select Case Sens
                Case "Haut"
                    If .Top > 2 Then .Top = .Top - 2
                    prefixImage = "\Images\Pirate_back"
                Case "Bas"
                    If .Top + .Height < Fenetre.Height - 20 Then .Top = .Top + 2
                    prefixImage = "\Images\Pirate_front"
                Case "Gauche"
                    If .Left > 2 Then .Left = .Left - 2
                    prefixImage = "\Images\Pirate_left"
                Case "Droite"
                    If .Left + .Width < Fenetre.Width - 5 Then .Left = .Left + 2
                    prefixImage = "\Images\Pirate_right"
            End Select
            cpt_pas = cpt_pas + 1
            Select Case cpt_pas
                Case 1
                    .Picture = LoadPicture(ThisWorkbook.Path & prefixImage & "_1.gif")
                Case 2
                    .Picture = LoadPicture(ThisWorkbook.Path & prefixImage & "_stand.gif")
                Case 3
                    .Picture = LoadPicture(ThisWorkbook.Path & prefixImage & "_2.gif")
                Case 4
                    .Picture = LoadPicture(ThisWorkbook.Path & prefixImage & "_stand.gif")
                    cpt_pas = 0
            End Select
        End With
    End Sub
    Cette Sub contrôle également la "non-sortie" du personnage de l'écran. Important pour ton jeu!
    Elle est appelée dans l'événement UserForm_KeyDown, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub UserForm_KeyDown(ByVal Keycode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim Sens As String
     
        Select Case Keycode
            Case 38: Sens = "Haut"
            Case 40: Sens = "Bas"
            Case 37: Sens = "Gauche"
            Case 39: Sens = "Droite"
            Case 13: Module1.ent = 1
        End Select
        If Sens <> "" Then Call Bouge(Sens)
    End Sub
    Ensuite, tu as un problème de taille d'UserForm. Ton Usf "fenetre" est plus grand que l'image qu'il contient. Sur ton écran ça doit passer comme il faut, mais quid des autres configurations?
    Comme il s'agit de toutes petites images collées les unes à côté des autres, je te suggère de le faire dynamiquement plutôt qu'en mode création.
    Si tu as besoin d'aide sur ce point n'hésite pas.

    Ensuite, il te faudra également repenser ta Sub introduction.
    Dans la logique, elle sert à :
    > faire parler le perso
    > attendre qu'il ait réussit le jeu
    Je te propose donc de la découper en deux Sub différentes :
    > Parler
    > Jouer

    Etc...
    Sinon, le graphisme est plutôt joli. Les images sont-elles libres de droits?

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    End SubSub bas()
    Dim pos_bas As Integer
    If cpt_pas = 0 Then cpt_pas = 1 'Remise à 1 du compteur
    pos_bas = Fenetre.Controls("perso").Top 'Declaration d'une variable pour le déplacement du perso
    With Fenetre.Controls("perso") 'Deplacement de l'image du perso
        .Top = pos_bas + 2 'Modification de l'image pour donner l'effet d'une alternance de pas
        .Picture = LoadPicture(Workbooks(ActiveWorkbook.Name).Path & Array("", "\Images\Pirate_front_1.gif", "\Images\Pirate_front_stand.gif", "\Images\Pirate_front_2.gif", "\Images\Pirate_front_stand.gif")(cpt_pas))
        End With
    cpt_pas = cpt_pas + 1 'Incrementation du compteur de pas
    If cpt_pas = 5 Then cpt_pas = 1 'Remise à 1 du compteur
    End Sub

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    bonjour loader une image différente a chaque déplacement est un peu lourd
    je te suggère d'utiliser un control list image histoire de réduire les temps d'exécution
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    j'ajouterais que ton image sable repétée x fois pour faire le terrain n'est pas forcement une bonne solution

    et on vois biens au load de l'userform le graphique souffre ( bien trop volumineux )

    perso j'aurais fait une seule image terrain et pour les intersection jouer avec les évènement du control "perso" sur sa position xy
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et me sans aller jusque la , on peut simplement gérer le déplacement dans le seul évènement keydown

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Me.perso.Tag = IIf(Val(Me.perso.Tag) = 2, 0, Val(Me.perso.Tag) + 1)
    it = IIf(perso.Tag <> 0, perso.Tag, "stand")
    Select Case KeyCode
    Case 38
    perso.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Pirate_back_" & it & ".gif"): perso.Top = perso.Top - 2
    Case 40
    perso.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Pirate_front_" & it & ".gif"): perso.Top = perso.Top + 2
    Case 37
    perso.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Pirate_left_" & it & ".gif"): perso.Left = perso.Left - 2
    Case 39
    perso.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Pirate_right_" & it & ".gif"): perso.Left = perso.Left + 2
    End Select
    End Sub

    edit
    modif
    impossible de sortir de l'usf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub UserForm_Activate()
    perso.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Pirate_front_stand.gif")
    End Sub
    Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Me.perso.Tag = IIf(Val(Me.perso.Tag) = 2, 0, Val(Me.perso.Tag) + 1)
    it = IIf(perso.Tag <> 0, perso.Tag, "stand")
    Select Case KeyCode
    Case 38
    If perso.Top > 1 Then perso.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Pirate_back_" & it & ".gif"): perso.Top = perso.Top - 2
    Case 40
    If perso.Top < Me.InsideHeight - perso.Height Then perso.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Pirate_front_" & it & ".gif"): perso.Top = perso.Top + 2
    Case 37
    If perso.Left > 1 Then perso.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Pirate_left_" & it & ".gif"): perso.Left = perso.Left - 2
    Case 39
    If perso.Left < Me.InsideWidth - perso.Width Then perso.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Pirate_right_" & it & ".gif"): perso.Left = perso.Left + 2
    End Select
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Quel langage pour développer ce jeu ?
    Par CinePhil dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 31/08/2008, 18h02
  2. Réponses: 0
    Dernier message: 26/11/2007, 14h53
  3. Développer un jeu basique
    Par Yu Chin dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 16/11/2007, 16h14
  4. Cherche Composant pour développer un jeu sous DELPHI 6 ?
    Par baltagi dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/11/2005, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo