我有一个程序,用户在网格中旅行并且必须杀死敌人。当他们这样做时,会出现一条消息,指出用户已经听到了尖叫声。
此消息仅在用户发射武器时显示一次。如果以下方法为真,我会显示消息:
public boolean deadWumpus()
{
for(int x=0;x<10;x++)
{
for(int y=0;y<10;y++)
{
if(map.grid[x][y].getDeadWumpus()==true)
return true;
}
}
return false;
}
然后我在paint()方法中有一行说明如果此方法为true,则显示消息。但是,由于没有调节器告诉它在用户触发时只运行一次,因此会继续显示。 我试图创建一个int以确保它只运行一次:
// at beginning of program
int once=0;
//in paint()
if(once==0){
if(deadWumpus()==true)
{
g.drawString("You hear a scream.",300,675);
}
}
once++;
使用它,它永远不会显示消息。我有没有办法让消息只在用户拍摄时显示一次,然后在用户下一次移动后消失? 感谢。
答案 0 :(得分:1)
每次在屏幕上绘制游戏框架时,都会调用paint()方法。当你把它绘制成'#34;只有一次,&#34;你只是画了一次#34;&#34;因为,对于只有一帧,由于帧正在快速更新,文本闪烁然后再也不会出现。我推荐这样的东西:
long userFired;
//当用户触发时 - &gt; userFired = System.currentTimeMillis();
paint() { /*the "2000" means that the text will display for 2 seconds*/
if(System.currentTimeMillis()-userFired < 2000 && deadWumpus()==true) {
g.drawString("You hear a scream.",300,675);
}
}