2024秋軟件工程個人作業(第二次)
| 這個作業屬于哪個課程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
|---|---|
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253 |
| 這個作業的目標 | 1.學會使用AIGC輔助編程 2.熟悉從設計到開發一個軟件的步驟 3.對自己的任務結果進行反思 |
| 學號 | 102202108 |
1.項目展示
??這是項目代碼所在的倉庫
??這是項目代碼所在的位置

2.項目介紹
#point1
?項目的前端設計與特色功能
查看具體內容
前端設計:
??游戲窗口
450x800像素的垂直布局,適合移動設備。
??多種界面
主菜單
難度選擇
游戲界面
游戲結束界面
高分榜
??視覺元素
使用自定義背景圖片,根據不同的游戲狀態切換。
圖標使用70x70像素的圖片。
使用淺色按鈕增加視覺吸引力。
??文字渲染
使用Pygame的字體渲染,不同大小用于標題和正文。
特色功能:
??三種難度級別
(簡單、中等、困難),影響圖標數量和層數。
??匹配機制
玩家需要選擇三個相同的圖標進行消除。
?計時挑戰
所有難度級別都有60秒的時間限制。
??提示功能
自動選擇三個匹配的圖標。
??撤銷功能
撤銷上一次的消除操作。
??分數系統
成功消除圖標增加分數,使用撤銷功能減少分數。
??高分記錄
每個難度級別都有獨立的最高分記錄,存儲在JSON文件中。
??隨機生成
每次開始新游戲時,圖標位置和類型都是隨機生成的。
#point2
??項目中所使用的技術和特殊的算法及實現思路
查看具體內容
| 主要技術 | 實現方法 |
|---|---|
| Pygame框架 | 用于創建游戲窗口,處理時間,繪制圖形和管理游戲循環 |
| 面向對象編程 | 使用Icon和Button類來封裝游戲元素,Game類作為主要的游戲邏輯容器 |
| 隨機算法 | 在generate_icons方法中使用random模塊生成隨機的圖標位置和類型 |
| 匹配算法 | check_match方法使用集合來快速判斷三個選中的圖標是否相同 |
| 計時器實現 | 使用time模塊計算游戲時間,在update方法中更新剩余時間 |
| 事件處理 | 在handle_event方法中集中處理所有用戶輸入,包括鼠標點擊事件和鍵盤事件 |
| 資源管理 | 使用load_images和load_backgrounds函數加載和管理游戲資源 |
| 難度系統 | 通過調整圖標數量和層數來實現不同的難度級別 |
| 文件I/O和JSON處理 | 使用JSON格式保存和加載高分記錄 |
3.測試
#point1
??測試樣例及結果
查看具體內容
1. 啟動游戲測試:
操作:運行游戲
預期結果:顯示主菜單,包含"Start Game"、"High Scores"和"Quit"按鈕

2. 難度選擇測試:
操作:點擊"Start Game",然后選擇難度(Easy/Medium/Hard)
預期結果:進入相應難度的游戲界面,圖標數量和層數應與難度相符

3. 游戲操作測試:
操作:選擇三個相同的圖標
預期結果:圖標消除,分數增加30點

4. 提示功能測試:
操作:在游戲中按"H"鍵
預期結果:自動選中三個相同的圖標并消除,提示次數減少1

5. 撤銷功能測試:
操作:消除一組圖標后,按"U"鍵
預期結果:上一次消除的圖標重新出現,分數減少30點,撤銷次數減少1

6. 時間限制測試:
操作:等待60秒或直到所有圖標被消除
預期結果:游戲結束,顯示"Game Over"或"Congratulations!"界面

7. 高分記錄測試:
操作:完成一局游戲,查看高分榜
預期結果:如果得分高于之前的記錄,新的高分應該被記錄并顯示

8. 退出游戲測試:
操作:在主菜單或游戲結束界面點擊"Quit"
預期結果:游戲正常關閉,高分被保存

9. 不同難度圖標數量測試:
操作:分別選擇Easy、Medium和Hard難度開始游戲
預期結果:
Easy: 3層,每層12個圖標
Medium: 4層,每層15個圖標
Hard: 5層,每層18個圖標

10. 高分榜顯示測試:
操作:在主菜單點擊"High Scores"
預期結果:顯示Easy、Medium和Hard三個難度的最高分

#point2
??測試設計的評價與討論
查看具體內容
本次測試主要注意以下幾點:
??1. 圖標是否正確生成和顯示
??2. 消除機制是否正確
??3. 計時器是否準確
??4. 提示和撤銷功能是否正常工作
???5. 高分是否正確保存和顯示
??6. 不同難度級別的游戲是否有明顯區別
????測試用例基本滿足程序測試的需求.
4.AIGC表格
| 學到的內容 | 心得體會 |
|---|---|
| Pygame框架應用 | 運用Pygame工具包可以很方便地創建游戲窗口,繪制圖形和管理游戲循環等,簡化了我們的編程過程的同時使得程序的功能完善 |
| 面向對象編程實踐 | 這里我學會了組織和封裝游戲邏輯,通過這種封裝的方式可以提高代碼的可維護性,可復用性和可擴展性 |
| 事件處理 | 對用戶的輸入,鼠標點擊,鍵盤事件等事件進行及時處理和響應對于整個游戲的體驗感有非常重要的作用 |
| 隨機算法的應用 | 在圖標生成時就是利用隨機算法,從而增加游戲的可玩性和挑戰性 |
| 文件I/O和JSON處理 | 這里是整個游戲的基礎,圖標和背景圖片都需要從本地文件讀出并顯示,而高分記錄的保存和加載都是使用JSON格式 |
| 代碼組織和模塊化 | 整個游戲項目可以劃分成不同的功能模塊,而這些功能模塊互相之間沒有太大聯系,所以可以獨立編寫,這樣就可以把任務同時分給不同的人來完成,從而提高編程效率和可擴展性 |
| 調試技巧 | 我在嘗試運行程序時經常出現閃退的情況,在直接無法找出錯誤的情況下,就用print語句輸出調試信息,從而排查問題 |
5.PSP表格
| PSP | 預計耗時(分鐘) | 實際耗時(分鐘) |
|---|---|---|
| ? Analysis | 120 | 180 |
| ? Requirement analysis | 40 | 60 |
| ? Game design | 80 | 120 |
| ? Design Specification | 140 | 160 |
| ? UI design | 50 | 40 |
| ? Class design | 90 | 120 |
| ? Coding | 570 | 520 |
| ? Game initialization | 120 | 100 |
| ? Main menu implementation | 90 | 90 |
| ? Game logic implementation | 180 | 160 |
| ? Difficulty levels | 60 | 60 |
| ? Scoring system | 60 | 60 |
| ? High score management | 60 | 50 |
| ? Code Review | 60 | 50 |
| ? Test | 240 | 240 |
| ? Unit testing | 120 | 100 |
| ? Integration testing | 120 | 140 |
??評價個人作業完成過程和最終效果

浙公網安備 33010602011771號