在尝试做一个贪吃蛇游戏,在做到蛇的移动的时候,需要一直不停地绘制蛇的最新位置,
窗口的lunch方法:
public void lunch(){
GameWin gw = new GameWin();
//窗口是否可见
gw.setVisible(true);
//设置窗口的大小
gw.setSize(600,600);
//设置窗口的位置在屏幕中央
gw.setLocationRelativeTo(null);
//设置窗口的标题
gw.setTitle("贪吃蛇");
//添加while循环,使得蛇不停运动
while(true){
repaint();
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
绘制:
```java
public void paint(Graphics g) {
//绘制灰色背景
g.setColor(Color.gray);
//绘制矩形
g.fillRect(0,0,600,600);
//绘制网格,网格颜色和背景色不一样
g.setColor(Color.BLACK);
for (int i = 0; i < 20; i++) {
//横线
g.drawLine(0,i * 30,600,i * 30);
//竖线
g.drawLine(i * 30,0,i * 30,600);
}
//绘制蛇头
ho.paintSelf(g);
}
ho.paintSelf()方法:
```java
public void paintSelf(Graphics g) {
move();
super.paintSelf(g);
}
//控制蛇移动的方法
public void move(){
//先对蛇头的方向判断
switch (direction) {
case "up" -> y -= height;
case "down" -> y += height;
case "left" -> x -= width;
case "right" -> x += width;
default -> {
}
}
}
但是运行起来时,蛇不会自己移动,只有不停地使窗口最小化和切换到前台才能看到蛇在动,不点击蛇就不会动。请问哪里出问题了?
示意图gif