簡體   English   中英

當用戶與代碼的不同部分進行交互時,我是否需要一個線程來實時跟蹤某些內容?

[英]Do I need a thread to track something in real time while the user interacts with a different part of the code?

我正在用Java開發一個基於開放世界的基於文本的僵屍生存RPG,我希望能夠在游戲中具有實時事件,例如在僵屍追趕玩家之前讓玩家擁有垃圾郵件空間,直到玩家達到某種程度。檢查點,例如房屋門或其他東西。

對於初學者,我想允許玩家通過打開將燃料作為動力的發電機來控制建築物的動力。 我希望燃料在大約7個游戲日后用完,每個游戲日需要6個實時小時。

我從未使用過線程,因此我不確定是否需要使用該線程,但是如果有人可以,請引導我逐步了解如何編寫示例程序? 如果沒有,可以告訴我我該怎么做嗎?

謝謝! PS有些人告訴我,他們不理解“基於文本的游戲”的意思。 這是一款除了文字外沒有其他圖形的游戲,有時甚至是周圍周圍人物的地圖

----編輯---- WorldObject是游戲中的一個對象,可以放置到Room對象的ArrayList中。 使用靜態ConsoleViewer類可以“查看”房間對象,該類可以通過主Console類訪問。

Generator類擴展了WorldObject類,它應該具有一些其他方法,這些方法可以返回當前總共42點中有多少燃料(我可以自己做),以增量方式重新提供燃料(我可以自己做)和松散每個實時小時1點(我需要此部分的幫助)。

是。 沒有更多有關代碼的詳細信息,我無法給出詳細的答案,但是,每當您需要在獨立於UI代碼的時間軸上進行處理時,都需要該處理在其自己的線程中運行。 在您的情況下,您可能需要使用Timer ,它可以自動為您處理后台線程。

不,您不需要使用基於線程的解決方案。 但這是實現此目的的一種可能方法。 您首先應該學習基礎知識,以便根據自己的具體情況確定最佳解決方案,從而做出明智的決定。

對於游戲,您通常不需要使用其他線程。 大多數游戲在主游戲循環中運行,該循環完成游戲所需的一切,例如捕獲輸入事件(檢查當前按下的鍵),操縱世界狀態,處理KI動作,處理用戶動作,繪制所有內容。 主游戲循環將以較小的時間單位運行,您可以將其稱為“滴答”。 您將為每個刻度操縱每個游戲對象一定數量。 例如,您將在所有發電機上循環進行一個階段,並為每台正在運行的發電機減少一定量的燃料。

如果滴答聲代表的時間跨度足夠小,則它看起來像實時的-實際上,在基於線程的解決方案中這不會有所不同,您只需拆分工作即可。 除非您需要並行執行復雜的計算工作,否則將不會使用此方法-線程大部分時間都處於休眠狀態。

使用主循環解決方案可以更輕松地實現和控制游戲世界。 在您所描述的場景中,通常不需要使用基於線程(或代理)的解決方案。

如果它是基於文本的,那么您甚至可能甚至不需要(隱式)線程來進行動畫或事件處理。 但是,要針對您的具體情況做出決定,您需要首先了解這些工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM