Tôi đang làm việc trên một trò chơi GUI cuộn bên trong Java. Tôi có nhiều loại kẻ thù mà AI của họ chạy ra khỏi Swing giờ. Theo tôi hiểu nó, Swing giờ là loại tài nguyên chuyên sâu, nhưng tôi vẫn muốn kẻ thù của tôi để di chuyển xung quanh trong khoảng thời gian khác nhau. Có cách nào hiệu quả hơn để chạy mọi thứ hơn là sử dụng một bộ đếm thời gian Swing khác nhau cho từng loại kẻ thù không?Cách hiệu quả nhất để chạy nhiều thứ trong các khoảng thời gian khác nhau trong Java 6
6
A
Trả lời
1
Bạn có thể sử dụng một bộ đếm thời gian thường xuyên http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Timer.html
4
Một cách tốt hơn để giải quyết vấn đề này là để giữ một danh sách kẻ thù mà tồn tại trên màn hình, mỗi khi bạn làm cho màn hình kế tiếp làm cho vòng lặp chính của bạn nên quyết định thời tiết nó nên gọi bất kỳ phương thức nào trên đối tượng Enemy hay không.
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():
}
Nếu bạn thực sự cần phải có mọi đối tượng AI chạy trên chuỗi riêng của nó thì bạn cần sử dụng tính năng TaskExecutor của Java 5, với khái niệm Futures. Mặc dù chạy từng AI trên các luồng riêng biệt có nghĩa là bạn phải cẩn thận với việc đồng bộ hóa luồng.
Các vấn đề liên quan
- 1. Lấy lịch trình ice_cube hiệu quả trong một khoảng thời gian nhất định
- 2. Tách một khoảng thời gian thành nhiều khoảng thời gian
- 3. Hợp nhất các khoảng thời gian chồng chéo?
- 4. Phạm vi hợp nhất trong khoảng thời gian
- 5. Linux để chạy kịch bản trong khoảng thời gian
- 6. Cách hiệu quả nhất để tách các chuỗi trong Python
- 7. Cách hiệu quả nhất để chạy các hàm không đồng bộ trong PHP là gì?
- 8. Cách viết các dịch vụ web hiệu quả trong java
- 9. Chạy một hàm trong khoảng thời gian trong jQuery
- 10. Hai kết quả rất khác nhau nhưng rất nhất quán từ thời gian Python
- 11. Chạy một đoạn mã trong một khoảng thời gian nhất định trong C#?
- 12. Cách tốt nhất để lưu trữ các giá trị khoảng thời gian trong MySQL?
- 13. Tạo các số nguyên giả ngẫu nhiên từ một khoảng thời gian thay đổi hiệu quả
- 14. Sự khác nhau giữa dấu thời gian (0) và dấu thời gian (6)
- 15. Cách hiệu quả nhất để thay đổi chuỗi thời gian MultiIndex
- 16. Tìm khoảng thời gian tiểu học trong khoảng thời gian chồng chéo
- 17. Cách hiệu quả nhất để tính toán khoảng cách hamming trong ruby?
- 18. Nhiều phiên bản Java chạy đồng thời trong Windows
- 19. Mã C++ và Haskell khác nhau trong thời gian thực hiện trên các máy khác nhau
- 20. Cách phát âm thanh vào các khoảng thời gian chính xác trên các thiết bị khác nhau trong Android
- 21. cách hiệu quả để sắp xếp các div cạnh nhau?
- 22. Cách tìm 1 hoặc nhiều khoảng thời gian giao nhau một phần trong danh sách vài triệu?
- 23. Cách đơn giản và hiệu quả để tìm các hàng có chồng chéo theo thời gian trong SQL là gì?
- 24. Khoảng thời gian LocalDate trong thời gian Joda
- 25. Python thêm khoảng cách giữa các ký tự trong chuỗi. Cách hiệu quả nhất
- 26. Memory hiệu quả trong Java
- 27. Hiệu suất thời gian chạy phản chiếu Java
- 28. Loại trừ các khoảng thời gian chồng lên nhau
- 29. Emacs - đặt các khoảng thời gian khác nhau cho con trỏ nhấp nháy và tắt
- 30. Hiệu quả strtod trong Java?