坦克大戰1.0版項目實戰
這裏終於要開始我們的坦克大戰的開發了!
正文
我個人並不認為在一個足夠大的項目中一個人能盡善盡美地把所有因素都考慮在內,或許有那樣的人,但做程序員太可惜了:),但是我們不能說不能全部顧著,就什麽都不管不顧了。既然大多數人都不能把所有因素都考慮在內,又不能不管不顧,那麽我們要考慮什麽?要怎麽去做,讓我們的程序有章法,有很好地擴展性?我想這會是一個恒久的問題。但我個人有幾點對自己做項目時考慮的想法!
首先:我們的項目得有版本意識,就正如市場上所有的軟件一樣,它們必定會有版本,我們不可能一次性把所有功能,所有想法都實現了,再去發布,這顯然是不現實的,你可能這樣做了並且成功。但或許將產品投入使用後,會發現用戶或許並不喜歡你的這個想法。那麽,又該如何處理?我認為做一件事,首先只需要把最基本的東西給先搞定,然後一步一步去拓展,一邊聽取意見,一邊自己想出一些更好的辦法之類的。一步一步地去做。而不需要一開始考慮過多細節!
在這裏我們首先由一個基本要求:坦克大戰1.0版本的基本要求就是使用GUI繪圖技術在窗口上繪畫出一個坦克(最好是漂亮的坦克)。
我們這裏有一個對應關系
先得有窗口 --> JFrame
然後有畫板 --> JPanel
再有坦克 --> Graphics 和 paint
1 package cn.vizdl.TankGame1; 2 3 import java.awt.Graphics; 4 5 import javax.swing.JFrame; 6 import javax.swing.JPanel; 78 9 //我的窗口 10 public class MyFrame extends JFrame{ 11 MyPanel mp = null; 12 13 //主函數 14 public static void main (String[] args) { 15 16 } 17 18 19 //構造方法初始化 20 public MyFrame() {} 21 } 22 23 //我的畫板 24 class MyPanel extends JPanel { 25 //重寫paint方法 26 publicvoid paint(Graphics g) {} 27 } 28 29 //坦克類 30 class Tank{} 31 32 //我的坦克類 33 class MyTank extends Tank{}
代碼解釋:
這樣就簡單地給出了基礎框架了,首先,1.0是有四個類的,畫板貼在窗口,坦克畫在畫板上。
問題1:為什麽要有坦克類然後讓我的坦克類繼承坦克類?
坦克類是父類,添加我的坦克和敵方坦克的所有共性(即 坦克共性),方便後續敵方坦克的添加(增加了擴展性)。
自己思考:
1.那麽如何將 :“畫板貼在窗口,坦克畫在畫板上。”的關系建立?
2.坦克類具有什麽屬性和方法?
3.我的坦克類具有什麽屬性和方法?
4.應該如何設計坦克?怎麽才能真正地把坦克花在畫板上?
==================================================================未完待續============================================================================================================
坦克大戰1.0版項目實戰