{"id":967444,"student_id":3760,"content":"'''\n「跳躍吧!小鳥」遊戲專案\n'''\n### ===== 載入需要的函式庫 =====\n# 載入隨機模組\nimport random\n\n# 載入遊戲模組\nimport game \n\n### ============================\n\n### ===== 建立需要的遊戲背景、角色、以及背景音樂 =====\n# 設定背景圖\ngame.set_backdrop('bg.png')\n\n# 播放背景音樂\ngame.create_sound('bgm.mp3', True)\n\n# 建立 1 號水管、2 號水管、3 號水管角色\np1 = game.create_sprite('pipes.png') \np2 = game.create_sprite('pipes.png')\np3 = game.create_sprite('pipes.png')\n\n\n# 建立地板角色 \ngd = game.create_sprite('ground.png')\n\n# 建立小鳥角色 \nbird = game.create_sprite('bird_1.png', 'bird_2.png')\n\n# 建立按鈕示意圖角色\nhint = game.create_sprite('hint.png')\n\n# 建立結束示意圖角色 \nend = game.create_sprite('gameover.png')\n\n### ====================================\n\n### ===== 初始化需要的設定 =====\n# 顯示按鈕示意圖\nhint.hidden = False\n\n# 隱藏結束示意圖\nend.hidden = True\n\n# 設定小鳥的墜落速度\nspeed = 0\n\n# 設定遊戲分數\nscore = 0\n\n# 設定決定遊戲是否開始的變數\nstart = False\n\n\n# 設定 1 號水管、2 號水管、3 號水管的初始 x 座標\np1.x = 0\np2.x = 500\np3.x = 1000\n\n### ============================\n\n\n### ===== 定義遊戲需要的功能 =====\n# 定義遊戲迴圈函式\ndef loop():\n '''\n 遊戲迴圈函式\n \n 用途:管理遊戲進行流程,此函式會不斷被執行。\n 參數:無(None)。\n 回傳值:無(None)。\n '''\n # 執行移動地板函式\n move_ground()\n\n # 執行移動水管函式,讓 1 號水管移動\n move_pipes(p1)\n # 執行移動水管函式,讓 2 號水管移動\n move_pipes(p2)\n # 執行移動水管函式,讓 3 號水管移動\n move_pipes(p3)\n\n # 執行移動小鳥函式\n move_bird()\n \n # 將目前遊戲分數顯示在畫面左上角\n game.draw_text(score, 30, 30, 'white', 60)\n\n\n# 定義移動地板函式\ndef move_ground():\n '''\n 移動地板函式\n \n 用途:在遊戲過程中,創造出地板不斷移動的效果。\n 參數:無(None)。\n 回傳值:無(None)。\n '''\n # 讓地板不斷向左移動\n gd.x = gd.x - 6\n # 判斷如果地板超出左邊我們定義的邊界\n if gd.x \u003c 0:\n # 讓地板重新移動到相對較右邊的位置\n gd.x = gd.x + 1200\n\n\n\n# 定義移動水管函式\ndef move_pipes(pipe):\n '''\n 移動水管函式\n \n 用途:在遊戲過程中,創造出水管不斷移動的效果。\n 參數:水管角色(pipe)。\n 回傳值:無(None)。\n '''\n # 宣告在此函式範圍內使用的 score 變數為全域的 score 變數\n global score\n\n # 讓水管不斷向左移動\n pipe.x = pipe.x - 6\n # 判斷如果水管超出左邊我們定義的邊界\n if pipe.x \u003c -100:\n # 讓水管重新移動到相對較右邊的位置\n pipe.x = pipe.x + 1500\n # 判斷如果遊戲已開始\n if start == True:\n # 設定水管的 y 座標為隨機 150~650 之間的數值\n pipe.y = random.randrange(150, 651)\n # 增加遊戲分數 1 分\n score = score + 1\n\n\n\n# 定義移動小鳥函式\ndef move_bird():\n '''\n 移動小鳥函式\n \n 用途:製作小鳥墜落與拍翅膀等動畫效果。\n 參數:無(None)。\n 回傳值:無(None)。\n '''\n # 宣告在此函式範圍內使用的 speed 變數為全域的 speed 變數\n global speed\n # 判斷如果遊戲已開始\n if start == True:\n # 增加小鳥的墜落速度\n speed = speed + 0.6\n # 更新小鳥的墜落速度至小鳥的 y 座標\n bird.y = bird.y + speed\n \n # 判斷目前小鳥的墜落速度是否大於 0(下墜)\n if speed \u003e 0:\n # 設定小鳥造型編號至翅膀放鬆造型的編號\n bird.costume_id = 0\n # 判斷目前小鳥的墜落速度是否小於 0(上升)\n if speed \u003c 0:\n # 設定小鳥造型編號至拍動翅膀造型的編號\n bird.costume_id = 1\n\n\n\n \n# 定義向上飛函式\ndef jump():\n '''\n 向上飛函式\n \n 用途:製作讓小鳥向上飛(移動)的功能。\n 參數:無(None)。\n 回傳值:無(None)\n '''\n # 宣告在此函式範圍內使用的 speed 變數,\n # 皆為全域的 speed 變數\n global speed\n # 宣告在此函式範圍內使用的 start,\n # 皆為全域的 start 變數\n global start\n # 設定 start 至 True 使遊戲開始\n start = True\n # 隱藏按鈕示意圖\n hint.hidden = True\n # 將小鳥的墜落速度設定為負數\n speed = -12\n # 播放向上飛音效\n game.create_sound('jump.mp3')\n\n \n# 定義結束遊戲函式\ndef gameover(target):\n '''\n 結束遊戲函式\n \n 用途:顯示遊戲結束後的各種訊息,並結束遊戲。\n 參數:被小鳥碰到的角色(target)。\n 回傳值:無(None)\n '''\n # 顯示被碰到的角色資訊在主控台中\n print(f\"碰到的角色為:{target.costumes}\")\n # 使遊戲結束\n game.stop()\n # 顯示結束示意圖\n end.hidden = False\n # 播放遊戲結束音效\n game.create_sound('gg.mp3')\n\n\n\n\n### ==============================\n\n\n### ===== 監聽各事件 =====\n# 監聽空白鍵是否被按下的事件,\n# 若發生按下空白鍵的事件,就讓小鳥跳躍\ngame.on('keydown', 'space', jump)\n\n\n# 監聽小鳥碰到其他角色的事件,\n# 若發生小鳥碰到水管或地板的事件,就結束遊戲\nbird.on('touch', [p1, p2, p3, gd], gameover)\n\n### ======================\n\n### ===== 執行遊戲迴圈 =====\n# 執行遊戲迴圈函式\ngame.forever(loop) \n### ========================\n","created_at":"2025-03-14T09:36:58.193+08:00","updated_at":"2025-03-14T11:16:50.463+08:00","name":"跳躍吧!小鳥(3 小時版) 學習版 副本","language":"python","screenshot":{"url":"https://cdn0.koding.school/uploads/project/screenshot/967444/35ca427c4643996d62ebd20dc50923fe.jpg"},"parent_id":956535,"plugin":"game.set({'width': 1200, 'height': 900})","description":null,"note":null,"status":"public","like_student_ids":[],"is_featured":false,"views":13,"hashid":"2pdspdw68","is_content_changed":false,"review_status":"unsubmitted","submitted_at":null,"reviewed_at":null,"advise":null,"is_deleted":false}
[{"id":36972692,"file_name":"hint.png","project_id":967444,"asset_id":251836,"created_at":"2025-03-14T09:36:58.199+08:00","updated_at":"2025-03-14T09:36:58.199+08:00"},{"id":36972693,"file_name":"gg.mp3","project_id":967444,"asset_id":251837,"created_at":"2025-03-14T09:36:58.200+08:00","updated_at":"2025-03-14T09:36:58.200+08:00"},{"id":36972694,"file_name":"jump.mp3","project_id":967444,"asset_id":251838,"created_at":"2025-03-14T09:36:58.201+08:00","updated_at":"2025-03-14T09:36:58.201+08:00"},{"id":36972695,"file_name":"bgm.mp3","project_id":967444,"asset_id":251839,"created_at":"2025-03-14T09:36:58.202+08:00","updated_at":"2025-03-14T09:36:58.202+08:00"},{"id":36972696,"file_name":"pipes.png","project_id":967444,"asset_id":251840,"created_at":"2025-03-14T09:36:58.203+08:00","updated_at":"2025-03-14T09:36:58.203+08:00"},{"id":36972697,"file_name":"ground.png","project_id":967444,"asset_id":251841,"created_at":"2025-03-14T09:36:58.204+08:00","updated_at":"2025-03-14T09:36:58.204+08:00"},{"id":36972698,"file_name":"gameover.png","project_id":967444,"asset_id":251842,"created_at":"2025-03-14T09:36:58.205+08:00","updated_at":"2025-03-14T09:36:58.205+08:00"},{"id":36972699,"file_name":"bird_2.png","project_id":967444,"asset_id":251843,"created_at":"2025-03-14T09:36:58.206+08:00","updated_at":"2025-03-14T09:36:58.206+08:00"},{"id":36972700,"file_name":"bird_1.png","project_id":967444,"asset_id":251844,"created_at":"2025-03-14T09:36:58.207+08:00","updated_at":"2025-03-14T09:36:58.207+08:00"},{"id":36972701,"file_name":"bg.png","project_id":967444,"asset_id":251845,"created_at":"2025-03-14T09:36:58.208+08:00","updated_at":"2025-03-14T09:36:58.208+08:00"}]
橘蘋學習平台
橘蘋學習平台
我的作品
檢視專案頁
匯出
複製
匯入
刪除
截圖
幫助
用手機掃描下方 QRCode 進行安裝
或您也可以
下載 APK
到這台電腦
1
歡迎來到橘蘋學習平台!接下來將較介紹如何使用上課介面,請耐心閱讀!
Skip
← Back
Next →