有没有更好的方法用Java编写游戏流程?
我想为游戏编写一个后端。在这个游戏中,有一些任务必须完成。 例如:查找门x的钥匙。 任务的数量是无限的,但(可能)不会超过25个 如果如上例所示找到一个键,则应该可以解决链接在一起的任务 我的第一次尝试: Task.java有没有更好的方法用Java编写游戏流程?,java,performance,optimization,Java,Performance,Optimization,我想为游戏编写一个后端。在这个游戏中,有一些任务必须完成。 例如:查找门x的钥匙。 任务的数量是无限的,但(可能)不会超过25个 如果如上例所示找到一个键,则应该可以解决链接在一起的任务 我的第一次尝试: Task.java public class Task { private int id; private boolean solved; private Task[] links; private String name; public Task(int id, String name,
public class Task {
private int id;
private boolean solved;
private Task[] links;
private String name;
public Task(int id, String name, Task... links) {
this.id = id;
this.links = links;
this.name = name;
}
每次命令用于解决任务时,都会检查所有链接的任务是否已解决。
同样在Task.java中:
public boolean solve() {
if (this.links != null && links.length != 0) {
for (Task t : links) {
if (t.isSolved()) {
continue;
} else {
return false;
}
}
this.solved = true;
return true;
}
return false;
}
这似乎效率很低,我会发现很难注意所有任务状态。有更好的方法吗?正如Amongalen评论的那样,检查25项任务对性能没有显著影响。您应该阅读一些有关过早优化的内容。检查25个对象不算什么,除非你想每秒检查数百万次。你不应该这么做。一般来说,在看到一些性能问题之前不要进行优化。要扩展@Amongalen所说的内容:如果大约有25个任务,那么
Task.solve()
将在一个playthrough中最多执行25次(假设一个任务没有解决两次)。这意味着在这种情况下,性能几乎是完全无关的。棘手的是,这个后端将在Raspberry Pi(3b)上运行,而执行速度在这里是一个相当大的限制因素(尽管你是对的,每秒检查25个对象并不是Raspberry Pi的限制)。但另一个问题是,前端将继续询问任务是否已解决,以显示“后续任务”。感谢@Amongalen对过早优化的指点。我想我会尝试一下,看看我能做到什么。我想接受这一点作为问题的答案,如果这对你来说没问题,Joachim SauerAlso你可以同意前端的ina协议,这样就不需要检查任务是否在后端解决,如果他们已经知道的话that@MarcosVasconcelos你能再详细一点吗?