|
compound = TOP , command = create_song ) button.pack ( ) 可以 這樣 設定 視窗 的 顏色 : window.configure ( bg="MediumPurple1" ) 還可以 這樣 設定 標籤 的 顏色 :red_label = Label ( window , text=' 紅色 的 東西 , 例如 玫瑰 :' , bg="MediumPurple1" , fg= 'black' , ) 如果 需要 在 應用 程式 上 加 一點 空間 , 可以 像 這樣 加入 空白 標籤 :top_label = Label ( window , text='' , bg="MediumPurple1" ) top_label .pack ( ) 紅色 的 東西 , 例如 玫瑰 : 知更鳥 藍色 的 東西 , 例如 紫羅蘭 : 手套 你 喜歡 的 東西 , 例如 小 狗 : 小 貓 動詞 , 例如 唱歌 : 跳舞 產生 歌詞 玫瑰 是 __UNDEF__ 紅色 __UNDEF__ 的 手套 是 __UNDEF__ 藍色 __UNDEF__ 的 我 喜歡 __UNDEF__ 小 貓 但 我 更 喜歡 跟 你 一起 __UNDEF__ 跳舞 __UNDEF__ ! 實驗 3: 打造 投票 應用 程式 寫出 一 個 應用 程式 讓 使用 者 按 按鈕 來 做 投票 的 選擇 , 並 更新 計票 。 例如 可以 用 投票 應用 程式 來 判斷 一 個 人 是 狗派 還是 貓派 。 這 個 程式碼 類似 本 章 遊戲 裡 的 分數 更新 。 你 是 貓派 ? 你 是 狗派 ? 貓派 人數 = 狗派 人數 = 蜘蛛 生存 遊戲 你 可以 躲過 蜘蛛 多久 ? 時間 : 0 關卡 : 1 實驗 4: 打造 街機 風格 生存 遊戲 修改 和 擴充 糖果 怪獸 遊戲 成為 「 蜘蛛 生存 遊戲 」 , 讓 使用 者 不 是 接住 而是 閃躲 物件 ( 蜘蛛 ) 。 遊戲 的 目標 是 存活 最 長 時間 ; 底部 的 計分欄 會 顯示 已經 存活 的 秒數 。 和 之前 一樣 , 遊戲 的 難度 由 物件 速度 隨 時間 增加 來 提升 。 以下 是 需要 做 的 修改 : 給 玩家 新 角色 ; 例如 可以 用列 於 第138 頁 的 網站 提供 的 火柴人 GIF 檔案 , 並 變更 程式碼 來 使用 這 個 圖片 。 player_image = PhotoImage ( file="stickfigure.gif" ) mychar = canvas .
create_image ( 200,360 , image = \player_image ) 用 蜘蛛 圖片 取代 用來 產生 糖果 的 畫布 物件 。 把 這 個 程式碼 放 在 make_spiders 函式 外面 ( make_candy 函式 的 另 一 個 版本 ) 。 spider_image = PhotoImage ( file="spider .
gif" ) 把 以下 用 在 make_spiders 函式 裡面 : yposition = random .
randint ( 1,400 ) spider = canvas. create_ \image ( 0, yposition , image = spider_image ) # 把 蜘蛛 加入 清單 spider_list .
append ( spider ) 我們 需要 再 加入 以下 的 程式碼 , 讓 使用 者 可以 往 四 個 方向 移動 , 同時 不能 跑出 邊緣 。 把 以下 加入 check_input: if key == "Up": move_direction = "Up" elif key == "Down": move_direction = "Down" 變更 讓 move_character函式 使用 所有 方向 並 檢查 邊緣 :def move_character ( ) : if move_direction == "Right" and canvas. \coords ( mychar ) [0] < 400: canvas.move ( mychar , 10,0 ) if move_direction == "Left" and canvas. \coords ( mychar ) [0] > 0 : canvas.move ( mychar , -10,0 ) if move_direction == "Up" and canvas. \coords ( mychar ) [1] > 0 : canvas.move ( mychar , 0 , -10 ) if move_direction == "Down" and canvas. \coords ( mychar ) [1] < 400: canvas.move ( mychar , 0,10 ) window .
after ( 16 , move_character ) 變更 移動 , 讓 蜘蛛 出現 在 左邊 並 往 右 移動 。 注意 , 蜘蛛 在 到達 邊緣 後 不會 回來 。 # 函式 把 蜘蛛 從 左 向 右 移動 def move_spider ( ) : # 用 迴圈 跑過 清單 並 變更 x 位置 for spider in spider_list: canvas.move ( spider , spider_speed , 0 ) window.after ( 50 , move_spider ) 變更 分數 更新 的 方式 , 讓 它 每 秒 更新 一 次 , 而 非 等待 有 接觸 時 。 實驗 5: 雙人 遊戲 以及 更多 理解 寫成 其中 一 種 遊戲 的 程式碼 後 , 就 可以 擴充 遊戲 , 例如 : ● 把 蜘蛛 生存 遊戲 變成 過 馬路 遊戲 , 只有 在 玩家 通過 畫面 、 避開 蜘蛛 或 其他 物件 , 並 安全 抵達 終點 圖示 時 更新 分數 。 ● 寫 一 個 尋 寶 遊戲 讓 使用 者 到處 移動 蒐集 寶物 並 閃避 敵人 。 當 玩家 到達 傳送門 圖示 , 變更 背景 和 物件 來 構成 新 的 關卡 。 ● 用 放置 畫布 中央 的 畫布 圖片 物件 來自 訂 圖片 或 新增 背景 圖片 到 視窗 。 ● 把 這些 遊戲 變成 雙人 遊戲 。 例如 在 蜘蛛 生存 遊戲 用 不同 圖片 建立 另 一 個 用 WASD 按鍵 控制 的 玩家 。 在 底端 顯示 兩 個 玩家 的 分數 。 ● 加入 在 按下 空白鍵 時 發射 雷射 或 飛彈 的 功能 。 你 可以 建立 一 個 從 玩家 出發 的 新 畫布 物件 , 並 把 它 加到 新 的 雷射 清單 , 接著 排程 一 個 函式 來 移動 雷射 清單 裡 的 項目 , 並 檢查 是否 擊中 遊戲 中 其他 項目 。 邀請 親朋好友 來 鑑賞 你 的 程式 設計 技巧 並 測試 應用 程式 和 遊戲 , 取得 可以 用來 進一步 改善 你 的 專題 的 意見 回饋 。 你 還可以 做 什麼 ? 學會 在 Python 寫 這些 專題 的 程式 後 , 接下來 呢 ? 以下 是 幾 種 讓 你 運用 新 技能 和 拓展 Python 程式 設計 知識 的 方式 。 Python 搭配 micro:bit 進行 實體 運算 :LED 編程 、 馬達 、 喇叭 等 micro: bit 是 一 種 平價 的 小型 電腦 ( 由 微 控制器 驅動 ) , 可以 用 Micro Python ( 針對 微 控制器 的 Python 版本 ) 編寫 程式 。 你 可以 在 microbit .
org 線 上 使用 Micro Python , 或 下載 編輯器 , 例如 : Mu ( codewith.mu ) 。 Python 程式碼 可以 控制 LED ( 發光 二極體 ) 、 馬達 、 喇叭 和 做 很多 其他 事情 。 以下 是 一 個 簡單 的 Python 程式碼 範例 , 用來 在 按下 按鈕 A 時 點亮 LED 並 顯示 打勾 , 接著 在 按下 按鈕 B 時 關掉 LED 並 顯示 打叉 。 另外 , 在 搖晃 micro : bit 時 , 它 會 顯示 1 到 6 的 隨機數 ( 即 數位 骰子 的 功能 ) 。 你 可以 用 像 這樣 的 micro:bit 專題 來 打造 自己 的 遊戲板 或 其他 應用 。 from microbit import *import randompin1. write_digital ( 0 ) # 關燈 display.show ( Image.NO ) while True: # 不斷 重複 if accelerometer.was_gesture ( "shake" ) : roll = random.randint ( 1,6 ) display.show ( str ( roll ) ) # 顯示 隨機數 elif button_a.is_pressed ( ) : display.show ( Image.YES ) pin1.write_digital (1 ) # 開燈 elif button_b.is_pressed ( ) : display.show ( Image.NO ) pin1 .
write_digital (0) # 關燈 按下 按鈕 A 點亮 LED 並 顯示 打勾 按下 按鈕 B 關掉 LED 並 顯示 打叉 可能 要 視 LED 類型 在 此 加裝 電阻 +ve ( 長腳 ) , 連接到 第1 腳位 -ve ( 短腳 ) , 連接到 GND 在 Raspberry Pi 使用 Python Raspberry Pi 是 平價 的 小型 通用 電腦 , 內 建有 Python 3 。 除了 在 Raspberry Pi 執行 本 書 的 所有 Python 專題 , 你 可以 把 它 的 GPIO ( 通用 輸入 / 輸出埠 ) 連接到 LED 、 馬達 、 喇叭 等 裝置 來 進行 實體 運算 。 你 也 可以 用 Sense Hat 等 擴充板 來 擴充 Raspberry Pi 。 以下 的 例子 是 用 Python 控制 連接到 Raspberry Pi 的 LED 和 按鈕 。 from gpiozero import LED , Buttonled = LED (17 ) button = Button ( 2 ) while True: if button.is_pressed: led.on ( ) else: led.off ( ) __UNDEF__ 實體 運算 及 Maker 運動 micro:bit 和 Raspberry Pi 在 Maker ( 創客 ) 運動 中 很 受 歡迎 ,
|