2013-07-25 2 views
-1

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

Я работаю над системой всплывающих врагов. Окно, в котором враг случайен и должен меняться каждые 3 секунды. Вот мой код для этого:

int enemylocation = new Random().nextInt(2) +1; 
    if(enemylocation==1){ 
     enemy1.setFilter(Image.FILTER_NEAREST); 
     enemy1.draw(200,170,s*10); 
    } 
    if(enemylocation==2){ 
     enemy2.setFilter(Image.FILTER_NEAREST); 
     enemy2.draw(200,360,s*10); 

    } 

Все работает, но случайное число часть всегда выбирая новый номер, так что оба окна мерцают. Как я могу задержать таймер, чтобы изменить значение клизлилозы каждые 3 секунды, а не постоянно? Мне нужно использовать TimerTask, потому что у меня нет действующей системы тиков.

Thanks

+1

Вы спрашивали то же самое 5 раз ... – DannyMo

ответ

0

В вашем фрагменте отсутствует TimerTask. Во всяком случае, TimerTask имеет аргумент, с помощью которого вы можете установить задержку, see here.

Примечание это в миллисекундах, поэтому для того, чтобы ждать 1 секунду, установите задержку 1000.

0

Это, как вы можете использовать java.util.Timer. Надеюсь, после этого вы не повторите свой вопрос.

import java.util.Timer; 
import java.util.TimerTask; 

public class TimerDemo { 
    final static Random ran = new Random(); 
    static int enemylocation = 0; 
    static Timer tm = new Timer(); 
    static long startTime = System.currentTimeMillis(); 

    public static void main(String[] a) { 
     tm.schedule(new TimerTask() { 

      @Override 
      public void run() { 
       enemylocation = ran.nextInt(2) + 1; 
       System.out.println("enemylocation:" + enemylocation); 
       System.out.println("time:" 
         + (System.currentTimeMillis() - startTime)/1000); 
      } 
     }, 1, 3000); 

    } 

} 
+0

Где я могу разместить это в своем коде? – user2302825

+0

@ user2302825 Рисунок, что мой друг. Я не собираюсь писать все для вас. Не обижайтесь, но вы пишете игру, тогда вам следует знать, как вставлять/использовать этот код с собой. Также посмотрите на ссылку, которую я дал, и попытайтесь понять эту штуку. – Smit

+0

Ну, я поместил его в рендер - он все еще продолжает мигать. Затем я попробовал обновление ... то же самое. Кажется, что он не ждет полных трех секунд, чтобы выполнить PlayState.enemylocation = new Random(). NextInt (2) + 1; Независимо от того, где я его помещаю, изображения все еще мерцают. – user2302825

Смежные вопросы