用户:L0_0查看:0 回复:0 评论:0 创建时间:2021-03-02T22:00:46
【作品展示】

【作品介绍】
我使用了tkinter的Menu
【作品源代码】
import random
from tkinter import Tk, Menu, Label, Button, messagebox
root = Tk()
root.title('顺序点击')
root.resizable(width=False, height=False)
over = False
move_number = []
def show_symbols(x, y):
global over
global first
global moves
global shortest_time
global shortest_move
moves += 1
button[x, y]['text'] = button_symbols[x, y]
move_number.append(button[x, y]['text'])
if not first:
if move_number[-1] != move_number[-2]:
if move_number[-1] - 1 == move_number[-2]:
a = 0
for i in range(25):
if button[i%5, i//5]['text'] != '':
a += 1
if a == 25:
over = True
if shortest_time != None:
if shortest_time > times:
shortest_time = times
else:
shortest_time = times
if shortest_move != None:
if shortest_move > moves:
shortest_move = moves
else:
shortest_move = moves
messagebox.showinfo('顺序点击', '恭喜!\n用时: ' + str(times) + '\n点击次数: ' + str(moves))
for i in range(25):
button[i%5, i//5]['state'] = 'disabled'
else:
for i in range(25):
button[i%5, i//5]['text'] = ''
first = True
else:
del move_number[-1]
moves -= 1
elif first:
if button[x, y]['text'] != 1:
button[x, y]['text'] = ''
return
else:
first = False
previousX = x
previousY = y
move_text['text'] = '移动: ' + str(moves)
first = True
button = {}
button_symbols = {}
symbols = [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]
random.shuffle(symbols)
times = 0
moves = 0
def new_game():
global over
global first
global times
global moves
global button
global symbols
global move_number
global button_symbols
move_text['text'] = '移动: 0'
time_text['text'] = '⏲: 0'
over = False
first = True
times = 0
moves = 0
move_number = []
random.shuffle(symbols)
button_symbols = {}
for i in range(25):
button[i%5, i//5]['state'] = 'normal'
button[i%5, i//5]['text'] = ''
button_symbols[i%5, i//5] = symbols[i]
start_hint()
move_text = Label(root, width=27, height=3, text='移动: 0', anchor='w')
move_text.grid(column=2, columnspan=3, row=0)
time_text = Label(root, width=18, height=3, text='⏲: 0', anchor='w')
time_text.grid(columnspan=2, row=0)
shortest_time = None
shortest_move = None
def show_hint():
messagebox.showinfo('玩法', '点击一个方块,如果从1点到25,就能过关,如果点错了,就要重新来。首先你要记住方块的数字,看法是前5个是第1行的内容,第6~第10个是第2行,以此类推')
def show_record():
messagebox.showinfo('纪录', '最短时间: ' + str(shortest_time) + '秒\n最少步数: ' + str(shortest_move) + '步')
Menubar = Menu(root)
root.config(menu=Menubar)
fileBar = Menu(Menubar, tearoff=0)
fileBar.add_command(label='玩法', command=show_hint)
fileBar.add_command(label='新游戏', command=new_game)
fileBar.add_separator()
fileBar.add_command(label='纪录', command=show_record)
Menubar.add_cascade(label='玩游戏', menu=fileBar)
def time_append():
global times
if not over and moves != 0:
times += 1
time_text['text'] = '⏲: ' + str(times)
root.after(1000, time_append)
for i in range(25):
b = Button(root, width=9, height=3, command=lambda x=i%5, y=i//5: show_symbols(x, y))
b.grid(column=i%5, row=i//5+1)
button[i%5, i//5] = b
button_symbols[i%5, i//5] = symbols[i]
def start_hint():
messagebox.showinfo('记住它', symbols)
start_hint()
root.after(1000, time_append)
root.mainloop()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn