我有一些关于让代码在给定时间间隔内自动运行的问题。我正在编程一种游戏模式,它会检查玩家是否杀死了地图中的所有怪物(我有这些方法)。我想知道对这个检查进行编程的最佳方法是什么?我已经查找了一个人在类构造函数中创建ScheduledExecutorService的方法....
private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
但我在网上看到了人们用过的地方
static void main(String[] args) {
还有一个运行方法来进行检查。哪个更好?我只是希望每隔几秒左右运行一次检查,看看玩家是否清除了地图,如果他或她有,那么就进入下一阶段。
答案 0 :(得分:11)
我认为每次玩家杀死怪物时你都可以检查这个。也许你想听一个KillMonster
事件。您可以创建接口并在其他类中实现它。
public interface KillMonsterEventListener {
void onKillMonster ();
}
然后在播放器类中,您可以调用一个方法来调用所有事件侦听器的onKillMonster()
。我想你知道怎么做。只需创建一个KillMonsterEventListener
列表,并使用如下方法:
public void addKillMonsterEventListener (KillMonsterEventListener listener) {
listeners.add (listener); //listeners is the list of KillMonsterEventListeners.
}
答案 1 :(得分:1)
总的来说,使用Executor
只需花费一些代价,因为你可以很容易地拥有一个怪物数量的计数器,并在更新标记中杀死怪物时修改它。当它达到0时,玩家已经清除了等级。通常Executor
适用于较大的操作,如自动保存到文件,还值得注意的是代码将在后台线程上执行。由于你只是要查询游戏中留下的怪物数量而不是改变用户界面,所以应该没问题。
问候static void main(String[] args) {
我不明白这是怎么回事。