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
修改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);
原文地址: https://www.cveoy.top/t/topic/hbFz 著作权归作者所有。请勿转载和采集!