2024秋軟體工程個人作業(第二次)

bushi王露洁發表於2024-09-18
這個作業屬於哪個課程 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

🧸評價個人作業完成過程和最終效果

檢視具體內容 這次作業由於是第一次程式設計小遊戲這類程式,再加上程式設計能力本身不強,所以大多都是藉助AIGC來編寫的,但是藉助AIGC來程式設計也並非是一帆風順的。 我前前後後重新生成好幾次才最終得到一個比較符合要求的程式,原因在於我首先是生成一個基本的遊戲邏輯框架,然後再一步步新增輔助功能,但是隨著功能的增加,程式整個執行效果反而是在變差,好幾次出現了閃退的情況。具體什麼原因我也不太瞭解,所以最後的程式雖然基本滿足需求,但是離我自己想象的還差很遠。這反反覆覆地耗費了我不少時間,原因也有我沒有把遊戲功能需求考慮好就直接開始了程式設計,下次還是按照該有的步驟來完成這樣一個程式。

相關文章