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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import tkinter
import random
from numpy import *
ecriture=("comic sans ms",13)
nbcase=9
case=50
x0,y0=9,9
chiffre=[0,1,2,3,4,5,6,7,8,9]
Mafenetre = Tk()
Mafenetre.title("Jeu du sudoku")
cases = dict()
cases=zeros((9,9),'i')
def grille():
continuer=1
while continuer==1:
i=int(input("Ligne ? (0 à 8) "))
if i<0 or i>8:
i=int(input("Ligne ? (0 à 8) "))
j=int(input("Colonne ? (0 à 8) "))
if j<0 or j>8:
j=int(input("Colonne ? (0 à 8) "))
m=int(input("Valeur ? (1 à 9) "))
if m<1 or m>9:
m=int(input("Valeur ? (1 à 9) "))
cases[j,i] = m;
continuer=int(input("Continuer ? 1 pour Oui, 0 pour Non "))
r=1
c=1
for r in range(nbcase):
x = x0 + case * r + case // 2
for c in range(nbcase):
y = y0 + case * c + case // 2
if cases[r, c]!=0:
cases[r, c] = Can.create_text(x, y, text=cases[r,c])
else:
cases[r, c] = Can.create_text(x, y, text='')
def jouer(event):
w = event.widget
value = event.keysym if event.keysym in '123456789' else ''
if value:
r, c = correspond(event.y,event.x)
if (r, c) in cases:
w.itemconfigure(cases[(r, c)], text=value)
def correspond(x,y):
return [(y-y0)/c,(x-x0)/c]
def Apropos():
tkinter.messagebox.showinfo("A propos","Tutorial Python Tkinter\n(C) Fabrice Sincère")
def Règles():
tkinter.messagebox.showinfo("Règles","Un sudoku classique contient neuf lignes et neuf colonnes, donc 81 cases au total. Le but du jeu est de remplir ces cases avec des chiffres allant de 1 à 9 en veillant toujours à ce qu'un même chiffre ne figure qu'une seule fois par colonne, une seule fois par ligne, et une seule fois par carré de neuf cases.\nAu début du jeu, Des chiffres sont déjà placés et il vous reste à trouver les autres. En effet, une grille initiale de sudoku correctement constituée ne peut aboutir qu'à une et une seule solution.")
def Résolution():
tkinter.messagebox.showinfo("Résolution","VOIR AVEC PIERRE-FRANCOIS")
def Quitter():
Mafenetre.destroy()
Cadre=Frame(Mafenetre)
TexteC=Text(Mafenetre,height=25,width=25)
Can=Canvas(Cadre,height=500,width=500,bg="white")
Can2=Canvas(highlightthickness= 3)
Cadre.grid(row=1,column=0)
Can.grid(row=2, column=0)
TexteC.grid(row=1, column=3)
Can.bind( '<KeyPress>', jouer)
Can.focus_set()
# Création d'un widget Menu
menubar = Menu(Mafenetre)
menuNouvellePartie = Menu(menubar,tearoff=0)
menubar.add_command(label="Nouvelle Partie...", command=grille)
menuRésolution = Menu(menubar,tearoff=0)
menuRésolution.add_command(label="Grille Personelle",command=grille)
menuRésolution.add_command(label="Grille Actuelle",command=Résolution)
menubar.add_cascade(label="Résolution", menu=menuRésolution)
menurègles = Menu(menubar,tearoff=0)
menurègles.add_command(label="Règles", command=Règles)
menubar.add_cascade(label="Règles", menu=menurègles)
menuaide = Menu(menubar,tearoff=0)
menuaide.add_command(label="A propos",command=Apropos)
menubar.add_cascade(label="A propos de", menu=menuaide)
menuQuitter = Menu(menubar,tearoff=0)
menuQuitter.add_command(label="Quitter", command=Quitter)
menubar.add_cascade(label="Quitter le jeu", menu=menuQuitter)
# Affichage du menu
Mafenetre.config(menu=menubar)
# Utilisation d'un dictionnaire pour conserver une référence
gifdict={}
Mafenetre.mainloop() |
Partager