2011-06-22 49 views
3

我試圖模擬使用線程和MVC排序的戰鬥序列。詳細信息:如何獲取多個可運行對象共有的變量的最小值?

  • 每個生物都有一個主動分數來控制誰先走。
  • 每個生物都必須陳述其預期的目標。
  • 生物被加載到'Combat'類的堆棧上;最低分的生物首先進入堆疊。
  • 一旦每個生物都選擇了一個目標,堆棧就會清空,生物按照他們的主動次序,按照最高優先順序進行操作。

一個賦值約束要求我將這些生物作爲單獨的線程來處理。問題是:

  • 我不知道'Combat'類意識到它必須處理棧上的動作,因爲沒有更多的生物進入它的方式。
  • 我想'戰鬥'必須有一種方法來知道所有正在運行的線程中最低的主動得分,但我不知道如何管理它。

我很抱歉,如果我不能把這更清楚。這是非常令人沮喪的。

+0

使用優先級隊列查看ThreadPoolExecutors。讓主應用程序將每個可運行的生物推送到隊列中,然後執行池執行程序,然後按照優先級的順序輪流執行它們。一旦完成ThreadPoolExecutors,沖洗重複 – Suroot

+0

它仍然有點超出我的專業知識。去看看它,看看我能用它做些什麼。謝謝:) –

+0

走出你的舒適區對編程非常重要。儘管當你不知道你在找什麼時,深入瞭解這類事情總是很好:) – Suroot

回答

0

不知道這個作業的具體要求很難給出一個好的答案,但這裏有幾個想法給你。

戰鬥類需要知道它何時具有所有動作,以便它可以處理它們。每個生物都需要每回合進行一次戰鬥移動,或者如果發信號表示不會進行戰鬥移動或類似的移動,則有某種方式。沒有這些信息,你不知道何時處理這些舉動。

處理在主動順序中的移動是有意義的,但是你是否需要將它們按順序推入堆棧?添加所有移動,然後排序或使用優先級隊列似乎是更好的解決方案。如果要求戰鬥類只接受特定順序的動作,那麼是的,它需要知道最低分。

相關問題