2012-03-01 113 views
2

設計一個項目,我不知道究竟如何設計一個項目。這是我在計算機科學系的第一年。我仍然在學習很多關於Java的信息,比如繼承,多態,抽象類,接口等等。我對這些講座非常好奇,並且我願意很好地學習它們。其實我從來沒有錯過這些講座的任何一點,我很好。但是,沒有人教我如何設計一個項目,我們應該在學校末尾設計一個體面的Java項目。在Java

我和我的3個同學決定做一個新遊戲。它只有一個球發揮,球有兩種顏色可變。另外兩名球員與這個球的顏色具有相同的顏色。當球是一名球員的顏色時,該球員將能夠移動球並嘗試對另一名球員的球進球。這些是我們想法的基本邏輯,我們可以爲這個遊戲添加一些新的設施和選項。我們很願意實現這個項目。但是......雖然我們聽取並從我們的講座中學習,但我們對於逐步設計這個項目感到非常困惑。我只是試圖展示我們項目的邏輯。同時,我們仍在學習GUI,但是我們處於GUI的開始階段。所以我想了解我們必須遵循什麼樣的方式來設計和製作這樣的項目。我只是想知道的技巧和捷徑,並充分利用我們的有關類hierachies,抽象類,超類,覆蓋等知識(我們知道這方面的一切,但就是不知道如何使用它們來設計項目)。如果你甚至可以表明一些關於這些的信息,我會如此如此高興並能夠改變我的觀點。這將有助於我們的進步。謝謝!

回答

3

你可能想看看這個Java Pong Game - 這很簡單,包括一些你可以學習的源代碼。

更普遍的建議是:

  • 你需要一些方法來顯示什麼是遊戲中的發生。可能顯示在一個非常簡單的遊戲畫面最簡單的方法是使用一個JPanel,並覆蓋它的paintComponent()方法來正確繪製的遊戲畫面(例如,在合適的x繪製的球員,Y位置)
  • 您還需要一個遊戲循環應該做以下事情:
    • 讀取玩家的任何輸入
    • 更新的對象在遊戲中)在JPanel的位置
    • 調用重繪(讓屏幕被重繪
    • 等待使用例如短的時間量了Thread.sleep(30)進入睡眠狀態30毫秒
    • 循環返回到遊戲的循環的開始
  • 我建議從分離定義用戶界面(幀,面板等)的類定義遊戲邏輯(播放器,球等)的類。理想情況下,遊戲邏輯類不應包含與它們如何顯示或交互相關的任何代碼。

對於遊戲這個簡單,你實際上並不需要很多類。我建議是這樣的:

  • 應用程序 - 包含啓動遊戲主(...)函數。至少它應該創建一個JFrame並在其中添加一個GamePanel,但是如果你喜歡,你可以創建其他UI元素。你也可以選擇在這個類中實現你的遊戲循環 - 在這種情況下,一旦所有的設置完成,主要的方法應該調用這個循環。
  • 的GamePanel(其擴展JPanel) - 包含畫面繪製邏輯,也可能檢測到鼠標移動
  • 遊戲 - 類,表示遊戲,包括兩個玩家的位置和球
  • 播放機的整個狀態 - 小班代表球員,與X,Y座標
  • 球 - 小班代表球,用X,Y座標和DX,DY速度
+0

感謝您的解釋答案.. – El3ctr0n1c4 2012-03-01 01:38:32

0

GUI是不是真的適合做一個遊戲。 GUI(Graphical User Intreface,Swing in java)是一組按鈕和其他文本/圖像內容,與您可以製作遊戲的一些內容相反:3D渲染引擎,如OpenGL(最常用於Java,無論是在框架中還是通過低級庫)。

您可以選擇: 您可以決定做一個更簡單的項目,例如控制檯程序,但可以在GUI上運行,例如用於移動文件的GUI程序。

或者你可以學習OpenGL或類似的(JOGL for java)並製作遊戲! (JavaFX也可能工作,但我不太瞭解它)

現在關於設計。

通常你想有一個主要的「循環」類,將輸出每幀等 主要的「循環」類應該從一個接口,使所有其他組件來獲取渲染粒子時,計時器等繼承

然後你需要幾個組件,一個用於球,一個用於任何其他物理對象(不要忘記讓它們實現一個「物理」接口,並將它們添加爲主類中的「物理對象引用」因此每個幀都會計算它們的物理量!),一個用於背景,另一個用於用戶輸入。

您還可以添加多個其他人,每個人都會執行特定的操作。

+0

謝謝您的回答,但不是我真正需要的。我想要一些與設計相關的東西。 – El3ctr0n1c4 2012-03-01 01:12:49

+0

更新以包含有關設計信息,當然 什麼,我在這寫的不一定是做正確的事。它旨在爲您提供您自己隨後可以使用的架構示例。這是*管理器(主)的一個例子 - 組件(輸入和對象)*設計 – 2012-03-01 01:25:03