修改D类的run方法:

public void run() { try { while (true) { for (int i = 0; i < v.size() - 1; i++) { Point p = v.get(i); Point p2 = v.get(i + 1); p.x = p2.x; p.y = p2.y; } Point p = v.get(v.size() - 1); if (direction == 0) { p.x = p.x + 10; } if (direction == 1) { p.x = p.x - 10; } if (direction == 2) { p.y = p.y - 10; } if (direction == 3) { p.y = p.y + 10; }

        // 添加边界限制
        if (p.x < 0 || p.x >= getWidth() - 10 || p.y < 0 || p.y >= getHeight() - 10) {
            JOptionPane.showMessageDialog(this, "游戏结束,得分:" + (v.size() - 4));
            System.exit(0);
        }

        for (int i = 0; i < v.size(); i++) {
            Point p2 = v.get(i);
            if (p.x == p2.x && p.y == p2.y && i != v.size() - 1) {
                JOptionPane.showMessageDialog(this, "游戏结束,得分:" + (v.size() - 4));
                System.exit(0);
            }
            if (p.x == food.x && p.y == food.y) {
                int t = r.nextInt(20);
                food.x = t * 10;
                food.y = t * 10;

                v.add(new Point(p.x, p.y));
                break;
            }
        }
        repaint();
        Thread.sleep(100);
    }
} catch (Exception e) {

}

} // 添加积分功能 public void paint(Graphics g) { super.paint(g); // 绘制积分 g.setColor(Color.black); g.drawString("得分:" + (v.size() - 4), 10, getHeight() - 10); for (int i = 0; i < v.size(); i++) { Point p = v.get(i); int x = p.x; int y = p.y; if (i == v.size() - 1) { g.setColor(Color.blue); g.fillOval(x, y, 9, 9); } else { g.setColor(Color.black); g.fillOval(x, y, 9, 9); } }

int x = food.x;
int y = food.y;
g.setColor(Color.red);
g.fillRect(x, y, 9, 9);
import javaawt;import javaxswing;import javaawtevent;import javautil;public class test extends JFrame implements ActionListener String name; JButton jbn = new JButton开始; D jpn = new D; te

原文地址: https://www.cveoy.top/t/topic/hbFz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录