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
| def cb_level1():
size = (5,5)
nb_mine = 5
generate(size,nb_mine)
# ------------------------------------------------------------------------------
def cb_level2():
size = (10,10)
nb_mine = 10
generate(size,nb_mine)
# ------------------------------------------------------------------------------
def cb_level3():
size = (20,20)
nb_mine = 20
generate(size,nb_mine)
# ------------------------------------------------------------------------------
def generate(size, nb_mine):
# ----------------------------------------------------------------------------
for n in range(size[0]*size[1]):
c = divmod(n, size[1])
root[c] = Button(root[2], font=fnt, width=3, height=1,command=lambda cell=c: cb_cell(cell))
root[c].grid(column=c[0], row=c[1], sticky=N+E+W+S)
for n in range(size[0]): root[2].columnconfigure(n, weight=1)
for n in range(size[1]): root[2].rowconfigure(n, weight=1)
# ----------------------------------------------------------------------------
root[0].title("Mine"); root[0].update_idletasks()
root[0].minsize(root[0].winfo_width(), root[0].winfo_height())
root[0].resizable(1,1); root[0].protocol("WM_DELETE_WINDOW", root[0].quit)
root[0].mainloop(); root[0].destroy()
for n in range(size[0]*size[1]):
cell = divmod(n,size[1]);
root[cell]['text'] = ''
if size == (5,5):
nb_mine = 5;
if size == (10,10):
nb_mine = 20;
if size == (20,20):
nb_mine = 30;
# ------------------------------------------------------------------------------
def cb_reset():
"""callback function for the "RESET" button"""
global goal , goal2
goal = (randrange(size[0]), randrange(size[1]))
goal2 = (randrange(size[0]), randrange(size[1]))
for n in range(size[0]*size[1]):
cell = divmod(n,size[1]);
root[cell]['text'] = ''
# ------------------------------------------------------------------------------
def cb_help():
"""callback function for the "HELP" button"""
msg = """Indicate mines putting flags around"""
tkMessageBox.showinfo("HELP", message=msg)
# ------------------------------------------------------------------------------
def cb_cell(cell):
"""callback function for each cell of the board"""
"""if nb_mine(cell) == 0: # mine has been found => image explosion"""
for n in range(size[0]*size[1]):
cell = divmod(n, size[1]);
root[cell]['text'] = nb_mine(cell)
# ------------------------------------------------------------------------------
def nb_mine(cell):
"""change color of 'cell' according to distance from goal"""
dist = abs(goal[0]-cell[0]) + abs(goal[1]-cell[1])
dist2 = abs(goal2[0]-cell[0]) + abs(goal2[1]-cell[1])
return dist, dist2
# ------------------------------------------------------------------------------
def main():
"""main program of the "mine" module"""
global root, fnt
""",size, goal, goal2"""
"""images = [PhotoImage(file='smiley1.gif')]"""
fnt= "Arial 12"
root = {0: Tk()}
"""goal,goal2 = (randrange(size[0]), randrange(size[1])),(randrange(size[0]), randrange(size[1]))"""
# ----------------------------------------------------------------------------
root[1] = Frame(root[0])
root[1].pack(side=TOP, fill=BOTH, padx=2, pady=2)
root[11] = Button(root[1],font=fnt, width=9, text='RESET', command=cb_reset)
root[11].pack(side=LEFT, fill=BOTH,padx=5, pady=5)
root[121] = Button(root[1],font=fnt, width=8, text='LEVEL 1', command=cb_level1)
root[121].pack(side=LEFT, fill=BOTH,padx=5, pady=5)
root[122] = Button(root[1],font=fnt, width=8, text='LEVEL 2', command=cb_level2)
root[122].pack(side=LEFT, fill=BOTH,padx=5, pady=5)
root[123] = Button(root[1],font=fnt, width=8, text='LEVEL 3', command=cb_level3)
root[123].pack(side=LEFT, fill=BOTH,padx=5, pady=5)
root[13] = Button(root[1],font=fnt, width=9, text='HELP', command=cb_help)
root[13].pack(side=LEFT, fill=BOTH,padx=5, pady=5)
root[2] = Frame(root[0])
root[2].pack(side=TOP, fill=BOTH, expand=YES, padx=2, pady=2)
# ------------------------------------------------------------------------------
if __name__ == "__main__":
main()
# ============================================================================== |
Partager