舉報

會員
Python面向對象編程:構建游戲和GUI
最新章節:
17.2 小結
本書首先介紹構建類和創建對象的基礎知識,并結合代碼講述如何將理論付諸實踐;然后討論面向對象編程的關鍵概念——封裝、多態性和繼承,包括如何使用對象管理器創建并管理多個對象,如何通過封裝對客戶端代碼隱藏對象的內部細節,如何使用多態性定義一個接口并在多個類中實現它,如何應用繼承構建現有代碼;最后講述如何構建一款帶完整的動畫和聲音的視頻游戲,從而將所有內容整合在一起。本書涵蓋了兩個功能齊全的Python代碼包,它們將加速Python中圖形用戶界面程序的開發。本書不僅適合Python開發人員閱讀,還適合計算機相關專業的師生閱讀。
- 17.2 小結 更新時間:2023-06-29 17:19:23
- 17.1.3 MVC模式的優勢
- 17.1.2 統計顯示示例
- 17.1.1 文件顯示示例
- 17.1 模型-視圖-控制器
- 第17章 設計模式及收尾
- 16.3 小結
- 16.2.3 擴展游戲
- 16.2.2 實現
- 16.2.1 游戲概述
- 16.2 構建完整的Dodger游戲
- 16.1.2 Answer對話框
- 16.1.1 Yes/No和警告對話框
- 16.1 模態對話框
- 第16章 完整的Dodger游戲
- 15.8 小結
- 15.7.3 場景之間的通信
- 15.7.2 主方法
- 15.7.1 run()方法
- 15.7 場景管理器的實現
- 15.6.4 測試場景之間的通信
- 15.6.3 向所有場景發送信息
- 15.6.2 向目標場景發送信息
- 15.6.1 從目標場景請求信息
- 15.6 場景之間的通信
- 15.5 使用場景的Rock,Paper,Scissors
- 15.4.3 一個典型場景
- 15.4.2 構建場景
- 15.4.1 主程序
- 15.4 使用場景管理器的一個示例程序
- 15.3 用于管理許多場景的場景管理器
- 15.2 狀態機的一個pygame示例
- 15.1 狀態機方法
- 第15章 場景
- 14.3 小結
- 14.2.4 示例動畫程序
- 14.2.3 公共基類PygAnimation
- 14.2.2 SpriteSheetAnimation類
- 14.2.1 Animation類
- 14.2 pygwidgets中的動畫類
- 14.1.3 將兩個類合并起來
- 14.1.2 SimpleSpriteSheetAnimation類
- 14.1.1 SimpleAnimation類
- 14.1 構建動畫類
- 第14章 動畫
- 13.6 小結
- 13.5.2 CountDownTimer
- 13.5.1 CountUpTimer
- 13.5 顯示時間
- 13.4 Timer類
- 13.3 安裝pyghelpers
- 13.2.3 通過計算經過的時間來創建定時器
- 13.2.2 定時器事件
- 13.2.1 統計幀數
- 13.2 實現定時器的3種方法
- 13.1 定時器演示程序
- 第13章 定時器
- 12.6 小結
- 12.5.2 使用非標準牌堆的游戲
- 12.5.1 Blackjack牌堆
- 12.5 其他紙牌游戲
- 12.4 使用__name__進行測試
- 12.3.2 Game對象
- 12.3.1 主程序
- 12.3 Higher or Lower游戲
- 12.2 Deck類
- 12.1 Card類
- 第12章 紙牌游戲
- 第四部分 在游戲開發中使用OOP
- 11.5 小結
- 11.4 使用slots管理內存
- 11.3.4 Balloon類和對象
- 11.3.3 氣球管理器
- 11.3.2 主程序代碼
- 11.3.1 常量模塊
- 11.3 綜合運用:氣球示例程序
- 11.2.2 將類變量用于計數
- 11.2.1 類變量常量
- 11.2 類變量
- 11.1.2 垃圾回收
- 11.1.1 引用計數
- 11.1 對象的生存期
- 第11章 管理對象使用的內存
- 10.11 小結
- 10.10 使用繼承編程的困難
- 10.9 類的層次
- 10.8 pygwidgets如何使用繼承
- 10.7 抽象類和抽象方法
- 10.6 從同一個基類繼承多個類
- 10.5.3 示例用法
- 10.5.2 DisplayMoney
- 10.5.1 InputNumber
- 10.5 現實世界的繼承示例
- 10.4 客戶端眼中的子類
- 10.3.3 測試代碼
- 10.3.2 子類Manager
- 10.3.1 基類Employee
- 10.3 Employee和Manager示例
- 10.2 實現繼承
- 10.1 面向對象編程中的繼承
- 第10章 繼承
- 9.8 小結
- 9.7 包含魔術方法的Fraction類
- 9.6 創建對象中值的字符串表示
- 9.5.6 向量示例
- 9.5.5 數學運算符的魔術方法
- 9.5.4 使用魔術方法的主程序
- 9.5.3 包含魔術方法的Rectangle類
- 9.5.2 比較運算符的魔術方法
- 9.5.1 魔術方法
- 9.5 運算符的多態性
- 9.4 pygwidgets表現出多態性
- 9.3.4 擴展模式
- 9.3.3 創建形狀的主程序
- 9.3.2 Circle類和Triangle類
- 9.3.1 Square類
- 9.3 使用pygame形狀的示例
- 9.2 編程中應用多態性的經典示例
- 9.1 向現實世界的對象發送消息
- 第9章 多態性
- 8.9 小結
- 8.8 抽象
- 8.7 一個真實的故事
- 8.6 pygwidgets類中的封裝
- 8.5 裝飾器和@屬性
- 8.4.2 更加顯式地私有
- 8.4.1 隱式私有
- 8.4 使實例變量更加私密
- 8.3.3 安全的直接訪問
- 8.3.2 嚴格解釋getter和setter
- 8.3.1 直接訪問方式以及為什么應該避免使用這種方式
- 8.3 封裝的含義
- 對象擁有自己的數據
- 8.2 對象的封裝
- 8.1 函數的封裝
- 第8章 封裝
- 第三部分 封裝、多態性和繼承
- 7.4 小結
- 7.3 一致的API的重要性
- 7.2.7 pygwidgets示例程序
- 7.2.6 其他pygwidgets類
- 7.2.5 文本輸出和輸入
- 7.2.4 添加按鈕、復選框和單選按鈕
- 7.2.3 添加圖片
- 7.2.2 總體設計方法
- 7.2.1 設置
- 7.2 pygwidgets包
- 7.1.5 GUI小部件中的默認值
- 7.1.4 選擇關鍵字和默認值
- 7.1.3 使用None作為默認值
- 7.1.2 關于關鍵字形參的一些說明
- 7.1.1 位置和關鍵字形參
- 7.1 向函數或方法傳遞實參
- 第7章 pygame GUI小部件
- 6.7 小結
- 6.6.2 對SimpleButton使用回調函數
- 6.6.1 創建回調函數
- 6.6 回調函數
- 6.5 對比接口與實現
- 6.4 包含SimpleText和SimpleButton的彈球示例
- 6.3.2 創建SimpleText類
- 6.3.1 顯示文本的步驟
- 6.3 構建可重用的、面向對象的文本顯示
- 6.2.3 創建包含多個按鈕的程序
- 6.2.2 使用SimpleButton的主代碼
- 6.2.1 構建一個Button類
- 6.2 構建可重用的、面向對象的按鈕
- 6.1.4 創建大量Ball對象
- 6.1.3 創建多個Ball對象
- 6.1.2 使用Ball類
- 6.1.1 創建Ball類
- 6.1 使用OOP pygame創建屏保球
- 第6章 面向對象的pygame
- 5.7 小結
- 基本形狀參考
- 5.6 繪制形狀
- 5.5.2 播放背景音樂
- 5.5.1 播放音效
- 5.5 播放聲音
- 5.4.6 使用pygame矩形
- 5.4.5 創建基于位置的動畫
- 5.4.4 處理鍵盤操作
- 5.4.3 檢測鼠標單擊
- 5.4.2 繪制圖片
- 5.4.1 打開一個空白窗口
- 5.4 使用pygame
- 5.3 事件驅動的程序
- 5.2.2 像素顏色
- 5.2.1 窗口坐標系統
- 5.2 窗口
- 5.1 安裝pygame
- 第5章 pygame簡介
- 第二部分 使用pygame創建圖形用戶界面
- 4.9 小結
- 4.8 接口與實現
- 4.7 在對象列表上調用相同的方法
- 4.6.3 處理異常的主代碼
- 4.6.2 優化后的Bank類
- 4.6.1 使用異常的Account類
- 4.6 在Bank程序中使用異常
- 4.5.2 raise語句和自定義異常
- 4.5.1 try和except
- 4.5 使用異常更好地處理錯誤
- 4.4.2 創建對象管理器的主代碼
- 4.4.1 創建對象管理器
- 4.4 創建對象管理器
- 4.3.4 創建一個交互式菜單
- 4.3.3 具有唯一標識符的多個對象
- 4.3.2 在列表中包含多個Account對象
- 4.3.1 創建多個賬戶
- 4.3 創建一些測試代碼
- 4.2 導入類的代碼
- 4.1 銀行賬戶類
- 第4章 管理多個對象
- 3.5 小結
- 3.4 self的含義
- 3.3 2號深層模型
- 3.2 1號高級思維模型
- 3.1 重看DimmerSwitch類
- 第3章 對象的思維模型和“self”的意義
- 2.8 小結
- 2.7 以OOP作為解決方案
- 2.6 類的使用
- 2.5.3 初始化參數
- 2.5.2 多個實例
- 2.5.1 向方法傳遞實參
- 2.5 將一個更加復雜的物理對象表示為類
- 2.4 創建一個更加復雜的類
- 2.3.8 對象的定義
- 2.3.7 Python數據類型被實現為類
- 2.3.6 從相同類創建多個實例
- 2.3.5 調用對象的方法
- 2.3.4 從類創建對象
- 2.3.3 函數和方法的區別
- 2.3.2 作用域和實例變量
- 2.3.1 在Python中編寫類
- 2.3 類、對象和實例化
- 2.2 類和對象簡介
- 狀態和行為:電燈開關示例
- 2.1 構建物體的軟件模型
- 第2章 通過面向對象編程模擬物體
- 1.5 小結
- 1.4 面向對象解決方案:初識類
- 1.3 過程式實現的常見問題
- 1.2.6 實現5:賬戶字典的列表
- 1.2.5 實現4:使用列表的多個賬戶
- 1.2.4 實現3:兩個賬戶
- 1.2.3 實現2:使用函數的單個賬戶
- 1.2.2 實現1:不使用函數的單個賬戶
- 1.2.1 分析必要的操作和數據
- 1.2 銀行賬戶模擬
- 1.1.3 可重用的代碼
- 1.1.2 實現
- 1.1.1 表示數據
- 1.1 Higher or Lower紙牌游戲
- 第1章 過程式Python示例
- 第一部分 面向對象編程入門
- 關于異步社區和異步圖書
- 與我們聯系
- 提交勘誤信息
- 服務與支持
- 致謝
- 小部件和示例游戲
- 開發環境
- 本書內容
- 我如何解釋OOP
- Python版本及安裝
- 本書讀者對象
- 前言
- 技術審校者簡介
- 作者簡介
- 內容提要
- 版權
- 版權信息
- 封面
- 封面
- 版權信息
- 版權
- 內容提要
- 作者簡介
- 技術審校者簡介
- 前言
- 本書讀者對象
- Python版本及安裝
- 我如何解釋OOP
- 本書內容
- 開發環境
- 小部件和示例游戲
- 致謝
- 服務與支持
- 提交勘誤信息
- 與我們聯系
- 關于異步社區和異步圖書
- 第一部分 面向對象編程入門
- 第1章 過程式Python示例
- 1.1 Higher or Lower紙牌游戲
- 1.1.1 表示數據
- 1.1.2 實現
- 1.1.3 可重用的代碼
- 1.2 銀行賬戶模擬
- 1.2.1 分析必要的操作和數據
- 1.2.2 實現1:不使用函數的單個賬戶
- 1.2.3 實現2:使用函數的單個賬戶
- 1.2.4 實現3:兩個賬戶
- 1.2.5 實現4:使用列表的多個賬戶
- 1.2.6 實現5:賬戶字典的列表
- 1.3 過程式實現的常見問題
- 1.4 面向對象解決方案:初識類
- 1.5 小結
- 第2章 通過面向對象編程模擬物體
- 2.1 構建物體的軟件模型
- 狀態和行為:電燈開關示例
- 2.2 類和對象簡介
- 2.3 類、對象和實例化
- 2.3.1 在Python中編寫類
- 2.3.2 作用域和實例變量
- 2.3.3 函數和方法的區別
- 2.3.4 從類創建對象
- 2.3.5 調用對象的方法
- 2.3.6 從相同類創建多個實例
- 2.3.7 Python數據類型被實現為類
- 2.3.8 對象的定義
- 2.4 創建一個更加復雜的類
- 2.5 將一個更加復雜的物理對象表示為類
- 2.5.1 向方法傳遞實參
- 2.5.2 多個實例
- 2.5.3 初始化參數
- 2.6 類的使用
- 2.7 以OOP作為解決方案
- 2.8 小結
- 第3章 對象的思維模型和“self”的意義
- 3.1 重看DimmerSwitch類
- 3.2 1號高級思維模型
- 3.3 2號深層模型
- 3.4 self的含義
- 3.5 小結
- 第4章 管理多個對象
- 4.1 銀行賬戶類
- 4.2 導入類的代碼
- 4.3 創建一些測試代碼
- 4.3.1 創建多個賬戶
- 4.3.2 在列表中包含多個Account對象
- 4.3.3 具有唯一標識符的多個對象
- 4.3.4 創建一個交互式菜單
- 4.4 創建對象管理器
- 4.4.1 創建對象管理器
- 4.4.2 創建對象管理器的主代碼
- 4.5 使用異常更好地處理錯誤
- 4.5.1 try和except
- 4.5.2 raise語句和自定義異常
- 4.6 在Bank程序中使用異常
- 4.6.1 使用異常的Account類
- 4.6.2 優化后的Bank類
- 4.6.3 處理異常的主代碼
- 4.7 在對象列表上調用相同的方法
- 4.8 接口與實現
- 4.9 小結
- 第二部分 使用pygame創建圖形用戶界面
- 第5章 pygame簡介
- 5.1 安裝pygame
- 5.2 窗口
- 5.2.1 窗口坐標系統
- 5.2.2 像素顏色
- 5.3 事件驅動的程序
- 5.4 使用pygame
- 5.4.1 打開一個空白窗口
- 5.4.2 繪制圖片
- 5.4.3 檢測鼠標單擊
- 5.4.4 處理鍵盤操作
- 5.4.5 創建基于位置的動畫
- 5.4.6 使用pygame矩形
- 5.5 播放聲音
- 5.5.1 播放音效
- 5.5.2 播放背景音樂
- 5.6 繪制形狀
- 基本形狀參考
- 5.7 小結
- 第6章 面向對象的pygame
- 6.1 使用OOP pygame創建屏保球
- 6.1.1 創建Ball類
- 6.1.2 使用Ball類
- 6.1.3 創建多個Ball對象
- 6.1.4 創建大量Ball對象
- 6.2 構建可重用的、面向對象的按鈕
- 6.2.1 構建一個Button類
- 6.2.2 使用SimpleButton的主代碼
- 6.2.3 創建包含多個按鈕的程序
- 6.3 構建可重用的、面向對象的文本顯示
- 6.3.1 顯示文本的步驟
- 6.3.2 創建SimpleText類
- 6.4 包含SimpleText和SimpleButton的彈球示例
- 6.5 對比接口與實現
- 6.6 回調函數
- 6.6.1 創建回調函數
- 6.6.2 對SimpleButton使用回調函數
- 6.7 小結
- 第7章 pygame GUI小部件
- 7.1 向函數或方法傳遞實參
- 7.1.1 位置和關鍵字形參
- 7.1.2 關于關鍵字形參的一些說明
- 7.1.3 使用None作為默認值
- 7.1.4 選擇關鍵字和默認值
- 7.1.5 GUI小部件中的默認值
- 7.2 pygwidgets包
- 7.2.1 設置
- 7.2.2 總體設計方法
- 7.2.3 添加圖片
- 7.2.4 添加按鈕、復選框和單選按鈕
- 7.2.5 文本輸出和輸入
- 7.2.6 其他pygwidgets類
- 7.2.7 pygwidgets示例程序
- 7.3 一致的API的重要性
- 7.4 小結
- 第三部分 封裝、多態性和繼承
- 第8章 封裝
- 8.1 函數的封裝
- 8.2 對象的封裝
- 對象擁有自己的數據
- 8.3 封裝的含義
- 8.3.1 直接訪問方式以及為什么應該避免使用這種方式
- 8.3.2 嚴格解釋getter和setter
- 8.3.3 安全的直接訪問
- 8.4 使實例變量更加私密
- 8.4.1 隱式私有
- 8.4.2 更加顯式地私有
- 8.5 裝飾器和@屬性
- 8.6 pygwidgets類中的封裝
- 8.7 一個真實的故事
- 8.8 抽象
- 8.9 小結
- 第9章 多態性
- 9.1 向現實世界的對象發送消息
- 9.2 編程中應用多態性的經典示例
- 9.3 使用pygame形狀的示例
- 9.3.1 Square類
- 9.3.2 Circle類和Triangle類
- 9.3.3 創建形狀的主程序
- 9.3.4 擴展模式
- 9.4 pygwidgets表現出多態性
- 9.5 運算符的多態性
- 9.5.1 魔術方法
- 9.5.2 比較運算符的魔術方法
- 9.5.3 包含魔術方法的Rectangle類
- 9.5.4 使用魔術方法的主程序
- 9.5.5 數學運算符的魔術方法
- 9.5.6 向量示例
- 9.6 創建對象中值的字符串表示
- 9.7 包含魔術方法的Fraction類
- 9.8 小結
- 第10章 繼承
- 10.1 面向對象編程中的繼承
- 10.2 實現繼承
- 10.3 Employee和Manager示例
- 10.3.1 基類Employee
- 10.3.2 子類Manager
- 10.3.3 測試代碼
- 10.4 客戶端眼中的子類
- 10.5 現實世界的繼承示例
- 10.5.1 InputNumber
- 10.5.2 DisplayMoney
- 10.5.3 示例用法
- 10.6 從同一個基類繼承多個類
- 10.7 抽象類和抽象方法
- 10.8 pygwidgets如何使用繼承
- 10.9 類的層次
- 10.10 使用繼承編程的困難
- 10.11 小結
- 第11章 管理對象使用的內存
- 11.1 對象的生存期
- 11.1.1 引用計數
- 11.1.2 垃圾回收
- 11.2 類變量
- 11.2.1 類變量常量
- 11.2.2 將類變量用于計數
- 11.3 綜合運用:氣球示例程序
- 11.3.1 常量模塊
- 11.3.2 主程序代碼
- 11.3.3 氣球管理器
- 11.3.4 Balloon類和對象
- 11.4 使用slots管理內存
- 11.5 小結
- 第四部分 在游戲開發中使用OOP
- 第12章 紙牌游戲
- 12.1 Card類
- 12.2 Deck類
- 12.3 Higher or Lower游戲
- 12.3.1 主程序
- 12.3.2 Game對象
- 12.4 使用__name__進行測試
- 12.5 其他紙牌游戲
- 12.5.1 Blackjack牌堆
- 12.5.2 使用非標準牌堆的游戲
- 12.6 小結
- 第13章 定時器
- 13.1 定時器演示程序
- 13.2 實現定時器的3種方法
- 13.2.1 統計幀數
- 13.2.2 定時器事件
- 13.2.3 通過計算經過的時間來創建定時器
- 13.3 安裝pyghelpers
- 13.4 Timer類
- 13.5 顯示時間
- 13.5.1 CountUpTimer
- 13.5.2 CountDownTimer
- 13.6 小結
- 第14章 動畫
- 14.1 構建動畫類
- 14.1.1 SimpleAnimation類
- 14.1.2 SimpleSpriteSheetAnimation類
- 14.1.3 將兩個類合并起來
- 14.2 pygwidgets中的動畫類
- 14.2.1 Animation類
- 14.2.2 SpriteSheetAnimation類
- 14.2.3 公共基類PygAnimation
- 14.2.4 示例動畫程序
- 14.3 小結
- 第15章 場景
- 15.1 狀態機方法
- 15.2 狀態機的一個pygame示例
- 15.3 用于管理許多場景的場景管理器
- 15.4 使用場景管理器的一個示例程序
- 15.4.1 主程序
- 15.4.2 構建場景
- 15.4.3 一個典型場景
- 15.5 使用場景的Rock,Paper,Scissors
- 15.6 場景之間的通信
- 15.6.1 從目標場景請求信息
- 15.6.2 向目標場景發送信息
- 15.6.3 向所有場景發送信息
- 15.6.4 測試場景之間的通信
- 15.7 場景管理器的實現
- 15.7.1 run()方法
- 15.7.2 主方法
- 15.7.3 場景之間的通信
- 15.8 小結
- 第16章 完整的Dodger游戲
- 16.1 模態對話框
- 16.1.1 Yes/No和警告對話框
- 16.1.2 Answer對話框
- 16.2 構建完整的Dodger游戲
- 16.2.1 游戲概述
- 16.2.2 實現
- 16.2.3 擴展游戲
- 16.3 小結
- 第17章 設計模式及收尾
- 17.1 模型-視圖-控制器
- 17.1.1 文件顯示示例
- 17.1.2 統計顯示示例
- 17.1.3 MVC模式的優勢
- 17.2 小結 更新時間:2023-06-29 17:19:23