我正在制作一个“太空入侵者风格”的游戏。您(播放器)在屏幕底部左右移动。每个窗口都会有一个敌人,你必须移动到窗口射击。
我正在研究弹出系统的敌人。敌人随机的窗口应该每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(),否则程序变黑
答案 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。