gpt4 book ai didi

java - 测试玩家是否单击了 Java 游戏中的众多对象之一的有效方法是什么?

转载 作者:行者123 更新时间:2023-11-29 06:17:38 24 4
gpt4 key购买 nike

这是一个基本问题,但由于我编写 Java 代码的时间不长,所以我想从更有经验的人那里得到意见。假设我有一个 Java 游戏,其中屏幕上有许多对象(大约 30 个)。玩家可以点击一个对象,每个对象以不同方式处理鼠标点击。

我的问题是:如果玩家点击游戏窗口,有什么好的方法可以测试他是否点击了其中一个对象,如果是,则触发该对象的鼠标点击事件处理程序?

这是我到目前为止的想法:我的小程序有一个鼠标监听器,它还可以有一个当前存在的所有游戏对象的列表。小程序的事件处理程序可以遍历对象列表,并通过类似 gameObject.isInsideBBox(int mouseX, int mouseY) 的方式查看点击坐标是否在该对象的边界框内。

这设置起来很简单,但我觉得效率很低。如果对象数量很大,则每次用户单击时程序都必须遍历列表。这不会成为性能问题吗?

一种替代方法是让每个对象都有自己的 MouseListener 并将所有对象添加到某种全局容器中。这种方法在性能方面会比上述方法更有效吗?另一个问题是这些组件和容器对象似乎是在 Java 的 Swing 库中定义的,但我没有将 Swing 用于任何其他目的。我觉得这会是对图书馆的滥用。

有任何反馈/意见吗?

(我很想知道这些方法是否可以移植到 Android。我知道这是一个不同的话题,但如果您对此有任何见解,请告诉我,我将不胜感激。)

最佳答案

屏幕上的 30 个对象已经足够少了,应该没什么大不了的。一个简单的线性搜索应该仍然足够快。考虑对此进行优化的唯一真正原因是,如果“30”可能方式,并且您实际上正在处理(比方说)1000 多个对象。

在这种情况下,一种简单的可能性是按一个维度对对象进行排序,这样您就可以在该维度上进行二分查找。这应该只留下几个对象来搜索以在另一个方向上找到正确的值。

关于java - 测试玩家是否单击了 Java 游戏中的众多对象之一的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4475922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com