加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java蛇游戏避免使用Thread.sleep

发布时间:2020-12-15 01:07:49 所属栏目:Java 来源:网络整理
导读:我用Java制作了我的第一个游戏 Snake, 它的主循环看起来像这样 while (true) { long start = System.nanoTime(); model.eUpdate(); if (model.hasElapsedCycle()) { model.updateGame(); } view.refresh(); long delta = (System.nanoTime() - start) / 1000

我用Java制作了我的第一个游戏 – Snake,
它的主循环看起来像这样

while (true)
    {
        long start = System.nanoTime();
        model.eUpdate();
        if (model.hasElapsedCycle())
        {
            model.updateGame();
        }
        view.refresh();
        long delta = (System.nanoTime() - start) / 1000000L;
        if (delta < model.getFrameTime())
        {
            try
            {
                Thread.sleep(model.getFrameTime() - delta);
            } catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }

但是在我的项目的要求中有一个响应点,所以我需要将Thread.sleep()更改为其他内容,但我不知道如何以简单的方式执行此操作.
提前感谢任何建议.

最佳答案
我用Java完成了一两个简单的游戏并处理主游戏循环我使用了Swing Timer.计时器将允许您在提供的延迟过去后设置要触发的ActionListener.中间延迟将来自您的帧速率.最基本的用法如下:

Timer timer = new Timer(delay,listener);
timer.start();

这会将初始和中间延迟设置为相同的值.如果需要,您也可以将它们设置为不同的值,如下所示:

Timer timer = new Timer(delay,listener);
timer.setInitialDelay(0);
timer.start();

在上面的示例中,侦听器将在启动后立即触发,并在此后延迟.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读