2013-07-25 112 views
0

我正在製作「太空侵略者風格」遊戲。你(玩家)在屏幕的底部左右移動。每個窗口會有一個敵人,你必須移動到窗口並拍攝。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並閃爍。我認爲這是閃爍的,因爲隨機方法不斷被執行。另外,在第二個窗口中,敵人永遠不會出現。一般情況下,這個方法有什麼問題嗎?

感謝

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