Java Game Dev:图像闪烁?

时间:2013-07-25 17:05:30

标签: java random timer

我正在制作一个“太空入侵者风格”的游戏。您(播放器)在屏幕底部左右移动。每个窗口都会有一个敌人,你必须移动到窗口射击。

我正在研究弹出系统的敌人。敌人随机的窗口应该每3秒更换一次。这是我的代码:

public void render(GameContainer gc, StateBasedGame sbg, Graphics g)
throws SlickException {
    playbackground.setFilter(Image.FILTER_NEAREST);
    playbackground.draw(0, 0, s*10);
    quit.draw((w-175*s),5 *s,s/2);
    swegboiplayer.setFilter(Image.FILTER_NEAREST);
    //swegboiplayer.draw((w*s)/2-85, 450*s, s*5);
    swegboiplayer.draw((w*s)/2-(playery*s), 450*s, s*5);
    int enemylocation = new Random().nextInt(2) +1;
    if(enemylocation==1){
        enemy1.setFilter(Image.FILTER_NEAREST);
        enemy1.draw(200,170,s*10);
if(enemylocation==2){
enemy1.setFilter(Image.FILTER_NEAREST);
enemy1.draw(330,480,s*10);

}}

我需要随机方法来定时器,因此它每3秒更改一次。我该怎么做?截至目前,如果我使用该程序,敌人在窗口1并闪烁。我认为这是闪烁的,因为随机方法一直在执行。此外,敌人永远不会在窗口2中。一般来说这个方法有问题吗?

由于

P.S我不能使用Thread.sleep(),否则程序变黑

1 个答案:

答案 0 :(得分:0)

确保以下代码(缩进)不正确:

if(enemylocation==1){  // execute following code if enemyLocation == 1 ...

    enemy1.setFilter(Image.FILTER_NEAREST);
    enemy1.draw(200,170,s*10);

    if(enemylocation==2){ // ... never reach this code

        enemy1.setFilter(Image.FILTER_NEAREST);
        enemy1.draw(330,480,s*10);
    }
}

开始尝试:

if(enemylocation==1){

    enemy1.setFilter(Image.FILTER_NEAREST);
    enemy1.draw(200,170,s*10);
}

if(enemylocation==2){

    enemy1.setFilter(Image.FILTER_NEAREST);
    enemy1.draw(330,480,s*10);
}

if(enemylocation==3){

    enemy1.setFilter(Image.FILTER_NEAREST);
    enemy1.draw(...,...,s*10);
}

并阅读here以了解如何使用计时器并更新GUI。

相关问题