坦克大戰項目
坦克大戰項目通過一個聯機對戰遊戲的手把手,一行一行的開發過程,讓你精準的理解和運用JavaSE,DesignPatterns , TCP/IP, 多線程, NIO等基礎知識。真正理解項目的開發過程,並體會項目開發的難點和痛點。 請記住,只有做項目,纔是對所學的真正檢驗。
坦克大戰項目目錄
- new出一個窗口
- 設定標題欄內容
- TankFrame從Frame繼承+顯示
- 認識paint方法重寫
- 學習graphics 類畫圖
- 學習repaint 方法
- 實現MyKeyListener對鍵盤作出響應
- MyKeyListener從KeyAdapter繼承
- 取得具體按鍵信息
- 根據具體按鍵調整坦克位置持有對方引用
- 抽象出坦克類學習使用枚舉類型記錄鍵盤狀態
- 把監聽處理類MyKeyListener放到TankFrame內部
- 用匿名內部類處理窗口關閉
- 根據按鍵狀態改變坦克方向
- 根據坦克方向移動位置
- 能停能動
- test包關於classloader的知識
- 將坦克換成圖片版
- 畫出一顆子彈讓子彈飛- -會兒
- 按下ctrl鍵主戰坦克打出一發炮彈
- 打出多發子彈
- 子彈從坦克中心位置打出
- 子彈消亡(飛出遊戲區)
- 定義rectangle屬性不用每次都new
- 炮彈new出來自動加入容器死掉後自動去除
- 分離玩家和機器人對邊界進行不同的處理
- 用雙緩衝消除閃爍
- 加一堆敵人坦克
- 做碰撞檢測
- 顯示爆炸
- 加入聲音
- 讓敵人坦克更加智能
- 對坦克和子彈加入Group屬性,
- 不同的Group可以互相撞擊
- 測試Properties類的使用
- 建立PropertyMgr類
- MV分開Model View分離
- GameModel改成單例模式
- 對於碰撞的處理
- Class. forName().newInstance()
- 抽象出遊戲物體的父類
- 把GameModel中的各種不同物體的List合成爲一個
- List <GameObject>
- 完善責任鏈模式
- 加入牆
- 按鍵切換髮射策略
- 實現暫停功能
- 實現存盤功能
- 使用Junit測試服務器loop
- 去掉敵人的坦克(機器控制的坦克)
- 處理接收到的消息
- player新的構造方法
- 讓後來人能看到先加入者
- 加入坦克方向改變的消息
- 重構代碼
- 收到改變坦克方向消息時讓player的moving爲true
- 發送主戰坦克停止的消息
- 發送主戰坦克開始移動的消息(方向沒變)
- 加入子彈和Player的撞擊邏輯
- 把主戰坦克也加入到List中
- 完成網絡版
坦克大戰項目——架構視頻
坦克大戰項目教程筆記
抽絲剝繭設計模式
在這些模式中,我並沒有止步於理論講解(那其實非常簡單),而是堅持用代碼說話,用實際能用的上的代碼說話。
比如在工廠模式中,我直接講到SpringIOC原理。
比如在動態代理模式和Visitor模式中,我直接講到ASM。
.........
創建型
1. Factory Method(工廠方法)
2. Abstract Factory(抽象工廠)
3. Builder(建造者)
4. Prototype(原型)
5. Singleton(單例)
結構型
6. Adapter Class/Object(適配器)
7. Bridge(橋接)
8. Composite(組合)
9. Decorator(裝飾)
10. Facade(外觀)
11. Flyweight(享元)
12. Proxy(代理)
行爲型
13. Interpreter(解釋器)
14. Template Method(模板方法)
15. Chain of Responsibility(責任鏈)
16. Command(命令)
17. Iterator(迭代器)
18. Mediator(中介者)
19. Memento(備忘錄)
20. Observer(觀察者)
21. State(狀態)
22. Strategy(策略)
23. Visitor(訪問者)
23種設計模式筆記文檔
23種設計模式視頻
本文內容已經上傳到Git,地址:https://github.com/biws-byte/lqq/