Pracuję nad stroną GUI gry scroller w Javie. Mam wiele rodzajów wrogów, których sztuczna inteligencja działa na zegary Swing. Jak rozumiem, zegary Swinga wymagają dużego nakładu zasobów, ale nadal chcę, aby moi wrogowie poruszali się w różnych odstępach czasu. Czy istnieje skuteczniejszy sposób prowadzenia rzeczy niż używanie innego zegara Swing dla każdego rodzaju wroga?Jaki jest najskuteczniejszy sposób na uruchamianie wielu rzeczy w różnych odstępach czasu w Javie 6
Q
Jaki jest najskuteczniejszy sposób na uruchamianie wielu rzeczy w różnych odstępach czasu w Javie 6
6
A
Odpowiedz
1
Można użyć zwykłej timera http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Timer.html
4
lepszy sposób, aby rozwiązać ten problem jest do prowadzenia listy wrogów, które istnieją na ekranie, za każdym razem, kiedy czyni następny ekran głównym renderowanie pętla powinna postanowił pogodzie powinien wywołać dowolną metodę z obiektu Enemy lub nie.
public interface Enemy {
public void doNextThing();
}
public class TimedEnemy implements Enemy {
private long lastExecute;
private Enemy enemy;
private long threshHold;
public TimedEnemy(Enemy enemy, long threshold)
{
this.lastExecute = System.currentTimeMills();
this.enemy = enemy;
this.threshold = threshold;
}
public void doNextThing()
{
long duration = System.currentTimeMills() - lastExecute;
if(duration >= threshold) {
lastExecute = System.currentTimeMills();
this.enemy.doNextThing();
}
}
}
// main Render Loop
List<Enemy> enemies = new ArrayList<Enemy>();
TimedEnemy easy = new TimedEnemy(new EasyEnemy(),1000);
TimedEnemy hard = new TimeEnemy(new HardBadGuyEnemy(),100);
TimedEnemy boss = new TimeEnemy(new VeryBadBossEnemy(),50);
enemies.add(easy);
enemies.add(hard);
enemies.add(boss);
for(Enemy enemy : enemies) {
enemy.doNextThing():
}
Jeśli naprawdę trzeba mieć każdego wroga AI uruchomić na własnym wątku, to musisz użyć funkcji TaskExecutor Java 5, z pojęciem Futures. Chociaż uruchamianie każdej sztucznej inteligencji na osobnych wątkach oznacza, że musisz zachować ostrożność podczas synchronizacji wątków.
Powiązane problemy
- 1. Jaki jest najskuteczniejszy sposób sortowania NSSet?
- 2. Podział czasu w odstępach
- 3. Jaki jest najskuteczniejszy sposób znalezienia indeksu lewego/prawego najbardziej niezmienionego bitu w Javie?
- 4. Jak zaplanować uruchamianie zadania w okresowych odstępach czasu?
- 5. Jaki jest najskuteczniejszy sposób zliczania wierszy w tabeli w SQLite?
- 6. Java: Planowanie zadania w przypadkowych odstępach czasu
- 7. Jaki jest najskuteczniejszy sposób zarządzania dużym zestawem linii w OpenGL?
- 8. Podziel ciąg w regularnych odstępach czasu
- 9. Jak odtwarzać dźwięki w określonych odstępach czasu na różnych urządzeniach w Androidzie
- 10. Jaki jest najlepszy sposób obsługi wielu działań?
- 11. Najlepsza praktyka - ładowanie wielu rzeczy w application_start?
- 12. Uruchamiaj funkcję JavaScript w regularnych odstępach czasu
- 13. Jaki jest najlepszy sposób na oczyszczenie obiektu w Javie?
- 14. Jaki jest właściwy sposób na tworzenie dat w Javie?
- 15. Jaki jest najskuteczniejszy sposób na przeprowadzanie wieloplatformowych, deterministycznych symulacji w Haskell?
- 16. Jaki jest najskuteczniejszy sposób kopiowania zewnętrznego dostarczonego bufora do bajtów
- 17. Funkcja wywoływania rekursywnie w regularnych odstępach czasu
- 18. Jaki jest najskuteczniejszy sposób uzyskania czystej piaskownicy git?
- 19. Jaki jest najskuteczniejszy sposób reprezentowania skończonych (nierekurencyjnych) wartości typu algebraicznego?
- 20. Jaki jest najskuteczniejszy sposób modyfikacji elementów DOM i ograniczenia przepływu?
- 21. Jaki jest najskuteczniejszy sposób uzyskania węzłów liścia z jQuery
- 22. Jaki jest najskuteczniejszy sposób tworzenia instancji BigInteger z wartości int?
- 23. Jaki jest najskuteczniejszy sposób uzyskania dostępu do wartości kontrolki?
- 24. Android: wykonywanie kodu w regularnych odstępach czasu
- 25. Jaki jest najskuteczniejszy sposób tworzenia słownika słupków Dfr.
- 26. Jaki jest najskuteczniejszy sposób obcięcia numeru dla określonej dokładności?
- 27. Czy jest lepszy sposób na umieszczenie zestawu rzeczy w NSUserDefaults?
- 28. Jaki jest najprostszy sposób łączenia wielu kolekcji w strumień w Javie?
- 29. Jaki jest właściwy sposób na asynchroniczne uruchamianie kodu Python?
- 30. grep dla rzeczy w wielu repozytoriach git