遊戲要求
遊戲規則
- 使用WSAD或方向鍵上下左右移動player,進入巡邏兵的追捕後逃脫可積累一分,若與巡邏兵碰撞則遊戲結束,收集完地圖上的所有水晶即可獲勝。
遊戲設計要求:
- 創建一個地圖和若干巡邏兵(使用動畫);
- 每個巡邏兵走一個3~5個邊的凸多邊型,位置數據是相對地址。即每次確定下一個目標位置,用自己當前位置爲原點計算;
- 巡邏兵碰撞到障礙物,則會自動選下一個點爲目標;
- 巡邏兵在設定範圍內感知到玩家,會自動追擊玩家;
- 失去玩家目標後,繼續巡邏;
- 計分:玩家每次甩掉一個巡邏兵計一分,與巡邏兵碰撞遊戲結束;
程序設計要求:
必須使用訂閱與發佈模式傳消息
工廠模式生產巡邏兵
訂閱與發佈模式
訂閱與發佈模式
就像我們訂閱報刊,有什麼時事新聞出現,報社(發佈者)可以第一時間印刷數百份乃至數千份報紙(傳播媒介),發到各個訂閱了該報紙的人(訂閱者)手上,這樣就完成了信息傳播。
與觀察者模式的區別
在觀察者模式中,觀察者需要直接訂閱目標事件;在目標發出內容改變的事件後,直接接收事件並作出響應,往往發佈者需要對所有的觀察者維持一個列表,從而在每次發生變化時通知所有觀察者。在發佈訂閱模式中,發佈者和訂閱者之間多了一個發佈通道;一方面從發佈者接收事件,另一方面向訂閱者發佈事件;訂閱者需要從事件通道訂閱事件,以此避免發佈者和訂閱者之間產生依賴關係,從而降低代碼的耦合性。
UML類圖
這裏參照的是師兄的博客,所以直接借用了他的UML類圖。
程序設計過程
主要使用了MVC的架構和使用訂閱與發佈模式傳消息
詳細代碼請見我的GitHub
參照博客
https://blog.csdn.net/C486C/article/details/80153548