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
| from tkinter import messagebox
import tkinter as tk
def About () : messagebox.showinfo (title="A propos",)
def Comment_jouer () : messagebox.showinfo ("Comment jouer ?", "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.")
def create_lines_vert(canvas):
scale = 450/9
for i in range(0, 10):
if (i!=4) and (i!=7) :
canvas.create_line(i*scale, 0, i*scale, 580, width =1);
else :
canvas.create_line(i*scale, 0, i*scale, 580, width =3);
def create_lines_hor (canvas) :
scale = 450/9
for j in range (0, 10) :
if (j!=4) and (j!=7) :
canvas.create_line(0, j*scale, 580, j*scale, width = 1);
else :
canvas.create_line (0, j*scale, 580, j*scale, width = 3) ;
def create_menu(app):
menu = tk.Menu(app)
m = tk.Menu(menu)
m.add_command(label="Quitter le jeu", command=app.destroy)
menu.add_cascade (label= "Partie", menu=m)
menu.add_command(label="Comment jouer", command= Comment_jouer)
menu.add_command(label=" A propos", command = About)
app['menu'] = menu
l_case = 450/9
h_case = 450/9
def click( self, event ):
self.clickPosition( event.x, event.y )
l_case = 450/9
h_case = 450/9
case_x=int( (event.x) / l_case)
case_y= int ((event.y) / h_case)
for r in range :
centre_case_x= (case_x - 1) * l_case + l_case /2;
for c in range :
centre_case_y= (case_y -1) * h_case +h_case /2;
centre_case [(r, c)] = grid.create_text (x, y, text='0')
if (case_x==0) :
centre_case_x = l_case /2
else :
centre_case_x = (case_x-1)*l_case + l_case/2;
if (case_y==0) :
centre_case_y = h_case /2
else :
centre_case_y = (case_y -1) * h_case + h_case /2 ;
def jouer(event):
w = event.widget
value = event.keysym if event.keysym in '123456789' else ''
if value:
r, c = event.y,event.x
if (r, c) in cases:
w.itemconfigure(cases[(r, c)], text=value)
if __name__ == '__main__':
app = tk.Tk()
app.title(" Sudoku ")
create_menu(app)
grid = tk.Canvas(app, width=450, height=450, bg='SaddleBrown', bd = 55, relief="ridge")
grid.pack()
create_lines_vert(grid)
create_lines_hor (grid)
click
grid.bind( '<KeyPress>', jouer)
grid.focus_set()
app.mainloop() |