我正在尝试制作一款贪吃蛇游戏,但在使“食物”以固定间隔(我想要让它每10秒出现一次)随机出现的问题上遇到了麻烦。当我在程序中给出一个简短的延迟时间(1000毫秒)后运行程序时,食物开始在屏幕上不同位置极快地闪现。我想要做的是让食物每10秒在随机位置逐个出现,而不是围绕着屏幕快速闪烁。非常感谢任何帮助。
附言:我以前从未做过这样的事情,因此如果代码看起来有点粗糙,请见谅。非常感谢任何关于编码的建议。
编辑:我知道这仍然不正确,但我只想知道目前是否至少朝着正确的方向前进。现在,“食物”只是坐落在框架的右上角。我的定时器或列表是否存在问题,还是整个程序都有问题?顺便说一句,如果更新我的代码只是为了显示新问题在这个网站上看起来很不好,请告诉我,我会在评论部分寻求帮助并停止编辑。
附言:我以前从未做过这样的事情,因此如果代码看起来有点粗糙,请见谅。非常感谢任何关于编码的建议。
编辑:我知道这仍然不正确,但我只想知道目前是否至少朝着正确的方向前进。现在,“食物”只是坐落在框架的右上角。我的定时器或列表是否存在问题,还是整个程序都有问题?顺便说一句,如果更新我的代码只是为了显示新问题在这个网站上看起来很不好,请告诉我,我会在评论部分寻求帮助并停止编辑。
package snake;
import java.awt.* ;
import java.awt.event.*;
import java.util.* ;
import javax.swing.*;
import javax.swing.Timer;
/**
*
* @author Carlos
*/
public class Pellet extends JPanel
{
Random randomNumber = new Random() ;
int x = 0 ;
int y = 0 ;
private Game game ;
private Timer timer ;
private final int DELAY = 100 ;
private ArrayList<Pellet> al = new ArrayList<>() ;
public Pellet(Game game)
{
this.game = game ;
}
@Override
public void paint(Graphics g)
{
super.paintComponent(g);
g.fillOval(x, y, 10, 10);
for(int i = 0 ; i < al.size() ; i++)
{
Pellet p = al.get(i) ;
p.paintComponent(g);
}
}
public void pelletTimer()
{
timer = new Timer(DELAY, new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
x = randomNumber.nextInt(game.getWidth()) ;
y = randomNumber.nextInt(game.getHeight()) ;
Pellet p = new Pellet(game) ;
al.add(p) ;
repaint() ;
}
}) ;
timer.start();
}
}