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

GUI Python Discussion :

Sudoku avec interface


Sujet :

GUI Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Points : 2
    Points
    2
    Par défaut Sudoku avec interface
    Bonsoir,
    Je fais de nouveaux appel à vous, cette fois ci pour mon projet de bac.(Merci encore pour votre aide sur les précédents programmes, cela m'a bien servi.)
    Comme précisé dans l'intitulé, je dois programmer un Sudoku avec interface.
    Ma première question est assez vaste, en fait je ne sais pas par ou commencer, j'ai une idée de la structure finale du programme, mais je ne sais pas quelle tâche effectuer en premier
    Merci d'avance

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Bienvenu dans le monde de la conception.

    Il faut déjà définir ce que ton sudoku sera capable de faire : générer des grilles automatiquement, avoir une liste de grilles prédéfinies, quels boutons sur l'interface pour démarrer / recommencer une partie, comment se fait la vérification de la grille (à la fin, au fur et à mesure), sera t-il capable de montrer les erreurs (en colorant une case, une ligne, une sous-grille), un chronomètre pour connaitre son temps de résolution, un mode original genre contre-la-montre ?

    Tu as une partie algo pour la vérification.

    Tu as une partie sur le choix du framework graphique et sa prise en main si tu n'en maitrises pas déjà un.

    Cerveau, papier, crayon, en avant ! Le code viendra plus tard.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Je dois programmer l'interface avec Tkinter.
    Je pensais partir sur une liste de grilles prédéfinies, avec 3 niveaux de difficulté(et 3 grilles par niveaux).
    Je voudrais inclure la possibilité de choisir le niveau, recommencer une nouvelle/la même partie grâce a des boutons sur l'interface.
    Je pensais à créer une zone de saisie sur l'interface également, on clique sur une case de la grille et on rentre le chiffre voulu dans la zone de saisie.
    Je voulais également que le vérification de la grille puisse se faire au fur et a mesure(mode aide) OU à la fin(mode sans aide), le choix se ferait depuis l'interface, mais je pense que dans un premier temps, il serait plus raisonnable de programmer uniquement une vérification finale.
    Voilà les premières idées, je ne me rend pas bien compte de ce qui est réalisable ou pas pour le moment,...
    Il me semble que commencer par créer les bibliothèques de grilles serait une bonne idée, je ne suis pas plus avancée...
    Je me pose pas mal de questions, a quel moment programmer l'interface(avant, après , pendant? ), par où commencer ?
    Merci pour l'aide que vous pourrez m'apporter.

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    A l'exception peut-être du mode aide qui demandera un peu de réflexion, le reste est réalisable de suite. Prend des tuto sur Tkinter, apprend à faire des boutons et à y associer des actions, à faire des zones de textes, à afficher une grille de zone de textes, etc. D'autre part, définit le modèle de données de ta grille (une matrice sans doute), fais l'algo qui prend une grille et qui vérifie si elle est correctement remplie ou pas. Regarde le patron MVC, il te sera utile : http://fr.wikipedia.org/wiki/Modèle-vue-contrôleur

    Code par étape et vérifie bien à chaque étape que tout fonctionne.

    Bon courage.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Points : 2
    Points
    2
    Par défaut Sudoku
    Bonjour, j'ai commencé par creer une interface, voila le code(désolée pour l'indentation):

    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
    from tkinter import*
    from random import*
    ecriture=("time new roman",20)
    nbcase=9
    case=50
    x0,y0=9,9
    chifre=[0,1,2,3,4,5,6,7,8,9]
     
    def fin ():
        fenetre.quit()
        fenetre.destroy()
     
    def grille():
        for i in range(nbcase+1):
            Can.create_line(x0+case*i, y0,x0+case*i,y0 + nbcase*case)
            Can.create_line(x0, y0+case*i,x0+nbcase*case ,y0+case*i)
     
     
     
     
    fenetre=Tk()
    Cadre=Frame(fenetre)
    Texte1=Label(fenetre,text="Jeu du Sudoku",fg="purple",font=ecriture)
    BoutonRcm=Button(fenetre, text="Recommencer partie")
    BoutonQuit=Button(fenetre,text="Quitter", command=fin)
    BoutonJouer=Button(fenetre,text="Jouer", command=grille)
    BoutonNvlle=Button(fenetre,text="Nouvelle partie",)
    ZoneSaisie=Text(fenetre,height=10,width=25)
    Can=Canvas(Cadre,height=500,width=500,bg="white")
     
    BoutonJouer.grid(row=200, column=50)
    BoutonRcm.grid(row=200, column=100)
    BoutonNvlle.grid(row=200, column=150)
    BoutonQuit.grid(row=200, column=200)
    Texte1.grid(row=0,column=0)
    Cadre.grid(row=1,column=0)
    Can.grid(row=2, column=0)
    ZoneSaisie.grid(row=1, column=125)
    J'aimerais savoir comment on fait pour importer des grilles prédéfinies dans mon interface, j'ai commencé par créer un fichier texte avec un seul modèle de grille pour le moment, mais je ne sais pas si c'est la bonne solution. Merci pour votre aide.

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Avant d'importer des grilles, il te faudrait définir une grille, avec une classe Grille, peut-être ? Je ne vois rien de tel dans ton code.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    J'ai pris en compte votre notification.
    Une classe grille, c'est à dire ?

  8. #8
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Oh come on!

    Tu sais ce qu'est une classe ? Si non, il serait bon de se renseigner sur la programmation orientée objet. Python permet un tel type de programmation et cela te sera forcément utile pour ton programme.

    Comment représentes-tu la grille ? Les cases avec des nombres dedans, que tu peux remplir, vider, vérifier, etc...

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    J'ai avancé comme j'ai pu , j'ai crée un fichier texte avec un exemple de grille et une fonction qui appelle ce fichier dans le programme. Je sais que ce n'est pas la meilleure solution mais je ne peux pas faire mieux. J'ai un problème je n'arrive pas à manipuler les coordonnées pour que les chiffres se place correctement dans la grille :


    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
    from tkinter import*
    from random import*
    ecriture=("time new roman",20)
    nbcase=9
    case=50
    x0,y0=9,9
    chifre=[0,1,2,3,4,5,6,7,8,9]
     
     
    def fin ():
        fenetre.quit()
        fenetre.destroy()
     
    def grille():
        for i in range(nbcase+1):
            Can.create_line(x0+case*i, y0,x0+case*i,y0 + nbcase*case)
            Can.create_line(x0, y0+case*i,x0+nbcase*case ,y0+case*i)
        ImporterGrille()
     
     
     
    def ImporterGrille():
     
        filename='exemplegrille.txt'
        fin=open(filename, 'r')
        ligne=[]
        GrilleLigne=[]
        for i in range(0,9):
            ligne.append(fin.readline())
            for j in range(0,9):
                GrilleLigne.append(Label(fenetre,text=ligne[i][j]))
                GrilleLigne[j].place(x=(j*15+(i*15)), y=i*15)
        print (GrilleLigne)
     
     
     
     
     
     
     
     
     
    fenetre=Tk()
    Cadre=Frame(fenetre)
    Texte1=Label(fenetre,text="Jeu du Sudoku",fg="purple",font=ecriture)
    BoutonRcm=Button(fenetre, text="Recommencer partie")
    BoutonQuit=Button(fenetre,text="Quitter", command=fin)
    BoutonJouer=Button(fenetre,text="Jouer", command=grille)
    BoutonNvlle=Button(fenetre,text="Nouvelle partie",)
    ZoneSaisie=Text(fenetre,height=10,width=25)
    Can=Canvas(Cadre,height=500,width=500,bg="white")
     
     
     
     
    BoutonJouer.grid(row=200, column=50)
    BoutonRcm.grid(row=200, column=100)
    BoutonNvlle.grid(row=200, column=150)
    BoutonQuit.grid(row=200, column=200)
    Texte1.grid(row=0,column=0)
    Cadre.grid(row=1,column=0)
    Can.grid(row=2, column=0)
    ZoneSaisie.grid(row=1, column=125)
     
     
     
    fenetre.mainloop()
    Merci beaucoup d'avoir répondu à mes questions.

Discussions similaires

  1. code non managé avec interface managée ...
    Par izbad dans le forum MFC
    Réponses: 6
    Dernier message: 19/12/2005, 16h36
  2. Réponses: 11
    Dernier message: 08/12/2005, 13h09
  3. pbl avec interface
    Par Bason_sensei dans le forum MFC
    Réponses: 1
    Dernier message: 11/10/2005, 15h50
  4. service NT avec interface (IHM)
    Par cash3000 dans le forum Windows
    Réponses: 14
    Dernier message: 06/06/2005, 09h23
  5. Application multiplateforme avec interface graphique
    Par TNorth dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 31/01/2004, 18h55

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