日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python使用tkinter實(shí)現(xiàn)搖骰子小游戲功能的代碼

瀏覽:190日期:2022-07-19 08:22:50

TKinter

Python 的 GUI 庫(kù)非常多,之所以選擇 Tkinter,一是最為簡(jiǎn)單,二是自帶庫(kù),不需下載安裝,隨時(shí)使用,跨平臺(tái)兼容性非常好,三則是從需求出發(fā)的,Python 在實(shí)際應(yīng)用中極少用于開發(fā)復(fù)雜的桌面應(yīng)用,畢竟,Python 的各種 GUI 工具包都“一般得很”,不具備優(yōu)勢(shì)。

貼吧看到的一個(gè)求助題,大致需求是:3個(gè)人搖骰子,每人搖3次,點(diǎn)數(shù)之和最大的獲勝,支持玩家名稱輸入。我覺得這個(gè)題目挺有意思的,做了個(gè)界面程序,歡迎大家交流指正~

#!usr/bin/env python# -*- coding: utf-8 -*-# author: ***# date: 2020/06/10from tkinter import *import tkinter as tkimport randomimport timefrom threading import Threadroot = Tk()root.geometry(’620x660’)root.title(’搖骰子’)sigpic = PhotoImage(file=’signature.png’)shake_cup = PhotoImage(file=’touzi/box.png’)crown = PhotoImage(file=’touzi/win.png’)readystate = 3playing = Falseused_name = set()result_dict = dict()remain = 3esv_A = StringVar()esv_B = StringVar()esv_C = StringVar()pi_list = list()for i in range(1, 7): pi = PhotoImage(file=r’touzi/t%s.png’ % i) pi_list.append(pi)def set_name(cw, ew, nw): global readystate entryV = ew.get() if entryV: if entryV in used_name: default = nw[’text’] nw.config(text='名稱已存在!') cw.config(state=tk.DISABLED) font_shake(nw, default) cw.config(state=tk.ACTIVE) else: used_name.add(entryV) nw.config(text=entryV) ew.config(state=tk.DISABLED) cw.config(state=tk.DISABLED) readystate -= 1 if readystate == 0: for i in 'ABC': eval(’play_btn_%s.config(state=tk.ACTIVE, text='第一次機(jī)會(huì)')’ % i)def throw_touzi(pw, rw, nw): global playing global remain if pw[’text’]=='第一次機(jī)會(huì)': playing = True pbStack.remove(pw) for widget in pbStack: widget.config(state=tk.DISABLED) pw.config(state=tk.DISABLED, text=’第二次機(jī)會(huì)’) elif pw[’text’]=='第二次機(jī)會(huì)': pw.config(state=tk.DISABLED, text=’第三次機(jī)會(huì)’) else: playing = False remain -= 1 pw.config(state=tk.DISABLED, text=’play’) thread = Thread(target=change_img, args=[pw, rw, nw]) thread.start()def change_img(pw, rw, nw): result_number = random.randint(1, 6) ranum_list = list() times = 5 while times: ranum = random.randint(1, 6) if ranum not in ranum_list: ranum_list.append(ranum) times = times - 1 for i in ranum_list: time.sleep(0.3) throw_label.config(image=pi_list[i-1]) time.sleep(0.3) throw_label.config(image=pi_list[result_number-1]) time.sleep(0.5) if rw[’text’] == '結(jié)果': rw[’text’] = str(result_number) else: rw[’text’] = str(rw[’text’]) + '+%s' % result_number time.sleep(0.5) rw[’text’] = eval(rw[’text’]) if pw[’text’] != 'play': pw.config(state=tk.ACTIVE) if playing == False: result_dict[nw[’text’]] = rw[’text’] for widget in pbStack: widget.config(state=tk.ACTIVE) if not remain: result_list = sorted(result_dict.items(), reverse=True, key=lambda rt: rt[1]) if result_list[0][1] == result_list[1][1]: if result_list[1][1] == result_list[2][1]: throw_winner[’text’] = '>> 平局 <<' else: winner = result_list[0][0] + ', ' + result_list[1][0] throw_winner[’text’] = 'Winner: %s' % winner else: winner = result_list[0][0] throw_winner[’text’] = 'Winner: %s' % winner throw_label[’image’] = crown reset_btn.config(state=tk.ACTIVE, text=’重新開始’, relief=’raised’)def font_shake(nw, default): nw.config(foreground=’red’) for i in range(5): if i%2 == 0: time.sleep(0.05) nw.config(anchor=’n’) else: time.sleep(0.05) nw.config(anchor=’s’) root.update() nw.config(anchor=’c’) root.update() time.sleep(0.5) nw.config(text=default, foreground=’black’)def restart(): global readystate, used_name, result_dict, remain, pbStack throw_label[’image’] = shake_cup readystate = 3 used_name = set() result_dict = dict() remain = 3 pbStack = {play_btn_A, play_btn_B, play_btn_C} reset_btn.config(state=tk.DISABLED, relief=’flat’, text=’’) for i in 'ABC': eval(’name_%s.config(text='player %s')’ % (i, i)) eval(’entry_%s.config(state=tk.NORMAL)’ % i) eval(’esv_%s.set('')’ % i) eval(’confirm_btn_%s.config(state=tk.ACTIVE)’ % i) eval(’result_%s.config(text='結(jié)果')’ % i) throw_winner[’text’] = ''box_frame_A = Frame(root)box_frame_A.grid(column=1, ipadx=3)name_A = Label(box_frame_A, text=’player A’, height=2)name_A.pack()signature_A = Label(box_frame_A, image=sigpic)signature_A.pack()play_btn_A = Button(box_frame_A, text=’play’, command=lambda : throw_touzi(play_btn_A, result_A, name_A))play_btn_A.pack(side=BOTTOM, pady=3)result_A = Label(box_frame_A, text=’結(jié)果’)result_A.pack(side=BOTTOM)entry_A = Entry(box_frame_A, textvariable=esv_A)entry_A.pack(side=LEFT, padx=5)confirm_btn_A = Button(box_frame_A, text=’確定’, command=lambda : set_name(confirm_btn_A, entry_A, name_A))confirm_btn_A.pack(side=LEFT)center_frame = Frame(root)center_frame.grid(row=1, column=1, pady=20)throw_label = Label(center_frame, image=shake_cup)throw_label.pack()throw_winner = Label(center_frame)throw_winner.pack()reset_btn = Button(center_frame, state=tk.DISABLED, relief=’flat’, command=restart)reset_btn.pack()box_frame_B = Frame(root)box_frame_B.grid(row=3, padx=10)name_B = Label(box_frame_B, text=’player B’, height=2)name_B.pack()signature_B = Label(box_frame_B, image=sigpic)signature_B.pack()play_btn_B = Button(box_frame_B, text=’play’, command=lambda : throw_touzi(play_btn_B, result_B, name_B))play_btn_B.pack(side=BOTTOM)result_B = Label(box_frame_B, text=’結(jié)果’)result_B.pack(side=BOTTOM)entry_B = Entry(box_frame_B, textvariable=esv_B)entry_B.pack(side=LEFT, padx=5)confirm_btn_B = Button(box_frame_B, text=’確定’, command=lambda : set_name(confirm_btn_B, entry_B, name_B))confirm_btn_B.pack(side=LEFT)box_frame_C = Frame(root)box_frame_C.grid(row=3, column=2, padx=10)name_C = Label(box_frame_C, text=’player C’, height=2)name_C.pack()signature_C = Label(box_frame_C, image=sigpic)signature_C.pack()play_btn_C = Button(box_frame_C, text=’play’, command=lambda : throw_touzi(play_btn_C, result_C, name_C))play_btn_C.pack(side=BOTTOM)result_C = Label(box_frame_C, text=’結(jié)果’)result_C.pack(side=BOTTOM)entry_C = Entry(box_frame_C, textvariable=esv_C)entry_C.pack(side=LEFT, padx=5)confirm_btn_C = Button(box_frame_C, text=’確定’, command=lambda : set_name(confirm_btn_C, entry_C, name_C))confirm_btn_C.pack(side=LEFT)if __name__ == ’__main__’: pbStack = {play_btn_A, play_btn_B, play_btn_C} for i in 'ABC': eval(’play_btn_%s.config(state=tk.DISABLED)’ % i) root.mainloop()

程序界面截圖:

1.初始界面

Python使用tkinter實(shí)現(xiàn)搖骰子小游戲功能的代碼

2.就緒界面

Python使用tkinter實(shí)現(xiàn)搖骰子小游戲功能的代碼

3.結(jié)果界面

Python使用tkinter實(shí)現(xiàn)搖骰子小游戲功能的代碼

總結(jié)

到此這篇關(guān)于Python使用tkinter實(shí)現(xiàn)搖骰子小游戲功能的代碼的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)搖骰子小游戲內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一级黄色| 色综合狠狠操| 国内激情久久| 伊人精品一区| 婷婷综合在线| 国产亚洲在线| 亚洲免费激情| 久久国产高清| 日韩国产欧美三级| 国产日产一区| 亚洲精品123区| 三上悠亚国产精品一区二区三区| 人在线成免费视频| 日韩毛片在线| 亚洲精品123区| 日韩一区二区三区免费视频| 国产日韩欧美三区| 国产66精品| 欧美一级精品| 日韩专区一卡二卡| 国产亚洲一卡2卡3卡4卡新区| 97久久超碰| 国产成人精品一区二区三区在线| 日本美女一区| 亚洲欧美高清| 69精品国产久热在线观看| 麻豆精品新av中文字幕| 亚洲黄色中文字幕| 国产精品毛片在线看| 日本h片久久| 欧美国产偷国产精品三区| 欧美日韩一区二区三区视频播放| 视频一区欧美日韩| 久久不见久久见国语| 四虎4545www国产精品| 蜜臀av性久久久久蜜臀aⅴ流畅 | 999国产精品| 美女精品在线观看| 国产精品nxnn| 久久中文字幕av| 亚洲ab电影| 国产一区二区三区不卡视频网站 | 亚洲精品无吗| 欧美国产精品| 国产专区一区| 欧美亚洲国产日韩| 免费福利视频一区二区三区| 亚洲欧美网站| 久久三级中文| 模特精品在线| 高清在线一区| 亚洲自啪免费| 韩国一区二区三区视频| 国产精品婷婷| 精品国产aⅴ| 丝袜美腿亚洲一区| 精品国产18久久久久久二百| 久久性天堂网| 91视频久久| 日韩三级一区| 久久一级电影| 国产精品麻豆成人av电影艾秋| 欧美日韩中文一区二区| 久久精品99久久久| 日韩亚洲精品在线| 四季av一区二区凹凸精品| 日韩精品一二三四| 国产精品蜜芽在线观看| 亚洲制服一区| 久久精品亚洲欧美日韩精品中文字幕| 日韩av一二三| 亚洲欧洲日本mm| 久久久久久自在自线| 88久久精品| 久久xxxx精品视频| 精精国产xxxx视频在线野外| 国产精品久久亚洲不卡| 免费观看在线综合| 香蕉精品久久| 国产不卡精品| 国产精品白丝av嫩草影院| 午夜在线观看免费一区| 在线亚洲人成| 国产一区二区三区成人欧美日韩在线观看| 天海翼亚洲一区二区三区| 激情欧美一区| 日韩一区三区| 国产成人精品一区二区免费看京| 日韩精品亚洲一区二区三区免费| 欧美日韩国产高清| 中文字幕在线看片| 欧美激情视频一区二区三区在线播放| 影音先锋国产精品| 蜜桃精品在线| 成人在线超碰| 鲁大师精品99久久久| 亚洲一区二区三区中文字幕在线观看| 色爱av综合网| 成人国产精品一区二区免费麻豆| 欧美日韩亚洲一区二区三区在线| 伊人久久大香伊蕉在人线观看热v| 亚洲午夜电影| 久久久蜜桃一区二区人| 天堂а√在线最新版中文在线| 精品美女在线视频| 国产精品亚洲欧美一级在线| 日本不卡一区二区三区| 中文字幕免费精品| 亚洲男女自偷自拍| 国产视频一区三区| 在线视频亚洲| 在线日韩一区| 日本在线精品| 成人看片网站| 日韩国产一区二区三区| 久久精品亚洲欧美日韩精品中文字幕| 欧美在线看片| 视频一区日韩| 蜜桃av一区二区在线观看| 婷婷色综合网| 免费视频亚洲| 亚洲福利精品| 亚洲国内精品| 日韩在线观看一区| 日韩精品dvd| 日韩电影免费网址| 精品99在线| 精品在线网站观看| 美腿丝袜在线亚洲一区| 国产高清精品二区| 久草精品视频| 成人污污视频| www.com.cn成人| 成人羞羞在线观看网站| 日本精品影院| 亚洲精品网址| 激情综合网站| av成人国产| 亚洲精品亚洲人成在线观看| 日本成人精品| 国产精品蜜月aⅴ在线| 国产精品嫩模av在线| 欧美精品不卡| 一本大道色婷婷在线| 欧美日韩视频| 中文在线日韩| 国产精品免费精品自在线观看| 国产日韩中文在线中文字幕| 91久久亚洲| 美女尤物久久精品| 91欧美精品| 麻豆国产一区| 久久久精品久久久久久96 | 99精品在线| 欧美日韩国产免费观看视频| 免费成人在线视频观看| 四虎成人精品一区二区免费网站| 欧美日本久久| 日本免费久久| 一区二区高清| 乱一区二区av| 激情综合网址| 日韩精品成人| 色偷偷色偷偷色偷偷在线视频| 欧美日韩精品一本二本三本| 中文字幕日本一区二区| 久久99国产精品视频| 欧美1区免费| 日本不卡视频在线| 激情久久99| 制服诱惑一区二区| 欧美在线看片| 日本国产精品| 日本精品一区二区三区在线观看视频| 麻豆极品一区二区三区| 国产 日韩 欧美一区| 巨乳诱惑日韩免费av| 国产精品片aa在线观看| 热三久草你在线| 综合一区二区三区| 国产一区二区视频在线看| 一区二区亚洲精品| 国产精品一卡| 亚洲在线一区| 亚洲精品电影| 69精品国产久热在线观看| 国产一区二区三区探花| 激情婷婷综合| 国产精品99久久久久久董美香| 欧美天堂视频| 日韩精品免费视频一区二区三区| 国产不卡精品在线| 免费在线观看视频一区| 精品久久91| 一区二区三区午夜视频| 日韩成人a**站| 亚洲精品麻豆| 999国产精品视频| 国产精品1区| 亚洲欧美久久久|