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

VB.NET Discussion :

[mini Projet] Sodoku


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut [mini Projet] Sodoku
    Bonjour à tous
    je suis nouveau sur ce forum donc j’espère avoir posté mon sujet au bon endroit .

    Je suis étudiant au arts et métiers et dans le cadre de notre formation informatique il m'est demandé de réaliser un mini projet.
    J'ai choisis de réaliser un générateur / solver de sudoku.

    J'ai commencer par réaliser un module de génération (ci-joint) mais je rencontre quelque problème pour le rendre parfaitement fonctionnel.
    grosso-modo je généré 95% de ma grille sans problème mais
    et j'arrive à l'afficher mais il subsiste plusieurs case non générer et je ne comprend pas pourquoi.

    Je voudrais donc savoir si quelqu'un de plus expérimenté que moi pourrais jeter un coup d'oeil.

    J’espère avoir commenté suffisamment mon code. je serais ravis de donner plus amples détails.
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonjour,

    J'ai rapidement ouvert la source et je tiens à vous féliciter pour les commentaires (c'est tellement rare).
    Il manque en effet des cases, je n'ai malheureusement pas le temps d'approfondir cela maintenant, si personne n'a résolu ce problème ce soir je m'y consacrerai (ça me rappellera mes études )

  3. #3
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bon, vu la lenteur des femmes j'ai eu le temps de regarder au système, c'est l'algorithme de résolution qui est mauvais.

    On ne peut créer ligne par ligne un sudoku car il faut tenir compte des cases aussi.
    J'ai bien vu que vous en teniez compte dans le système de vérification mais a ce moment la c'est déjà trop tard.
    En effet la 1ere ligne a déjà assigné 3 valeur à la dernière case et quand on rempli la seconde ligne on doit s'assurer que les 3 valeurs déjà mise dans la dernière case seront placée avant d'y arrivé de nouveau ca qui n'est pas le cas avec un random, et vu qu'un petit schéma vaut mieux qu'un long discours, le voici :


    Le système commence en haut a gauche en plaçant des valeurs aléatoire jusqu'en bas puis passe à la deuxième ligne.
    Sur cette deuxième ligne il fait pareil mais en vérifiant que la valeur prise aléatoirement corresponde à la règle d'unicité de ligne, colonne et case sinon recherche une nouvelle valeur jusqu'a en trouver une qui corresponde à cette règle, malheureusement, dans le cas des deux dernière cellule cette règle est toujours fausse et votre système arrête de chercher pour ces cases...

    J'espère avoir été claire, je vous conseillerais de regarder des algorithmes de création de sudoku (il y en a plein sur le net )

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut
    Arg c'est la réponse que je craignais je pense que je vais arrêter d'inventer des algorithmes

    et me documenter avant de recommencer xD
    merci pour ta rapidité (sujet déjà répondus, moi meme pas levé )

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Citation Envoyé par oksaux Voir le message
    Arg c'est la réponse que je craignais je pense que je vais arrêter d'inventer des algorithmes

    et me documenter avant de recommencer xD
    Bah c'est toujours bien d'essayer de le faire par sois même la première fois car ca oblige à essayer de bien comprendre la problématique, après s'être trompé on comprend mieux le fonctionnement d'un système et il reste beaucoup mieux dans la mémoire... Après se documenter est indispensable, j'avais fait à l'époque de mes études un jeux de dame avec intelligence artificielle et pour pouvoir mener à bien se projet j'avais lu un livre sur l'IA, résultat, une belle démonstration au prof des parcours d'arbre avec mode pas à pas dans l'interface pour montrer les solutions que parcourait l'IA...


    Citation Envoyé par oksaux Voir le message
    merci pour ta rapidité (sujet déjà répondus, moi meme pas levé )
    En même temps à 1h01 du matin moi je dormais vive les étudiants, ils vivent à l’envers

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut
    ouai la vie d’étudiant

    je bosse sur un algorithme que j'ai trouvé sur le net. je vais le refaire à ma sauce .
    prochaine version dans quelques heures.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut
    me revoilà

    bon la génération de grille c'est ok

    Maintenant j'ai un problème étrange pour l'affichage de ma grille
    Je veux afficher un nombre variable de cases
    .Ma fonction d'affichage (tout à la fin du source) marche parfaitement en pas à pas mais pas en exécution simple

    quelqu'un à une idée ?
    Fichiers attachés Fichiers attachés

  8. #8
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Cela est du au fait que les nombres aléatoire des PC ne sont pas si aléatoire que ca
    Ils sont créé en fonction du temps du PC.
    Le processeur tournant tellement vite va générer sur un même laps de temps le même nombre aléatoire si on ne donne pas de paramètre lors de la création du Random.

    Une solution est d'initialiser Random avec une valeur aléatoire, mais comment avoir une valeur aléatoire si ça ne fonctionne pas avec cette fonction?
    Ben moi je prend le HashCode d'un objet newobjet.GetHashCode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Public Function ValeurAleatoire(ByVal BorneInf As Integer, ByVal BorneSup As Integer) As Integer
            Dim r1 As New Random
            Dim r As New Random(r1.GetHashCode)
            ValeurAleatoire = r.Next(BorneInf, BorneSup + 1)
        End Function
    Simple et efficace...

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut
    ok merci ça tourne nickel
    c'est la ou je me rend compte qu'il me manque pas la de théorie sur le fonctionnement des fonctions

    Bon bah la suite à ma prochaine incompréhension

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut
    nouvelle question

    comment je peu me démerder pour capter une modification sur l'une de mes 81 textbox?

  11. #11
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Dans la boucle des controles, il faut lier l'évènement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     For Each element In Me.Controls
                If Microsoft.VisualBasic.Left(element.name, 7) = "TextBox" Then
                    AddHandler CType(element, TextBox).TextChanged, AddressOf TextBox_TextChanged
    '....

    et créer la méthode qui gère le clique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private Sub TextBox_TextChanged(sender As System.Object, e As System.EventArgs)
            Debug.WriteLine("TextChanged sur le textBox ayant pour nom : " & CType(sender, TextBox).Name)
            ' Reste du traitement ici ...
        End Sub
    Je serais toi, je ne ferais la liaison qu'une seul fois au lancement de l'application au sinon tu va avoir des problèmes que la méthode va être appelée plusieurs fois (une fois par liaison).
    En même temps, j'en profiterais pour mettre une seul fois chaque controle dans un tableau comme cela se ne sera fait qu'une seul fois sur l'application et je mettrais ce tableau de composant (textBox ici) en variable global.

    N'hésite pas si tu as des questions...

  12. #12
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Je viens de me rendre compte qu'il y a plus propre que se que je t'ai dit

    En remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Public Function ValeurAleatoire(ByVal BorneInf As Integer, ByVal BorneSup As Integer) As Integer
            Dim r1 As New Random
            Dim r As New Random(r1.GetHashCode)
            ValeurAleatoire = r.Next(BorneInf, BorneSup + 1)
        End Function
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        ' Variable globale initialisée qu'une seul fois...
        Private As New Random()
        Public Function ValeurAleatoire(ByVal BorneInf As Integer, ByVal BorneSup As Integer) As Integer
            ValeurAleatoire = r.Next(BorneInf, BorneSup + 1)
        End Function
    Du coup la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Public Function ValeurAleatoire(ByVal BorneInf As Integer, ByVal BorneSup As Integer) As Integer
    n'a plus de raison d'être puisque dans ton code il te suffit de faire

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut
    merci pour l'aide et ton implication pour la peine
    nouvelle version utilisable

    génération de grille gestion basique de la difficulté
    une fonction aide basique
    une gestion partiel de la saisie

    la je bosse sur une fonction permettant de résoudre des sudoku importé
    Fichiers attachés Fichiers attachés

  14. #14
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Fait en sorte que quand on appuie sur "Clear", il enlève aussi l'image de résolution que l'on puisse rejouer.
    Bonne merde pour la suite

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

Discussions similaires

  1. Comment organiser un mini projet en C
    Par leCcsympas dans le forum C
    Réponses: 8
    Dernier message: 11/12/2006, 20h13
  2. mini projet en JSF
    Par solawe dans le forum JSF
    Réponses: 6
    Dernier message: 17/11/2006, 00h53
  3. [Projet] Idée de mini-projet?
    Par Arnaud F. dans le forum Général Java
    Réponses: 15
    Dernier message: 24/05/2006, 06h11
  4. [2D] Mini-projet : question pour une interface graphique
    Par kitsune dans le forum Développement 2D, 3D et Jeux
    Réponses: 15
    Dernier message: 10/03/2006, 14h59
  5. [Socket][mini-projet] Quelques questions
    Par Baptiste Wicht dans le forum Entrée/Sortie
    Réponses: 22
    Dernier message: 22/12/2005, 17h16

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