java - 通过屏幕触摸速度调节游戏速度

标签 java android performance touch

我正在创建一个游戏,用户必须更快地点击屏幕才能让他们在游戏中走得更快,但是我遇到了一些问题。我已经制作了游戏,因此它会计算用户上次点击和当前点击的每分钟点击次数,但是这种方法似乎很不稳定并且效果不佳。我也想不出另一种方法来做到这一点,所以当他们根本不点击时,速度就会变慢。

我将如何为游戏创建这种机制,让用户点击得越快,游戏进行得越快,如果他们根本不点击,游戏就会变慢直至停止。

谢谢

这是我目前所做的一个 fragment ,用于计算用户的每分钟点击次数 (TPM)。 (这是在触摸方法中)。我目前正在将 TPM 传递给更新方法,该方法在每次更新时将背景移动 TPM/100(它以 30FPS 运行)

 if (thisTouch == 0 || lastTouch == 0) {
            Log.d("info","First Touch");
            thisTouch = lastTouch = System.currentTimeMillis();
        } else {
            Log.d("d","touch");
            thisTouch = System.currentTimeMillis();

            long difference = thisTouch - lastTouch;

            TPM = (int)((1000*60)/difference);

            lastTouch = thisTouch;
        }

我想知道如何更改此设置,以便当他们更快地点击时游戏速度加快,而当他们不触摸屏幕时游戏速度变慢。

最佳答案

也许你可以这样做:

  • 创建一个 PriorityQueue
  • 每当用户点击屏幕时,将 (currentTime + someTimeOut) 添加到队列
  • 每当您要检查当前速度(例如队列大小)时,首先删除所有元素 > currentTime。

当然,如果您这样做,请不要忘记添加适当的线程安全措施。

关于java - 通过屏幕触摸速度调节游戏速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523548/

相关文章:

java - Facebook 登录按钮未显示在 ActionbarActivity 中

java - 在 Android 应用程序中更新背景颜色并在其间进行短暂 sleep

android - AudioTrack 播放静态声音

python-3.x - 寻找一种有效的迭代方式

algorithm - 如何搜索给定 x 的 10^n ≡ 1 mod(9x) 的最小 n

java - InputStreamReader 与 FileReader

java - 根据其属性从 Set 中选择一个元素

java - 从字符串中删除制表符

android - Android Studio中的Gradle同步失败,没有构建Gradle

mysql - 在 SQL 查询中使用 "AND"和 "OR"