2011-11-25 39 views
3

我很新的Java和我不知道如果我甚至不允許在這裏提出這種性質的問題,但我給它一個鏡頭。我想/需要練習編程的Java,所以我一直在一個相當大的項目,應該是我的能力,我已經開始建設,並創建了一個球員的對象與像級別,名稱,XP,衛生項目的一些屬性決定內。該項目是與5個物體對象的數組(包涵XD),現在我想知道我是否應該創建房間爲對象,以及或者作爲單獨的類或函數?如何創建房間在一個基於文本的遊戲(初級)

房間將是抽象意義上的房間,遊戲完全基於文本,它們需要包含用戶可以拾取或檢查的謎題和對象以及敵人,並且這些敘述也將包含在每個一。玩家將能夠「拾起」房間中的物品並將其添加到他們的庫存中。以及參與與敵人的文本comabt:你擊中怪物造成2點傷害,怪物擊退3點等等。

請記住,這不會很漂亮,它需要在Java中完成。 在此先感謝。

+2

你這是什麼意思的房間? –

+0

你能提供更多細節嗎?一個房間的目的是什麼?它將如何與其他元素相互作用? – CHawk

+0

嗯在一個典型的地牢爬行用戶將通過一系列challanges和困惑的去某個地方或一個目標看這裏的一個例子http://homestarrunner.com/dman3.html雖然這是一個在Flash中完成的。房間會沾染玩家cna互動的物體和敵人,以及敘述。 – Suavelizard

回答

4

你的問題涉及到OOP的概念不被Java中的初學者,你應該知道更多關於OOP正確地思考開始編碼把正確的OOP設計程序之前。既然你用java編寫這個程序,你可以開始here

對於我所理解的你的問題,你可能希望有一個房間類,包含客房的性質和功能。

+0

我會讀,但我不知道我失蹤的部分 – Suavelizard

+0

oop設計不是單向火車,一旦你閱讀和理解概念,所以你可以把任何設計,你認爲這是「合乎邏輯」,並會解決你的問題。 –

+0

行不行,看看這個? 'package game1; public class Player int playerLevel = 1; int playerLevelCompletion = 0; int playerHealth = 100; String playerName = null; Object [] playerItems = {null,null,null,null,null}; Player(int playerLevel,int playerLevelCompletion,int playerHealth,String playerName,Object playerItems []) this.playerLevel = playerLevel; this.playerLevelCompletion = playerLevelCompletion; this.playerHealth = playerHealth; this.playerName = playerName; this.playerItems = playerItems; } }' – Suavelizard

1

從高層次,一個好的想法是有一個「房間」級,這將包含客房標題,描述和任何其他房間的具體信息(如地形類型等)。

然後,您可以創建房間對象的多維數組。一個維度是你的X座標,而另一個維度是你的Y座標。

這樣,根據您的移動方向的X或Y「移動」周圍的一切,你需要做的是追蹤您的位置,要麼遞增/遞減。

你可以擴展它進一步做這樣的事情發生地圖上你周圍的環境也是如此。每種地形類型都可以顯示爲不同的符號(@表示森林,〜表示水等)。這將是一個簡單的方法來添加這樣的東西,因爲所有你需要做的就是讓你的右上角/左下角座標,並通過建立你的地圖的座標循環。

+0

我可能會在這個答案的基礎上脫離基礎,但我曾經在「當天回來」播放大量基於文本的遊戲。 – savageguy

+0

不,這或多或少是正確的軌道,每個房間或區域作爲一個班級而不是一個物體最好?我曾考慮製作實際的遊戲板風格運動,但我認爲現在它會變得非常線性 – Suavelizard

+0

對象是一個類的實例。所以你將有1個房間類,它定義了你的變量(房間標題,房間描述等)和任何房間的構造函數。然後,您將創建您的房間,即roomList [x] [y] =新房間(「房間在X,Y」,「這是房間」) 您可能想要了解更多關於OOP的信息響應者在挖掘之前提到過多。它可能不像跳入代碼那樣令人滿意,但是在你深入瞭解之後,它將不僅僅彌補它。 – savageguy