2013-07-25 3 views
0

Я создаю игру «Space-invaders style». Вы (игрок) перемещаетесь влево и вправо в нижней части экрана. В каждом окне будет один враг, и вы должны перейти в окно и стрелять.Jave Game Dev: Изображение мерцает?

Я работаю над системой всплывающих врагов. Окно, в котором враг случайен и должен меняться каждые 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. Что-то не так с методом в целом?

Благодаря

PS Я не могу использовать Thread.sleep() или иначе программа чернеет

ответ

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.

+0

Хорошо, спасибо! Как я могу сделать таймер для изменения местоположения противника каждые 3 секунды? – user2302825

+0

Я отредактировал ответ – rosco

+0

Это для Android ... и «расписание» для меня не работает – user2302825