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

Windows Forms Discussion :

Réalisation de la pioche au Scrabble


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Réalisation de la pioche au Scrabble
    Bonjour,

    J'ai un projet qui consiste à réaliser un Scrabble en VB. Je suis arrivé au problème de la pioche aléatoire des lettres du jeu.

    J'ai créé une fenêtre de test à laquelle j'ai joint mon code, mais elle ne fonctionne pas...

    Il faut tenir compte que chaque lettre apparaît un certain nombre de fois dans le jeu (9 lettres A, 2 lettres B, 1 lettre C, etc...). J'ai pour cela créé un tableau de 27 cases (il ne faut pas oublier les 2 jokers) dans lequel je stocke le nombre de lettres restantes.

    J'ai aussi créé une variable globale reste qui m'indique le nombre total de lettres restantes à piocher.

    J'ai utilisé les fonctions Randomize() et Rnd() dans une fonction RANDOM, que j'appelle au clic sur un bouton, qui affiche par la suite la lettre sortie dans un Label.

    Mais voilà : quand je lance la fenêtre, ca me la ferme immédiatement !!! oO

    Voici le code commenté :

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Public Class Test_random
     
        Dim pts(26) As Integer
        Dim reste As Integer 'nombre total de lettres restantes
     
        Sub initialisation()
     
            reste = 101 'on initialise le nombre de lettres restantes 
            '(101 car pour la fonction RANDOM() on ajoutera 1 à ce nombre)
     
     
            'Tableau pts : nombre de lettres dans le jeu
     
            pts(0) = 9 'lettre A
            pts(1) = 2
            pts(2) = 2
            pts(3) = 3
            pts(4) = 15
            pts(5) = 2
            pts(6) = 2
            pts(7) = 2
            pts(8) = 8
            pts(9) = 1
            pts(10) = 1
            pts(11) = 5
            pts(12) = 3
            pts(13) = 6
            pts(14) = 6
            pts(15) = 2
            pts(16) = 1
            pts(17) = 6
            pts(18) = 6
            pts(19) = 6
            pts(20) = 6
            pts(21) = 2
            pts(22) = 1
            pts(23) = 1
            pts(24) = 1
            pts(25) = 1 'lettre Z
            pts(26) = 2 'JOKERS
     
        End Sub
     
        Function RANDOM() As Char
     
            Dim i, somme, numero_lettre As Integer
            Dim lettre_tiree As Char
     
            'initialisation du générateur de nombres aléatoires
            Randomize()
     
            'on obtiendra un nombre compris entre 1 et 102 (ou valeur de la variable reste)
            numero_lettre = CInt(Int(reste * Rnd() + 1))
     
            somme = 0 'on initialise la somme, qui va recherche la lettre qui correspond à numero_lettre
            i = 0 'initialisation de la variable i, qui correspond à la ième case de pts : la lettre dont le code ASCII est i+65
     
     
            'on parcourt le tableau en modifiant au fur et à mesure la valeur de somme
            'quand la variable somme est assez proche de numero_lettre, on sort de la boucle
            While (somme < numero_lettre)
                somme = somme + pts(i)
                i = i + 1
            End While
     
            'modification du nombre de lettres restantes
            pts(i) = pts(i) - 1
            reste = reste - 1
     
            'lettre_tiree reçoit le code ASCII qui correspond à la lettre retenue
            lettre_tiree = Chr(i + 65)
     
            Return lettre_tiree
     
        End Function
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            'clic sur le bouton : affichage de la lettre à l'aide de la fonction RANDOM()
            Label1.Text = RANDOM()
     
        End Sub
     
    End Class
    J'ai beau lire et relire mon code, je ne vois pas où se trouve l'erreur ! Peut-être est-ce bêtement dans mes paramètres de fonction ou dans ma boucle while... Je n'arrive pas à voir :s

    Si quelqu'un pouvait m'aider, je lui en serais très reconnaissant !

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Si ta fenêtre se ferme au clic du bouton, vérifie en design que tu n'as pas associé un DialogResult au bouton, cela expliquerait le comportement.
    Pas de questions techniques par MP

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je n'ai pas mis de DialogResult sur ce bouton. Dès que je clique dessus, j'ai un message d'erreur qui ferme ma fenêtre...


  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Ah ! Il fallait le dire que tu avais une fenêtre d'erreur, ça change tout. Mets un try/catch afin de récupérer les exceptions, tu devrais avoir plus d'infos de cette manière
    Pas de questions techniques par MP

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Apparament la fonction ne reçoit ni le tableau pts ni la variable reste. J'ai fait 2 MsgBox de test où j'affiche le nombre de lettres restantes (reste) à la fin de la fonction puis le nombre de lettres A restantes (pts(0)) et ça m'affiche... -1 et... -1



    ...

    J'ai essayé de passer pts et reste en paramètres, mais rien à faire...

  6. #6
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Question con, mais tu as bien pensé à appeler initialisation avant que la pioche ne démarre ? Vu les valeurs ça collerait.
    Pas de questions techniques par MP

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Et m****... >< en effet j'avais complètement zappé !!! oO

    Fiouuu !! Merci !! ça marche

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

Discussions similaires

  1. msi ou comment réaliser un installeur?
    Par herzleid dans le forum Delphi
    Réponses: 11
    Dernier message: 09/04/2007, 19h27
  2. Réaliser un Chat avec support IP
    Par Sub0 dans le forum Développement
    Réponses: 12
    Dernier message: 14/07/2006, 10h59
  3. Comment réaliser des modèles de documentations avec XML ?
    Par Dams76 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 29/08/2003, 02h15
  4. [Radio fréquence] réalisation d'une application
    Par WriteLN dans le forum Développement
    Réponses: 14
    Dernier message: 05/06/2003, 14h36
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

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