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 :

Élaboration automatique d'un jeu de domino à partir des pièces uniques [XL-2010]


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 4
    Par défaut Élaboration automatique d'un jeu de domino à partir des pièces uniques
    Bonjour à la communauté,

    Je vais essayer d'être le plus clair possible, j'essaye de trouver une logique de code qui me permette, à partir des éléments de l'image numéro n°1 (liens verts entre Entrée/Sortie et liens oranges entre Sortie/Entrée) d'automatiser la construction de l'arbre des Entrées/Sorties (image n°2). Cela me permettant de récupérer un ordre de traitement des entrées et sorties en fonction de leur position (image n°3). J'insiste sur le fait que mon but est d'automatiser le traitement et non pas de le faire analytiquement.

    Mon idée est de prendre le premier "domino" vert de la liste ("E1, S1" dans l'exemple de l'image n°1) comme base et de dérouler la logique domino (comme sur image n°2) vers la droite pour arriver jusqu'à la sortie finale (S25 dans l'exemple sur l'image n°2). En effet, pour une valeur de sortie d'un domino vert donnée, il n'y qu'un seul domino orange qui correspond. Cela permet de trouver le bout de la ficelle en somme.

    De la sortie finale, le but est de repartir vers la gauche en étant exhaustif cette fois-ci et en affectant aux entrées et sorties considérées un niveau correspondant à leur place (S25 --> niveau 1, E33 --> niveau 2, etc.). Je précise que l'ordre dans un niveau n'a aucune importance.

    J'avais aussi pensé à mettre en place un système de compteur prenant en compte le nombre de dominos à traiter car il faut que l'automatisation prenne en compte la construction et le traitement de plusieurs branches (2ème branche de l'exemple : image n°4) donc d'éviter l'oubli de dominos. Je précise que l'utilisation d'un domino dans une branche traitée antérieurement ne doit pas empêcher l'utilisation de ce même domino dans une branche future (besoin de traiter le domino dans son niveau le plus bas s'il apparaît à plusieurs niveaux).

    Quelques précisions :
    • Les cellules oranges "CU1" "CU2" et "EX" ne sont pas à traiter dans l'automatisation de l'arbre car ces infos seront récupérés via les dominos verts
    • Les cellules jaunes notifées "REPET'" indique qu'il y a répétition d'un même schéma cependant ce même schéma devra être pris en compte dans l'automatisation car son niveau peut être inférieur à un précédent



    image n°1 :
    Nom : Liste entrées sorties.PNG
Affichages : 475
Taille : 20,4 Ko

    image n°2 :
    Nom : Branche.PNG
Affichages : 416
Taille : 39,4 Ko

    image n°3 :
    Nom : Résultat.PNG
Affichages : 394
Taille : 6,8 Ko

    image n°4 :
    Nom : Autre branche.PNG
Affichages : 389
Taille : 4,6 Ko

    Mon questionnement vis à vis de la communauté est multiple. Tout d'abord, ma logique est-elle rélisable compte-tenu de mes contraintes ? Pensez-vous à une logique de code plus simple ? Plus largement ce que je veux faire est-il réalisable ?

    J'ai commencé à coder la reconnaissance des entrées et sorties notées sur les dominos afin de les assembler en partant du vert, 1er de la liste et je suis actuellement en train d'essayer de faire une boucle me permettant d'arriver à S25 dans l'exemple. Encore beaucoup de travail j'en ai conscience !

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    Sub liens()
     
    increm4 = 1
     
     
        '1ERE ITERATION
     
        Cells(200, 200) = Cells(45, 7)
     
     
            'J'ai ValsortieV = SX ou SXX
            If InStr(Cells(200, 200), ",") = 3 And Len(Cells(200, 200)) = 6 Then
            ValsortieV = Mid(Cells(200, 200), 5, 2)
            ElseIf InStr(Cells(200, 200), ",") = 3 And Len(Cells(200, 200)) = 7 Then
            ValsortieV = Mid(Cells(200, 200), 5, 3)
            ElseIf InStr(Cells(200, 200), ",") = 4 And Len(Cells(200, 200)) = 7 Then
            ValsortieV = Mid(Cells(200, 200), 6, 2)
            ElseIf InStr(Cells(200, 200), ",") = 4 And Len(Cells(200, 200)) = 8 Then
            ValsortieV = Mid(Cells(200, 200), 6, 3) 'Valeur sortie de la 1ère case verte
            End If                                   'récupérée dans ValsortieV
     
     
            'J'ai ValsortieO = SX ou SXX
            For i = 0 To Cells(43, 9) - 1 'Pour toutes les cases orange
     
            If InStr(Cells(45 + i, 9), ",") = 3 Then 'Recherche valeur de sortie orange
            ValsortieO = Mid(Cells(45 + i, 9), 1, 2)
            ElseIf InStr(Cells(45 + i, 9), ",") = 4 Then
            ValsortieO = Mid(Cells(45 + i, 9), 1, 3) 'Valeur sortie de case orange récupérée
            End If                                'dans ValsortieO
     
     
            If ValsortieO = ValsortieV Then 'Si sortie correspondante trouvée fait ça :
            Cells(200 + increm4, 200 + increm4) = Cells(45 + i, 9)
            increm4 = increm4 + 1
            End If
            Next i 'Sinon continue de chercher avec la prochaine case
     
                            'ETAT : 1ère case orange rattachée
     
     
        'N IEME ITERATION
     
     
            'J'ai ValentreeO = Ex ou EXX
            If InStr(Cells(200 + increm4 - 1, 200 + increm4 - 1), ",") = 3 And Len(Cells(200 + increm4 - 1, 200 + increm4 - 1)) = 6 Then
            ValentreeO = Mid(Cells(200 + increm4 - 1, 200 + increm4 - 1), 5, 2)
            ElseIf InStr(Cells(200 + increm4 - 1, 200 + increm4 - 1), ",") = 3 And Len(Cells(200 + increm4 - 1, 200 + increm4 - 1)) = 7 Then
            ValentreeO = Mid(Cells(200 + increm4 - 1, 200 + increm4 - 1), 5, 3)
            ElseIf InStr(Cells(200 + increm4 - 1, 200 + increm4 - 1), ",") = 4 And Len(Cells(200 + increm4 - 1, 200 + increm4 - 1)) = 7 Then
            ValentreeO = Mid(Cells(200 + increm4 - 1, 200 + increm4 - 1), 6, 2)
            ElseIf InStr(Cells(200 + increm4 - 1, 200 + increm4 - 1), ",") = 4 And Len(Cells(200 + increm4 - 1, 200 + increm4 - 1)) = 8 Then
            ValentreeO = Mid(Cells(200 + increm4 - 1, 200 + increm4 - 1), 6, 3)
            End If       'Valeur entrée de case orange dans ValentreeO
     
            For i = 0 To Cells(43, 7) - 1 'Pour toutes les cases vertes
            If InStr(Cells(45 + i, 7), ",") = 3 Then 'Recherche valeur d'entrée verte correspondante
            ValsortieO = Mid(Cells(45 + i, 9), 1, 2)
            ElseIf InStr(Cells(45 + i, 9), ",") = 4 Then
            ValsortieO = Mid(Cells(45 + i, 9), 1, 3) 'Valeur sortie de case orange récupérée
            End If                                'dans ValsortieO
            Next
     
     
     
     
     
     
    End Sub
    J'ai arbitrairement commencé la 1ère branche en cells(200, 200), la cells(43,9) correspond au nombre de domino orange à traiter et la cells(43,7) aux verts. Les listes commencent en cells(45,7) et cells(45, 9).

    Je dis d'avance merci à toute personne qui tentera de me repondre car j'ai conscience de la singularité de mon problème. Je serai ravi d'apporter des précisions si je n'ai pas été assez clair.
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à jour automatique d'un jeu
    Par Lynix dans le forum Qt
    Réponses: 15
    Dernier message: 11/04/2009, 14h15
  2. Réponses: 2
    Dernier message: 28/01/2009, 06h57
  3. Réponses: 8
    Dernier message: 19/04/2007, 10h20
  4. programmation de jeu du domino
    Par dinamed dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 26/03/2007, 09h42
  5. Projet en C - Jeu de Domino
    Par ludwig16 dans le forum C
    Réponses: 16
    Dernier message: 11/01/2006, 21h00

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