Python 入門指南 5.0
exercise2910.py
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 | # 從 exercise2503 引入 DiceUser from exercise2503 import DiceUser # 從 exercise2504 引入 DiceGame from exercise2504 import DiceGame # 從標準程式庫中引入 Tk 的所有內容 from tkinter import * # 引入 time import time # 進行遊戲的函數 def get_result(): # 暫存結果 result = [] # 玩家名稱 names = ["小明", "小美", "小黑", "小愛"] # 建立遊戲 game = DiceGame(names, 4, 500, 100, 50) result.append(f"莊家是{game.banker.name}\n") result.append(f"玩家有{names[1]}、{names[2]}、{names[3]}\n") # 設定狀態變數 state = True # 遊戲的主迴圈 while state: # 進行遊戲 game.playgame() # 印出玩家下注 for player in game.players: # 跳過莊家 if player == game.banker: continue # 逐一印出玩家擲出點數 for player in game.players: # 跳過莊家 if player == game.banker: continue else: # 重新分配賭注 if game.banker.total_points >= player.total_points: game.banker.asset += 2 * game.bet else: player.asset += 2 * game.bet # 檢測出局 for player in game.players: if player.asset == 0: result.append(f"最終{player.name}出局\n") state = False # 回傳結果 return result # 執行部分 if __name__ == '__main__': # 文字逐行顯示動畫 def update_text(): global current_line global text_lines global show_text if current_line < len(text_lines): show_text += text_lines[current_line] text_label.config(text=show_text) current_line += 1 root.after(900, update_text) # 建立 Tk 視窗 root = Tk() # 設定視窗標題 root.title("多人擲骰子模擬") # 顯示的文字資料 text_lines = get_result() # 記錄行數 current_line = 0 # 暫存顯示資料 show_text = "" # 加入視窗元件文字標籤 text_label = Label(root, text="", width="40", height="9", bg="black", fg="white", font=("SF Pro", 48)) # 使用包裹版面管理員 text_label.pack() # 呼叫文字動畫函數 update_text() # 呼叫維持視窗運作的 mainloop() root.mainloop() # 檔名: exercise2910.py # 說明:《Python入門指南》的練習 # 網站: http://kaiching.org # 作者: 張凱慶 # 時間: 2023 年 11 月 |