作業內容:智能巡邏兵
- 遊戲設計要求:
- 創建一個地圖和若干巡邏兵(使用動畫);
- 每個巡邏兵走一個3~5個邊的凸多邊型,位置數據是相對地址。即每次確定下一個目標位置,用自己當前位置爲原點計算;
- 巡邏兵碰撞到障礙物,則會自動選下一個點爲目標;
- 巡邏兵在設定範圍內感知到玩家,會自動追擊玩家;
- 失去玩家目標後,繼續巡邏;
- 計分:玩家每次甩掉一個巡邏兵計一分,與巡邏兵碰撞遊戲結束;
- 程序設計要求
- 必須使用訂閱與發佈模式傳消息
- 工廠模式生產巡邏兵
- 友善提示1:生成 3~5個邊的凸多邊型
- 隨機生成矩形
- 在矩形每個邊上隨機找點,可得到 3 - 4 的凸多邊型
- 友善提示2:參考以前博客,給出自己新玩法
作業設計
MVC架構圖
由於新增了訂閱與發佈模式,所以MVC架構圖參考了以往博客的UML圖。
具體設計
1.PatrolFactory
(1)工廠模式生成巡邏兵。一共有9個巡邏兵,活動範圍固定,並且用列表記錄。
(2)當遊戲結束的時候,所有的巡邏兵都會停止動作。
(3)巡邏兵的狀態有Idle、Walk、Exit這幾個。
2.CameraFlow
相機跟隨玩家移動。
3.發佈與訂閱模式
由FirstSceneController控制遊戲的開始和結束。當Actor觸發了某些遊戲規則,就可以發佈相應的信息,然後通過信息的參數,訂閱者就會做出相應的動作。除了巡邏兵是訂閱者,SceneController也是訂閱者,因爲需要處理加分的事項。
事件控制管理:當玩家避開追蹤和碰撞到巡邏兵時分別觸發加分和遊戲結束事件。
4.玩家和巡邏兵
(1)巡邏兵的數據
包括巡邏兵的區域編號、是否跟隨玩家、初始位置等等。
(2)巡邏兵追擊玩家
當玩家進入巡邏兵的活動範圍時,巡邏兵會主動追擊玩家;如果玩家離開追擊範圍後,巡邏兵不再攻擊。
(3)巡邏兵的動作管理
根據事件的觸發,實現各個動作的切換。
5.遊戲規則和界面
一共有9個巡邏兵,在屏幕顯示分數和操作規則“按WSAD鍵或方向鍵控制移動”。玩家成功躲避一個巡邏兵加1分,累計10分即遊戲勝利,失敗則可重新開始遊戲。
源代碼和遊戲視頻
見我的Github
參考博客
https://blog.csdn.net/C486C/article/details/80153548