Python 入門指南 5.0
exercise4410.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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | # 從 Brython 引入 document 並以 doc 為別名 from browser import document as doc # 從 Brython 引入 window from browser import window # 引入 Point 定義 from exercise1810 import Point # 引入 Lion 定義 from exercise1812 import Lion # 引入 Elephant 定義 from exercise2901 import Elephant # 引入 Cat 定義 from exercise2902 import Cat # 引入 Mouse 定義 from exercise2903 import Mouse # 引入 move() 定義 from exercise2807 import move # 引入 bound_check() 定義 from exercise2605 import bound_check # 引入 animal_check() 定義 from exercise2809 import animal_check # 引入 get_world_string() 定義 from exercise2906 import get_world_string # 從 random 引入 randint from random import randint # 從 random 引入 choice from random import choice # 遊戲資料 user = Mouse(Point(3,0), "鼠") animals = {} animals["鼠"] = user animals["象"] = Elephant(Point(0,0), "象") animals["獅"] = Lion(Point(0,3), "獅") animals["貓"] = Cat(Point(3,3), "貓") world = [["口", "口", "口", "口"], ["口", "口", "口", "口"], ["口", "口", "口", "口"], ["口", "口", "口", "口"]] # 印出鬥獸棋棋盤 def print_world(animals_list, world): doc["display"].clear() temp_list = get_world_string(animals_list, world).split("\n") for temp in temp_list: d = doc.createElement("div") d.style.border = "none" d.style.padding = "0" d.style.margin = "0" d.style.fontSize = "3em" d.text = temp doc["display"] <= d # 初始設定 doc["button_up"].disabled = True doc["button_left"].disabled = True doc["button_right"].disabled = True doc["button_down"].disabled = True print_world(list(animals.values()), world) # 進行動物移動 def animal_move(d, animal): # 宣告全域變數 global animals, world # 進行移動 if bound_check(animal, d, world): other = animal_check(animal, list(animals.values()), d, world) if other == "口": move(animal, d) else: if other in animal.food: animals.pop(other) move(animal, d) else: animals.pop(animal.name) if animal == user: end_game() # 印出地圖 print_world(list(animals.values()), world) # 進行按鈕上 def method_up(event): animal_move("up", user) # 進行按鈕下 def method_down(event): animal_move("down", user) # 進行按鈕左 def method_left(event): animal_move("left", user) # 進行按鈕右 def method_right(event): animal_move("right", user) # 啟動遊戲 def start_game(event): doc["button_up"].disabled = False doc["button_left"].disabled = False doc["button_right"].disabled = False doc["button_down"].disabled = False doc["run"].disabled = True def animals_move(): def animate_animals(): global animals, world direction = ["up", "down", "right", "left"] animal = choice(list(animals.values())) if animal == user: pass else: animal_move(direction[randint(0, 3)], animal) print_world(list(animals.values()), world) if len(animals) == 1: window.clearInterval(animate_id) end_game() animate_id = window.setInterval(animate_animals, 400) # 結束遊戲 def end_game(): doc["run"].disabled = False doc["button_up"].disabled = True doc["button_left"].disabled = True doc["button_right"].disabled = True doc["button_down"].disabled = True # 啟動遊戲 def start_game(event): global user, animals user = Mouse(Point(3,0), "鼠") animals = {} animals["鼠"] = user animals["象"] = Elephant(Point(0,0), "象") animals["獅"] = Lion(Point(0,3), "獅") animals["貓"] = Cat(Point(3,3), "貓") doc["button_up"].disabled = False doc["button_left"].disabled = False doc["button_right"].disabled = False doc["button_down"].disabled = False doc["run"].disabled = True animals_move() # 按鈕註冊事件 doc["button_up"].bind("click", method_up) doc["button_down"].bind("click", method_down) doc["button_left"].bind("click", method_left) doc["button_right"].bind("click", method_right) doc["run"].bind("click", start_game) # 檔名: exercise4410.py # 說明:《Python入門指南》的練習 # 網站: http://kaiching.org # 作者: 張凱慶 # 時間: 2023 年 12 月 |