照著online tutorial刻了一個基本的遊戲

閱讀時間約 2 分鐘
pygame: space_invader

前言

Youtube上逛著逛著看到techwithtim的線上教學,這是一個pygame的模組練習,只是我想了解深入一點的是物件導向的寫法應用。影片大約兩小時,實際邊動手coding,一邊看著影片的講解,結果花在這上面的時間遠遠超過我的預期。當然,看別人都好像很簡單,自己寫起來總是卡東卡西,下面分別說明一下這支程式的組成吧!

問題拆解

匯入圖檔

將事先準備好的圖片資源,用pygame的語法把圖片讀取進來,包含飛船及背景。

物件控制

採用物件導向的思維去做規劃,例如:
玩家的飛船與敵方的飛船都是飛船,因此建立一個飛船的class,寫好飛船所該有的基本屬性(生命值、發射雷射、移動...),再讓玩家飛船敵方飛船去繼承飛船的class,依照個別飛船獨有的特性再另作設計。

碰撞偵測

這部份對於遊戲開發有興趣在另行深入研究。

包裝展示

  • 呈現血條
  • 開始頁面
  • 剩餘生命數
  • 遊戲難度等級

小結

以前寫程式多拿來多數據分析,用的多是照著script順序完成就好,頂多寫幾個function減少重複性操作,不像開發軟體時的思維方向。作為物件導向寫法的練習,我認為從寫個小遊戲下手是個不錯的方向,一方面完成時比較有成就感,一方面是當物件、人物、參與的對象越來越多時,不得不考慮以物件化的方式去思考,也才會明白在開始著手前規劃好各個class之間的關聯性。

avatar-img
13會員
64內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Err500 的其他內容
常常會在其他教學影片中看到if __name__ == "__main__"  的寫法,為什麼要這樣做呢?
安裝下載 在瀏覽器搜尋列上輸入python,找到官方網站後進入下方畫面。 Python 官方網站頁面 在Downloads下拉列表中,可以尋找使用者自己電腦對應的作業系統選項,而基本上旁邊會提供最新版本的選取方框,點擊並下載。
寫在前面 嚴格說起來,這是第五次閱讀這本書了。 還記得第一次在金石堂拿著這本書站在角落翻閱的時候,我還只是一個剛考上地方第一志願,趁著放長假未開學無所事事的高中新鮮人。...
大學時期,第一門給我危機感的科目,是計算機概論。科目名稱表面上是如此,實際上該叫做程式語言,而且使用的還是工科老字號語言--Fortran 77,搭配陽春的NotePad++跟Command line。
雖然已經不是第一次出國,但是去日本遊玩倒是第一次。出發前一晚還想說拿出日本語gogogo複習下基本的文型跟單字,最後還是睡飽飽養足出遊的精神。
常常會在其他教學影片中看到if __name__ == "__main__"  的寫法,為什麼要這樣做呢?
安裝下載 在瀏覽器搜尋列上輸入python,找到官方網站後進入下方畫面。 Python 官方網站頁面 在Downloads下拉列表中,可以尋找使用者自己電腦對應的作業系統選項,而基本上旁邊會提供最新版本的選取方框,點擊並下載。
寫在前面 嚴格說起來,這是第五次閱讀這本書了。 還記得第一次在金石堂拿著這本書站在角落翻閱的時候,我還只是一個剛考上地方第一志願,趁著放長假未開學無所事事的高中新鮮人。...
大學時期,第一門給我危機感的科目,是計算機概論。科目名稱表面上是如此,實際上該叫做程式語言,而且使用的還是工科老字號語言--Fortran 77,搭配陽春的NotePad++跟Command line。
雖然已經不是第一次出國,但是去日本遊玩倒是第一次。出發前一晚還想說拿出日本語gogogo複習下基本的文型跟單字,最後還是睡飽飽養足出遊的精神。
你可能也想看
Google News 追蹤
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。
Thumbnail
這一節談的是用物件導向程式設計(object-oriented programming, OOP)的方式來實作隨機漫步。
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
從基本的OOP概念、PHP基礎回顧,到類別與物件的深入探討、進階概念如繼承、介面與抽象類別,再到實戰應用與設計模式入門,最後以課程總結與未來學習資源提供作結。此課程架構確保學生能夠從基礎到進階,全面掌握PHP物件導向程式設計的核心概念與技術。
專欄簡介 你是否跟我一樣想做出屬於自己的遊戲? 不會代碼, 沒有經驗, 不會任何遊戲引擎也想進入製作遊戲的世界嗎? 此專欄會包跨 Renpy 的基礎入學教學到獨立製作出完整視覺小說 / 文字冒險遊戲也包跨自訂遊戲的外觀 UI。 除此之外也會時不時分享一些各位在遊戲創作上可以用到的資源 自我介紹 你好
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。
Thumbnail
這一節談的是用物件導向程式設計(object-oriented programming, OOP)的方式來實作隨機漫步。
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
從基本的OOP概念、PHP基礎回顧,到類別與物件的深入探討、進階概念如繼承、介面與抽象類別,再到實戰應用與設計模式入門,最後以課程總結與未來學習資源提供作結。此課程架構確保學生能夠從基礎到進階,全面掌握PHP物件導向程式設計的核心概念與技術。
專欄簡介 你是否跟我一樣想做出屬於自己的遊戲? 不會代碼, 沒有經驗, 不會任何遊戲引擎也想進入製作遊戲的世界嗎? 此專欄會包跨 Renpy 的基礎入學教學到獨立製作出完整視覺小說 / 文字冒險遊戲也包跨自訂遊戲的外觀 UI。 除此之外也會時不時分享一些各位在遊戲創作上可以用到的資源 自我介紹 你好