猫史档案馆


【Python作品分享】顺序点击【作品秀】

用户:L0_0L0_0查看:0 回复:0 评论:0 创建时间:2021-03-02T22:00:46


【作品展示】

center_image

 

【作品介绍】

我使用了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


回复

上一页1 页 / 共 0下一页