java 使用swing实现飞机随着鼠标移动,敌机从上往下从左往右飞。
时间: 2024-04-10 14:28:38 浏览: 75
下面是一个使用Java Swing实现飞机随着鼠标移动,敌机从上往下、从左往右飞的示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
public class PlaneGame extends JFrame {
private int planeX;
private int planeY;
private int enemyX;
private int enemyY;
public PlaneGame() {
this.setTitle("飞机游戏");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800, 600);
this.setResizable(false);
this.getContentPane().setBackground(Color.BLACK);
this.setLayout(null);
planeX = 400;
planeY = 500;
enemyX = 0;
enemyY = 0;
this.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
planeX = e.getX();
planeY = e.getY();
repaint();
}
});
this.setVisible(true);
}
@Override
public void paint(Graphics g) {
super.paint(g);
// 绘制飞机
g.setColor(Color.GREEN);
g.fillOval(planeX, planeY, 20, 20);
// 绘制敌机
g.setColor(Color.RED);
g.fillRect(enemyX, enemyY, 40, 40);
// 更新敌机位置
if (enemyX <= 800) {
enemyX += 5;
} else {
enemyX = 0;
enemyY += 50;
}
// 判断是否碰撞
if (planeX >= enemyX && planeX <= enemyX + 40 && planeY >= enemyY && planeY <= enemyY + 40) {
JOptionPane.showMessageDialog(this, "游戏结束!", "提示", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
// 重新绘制
repaint();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new PlaneGame();
}
});
}
}
```
在上面的代码中,我们创建了一个继承自JFrame的PlaneGame类。在构造函数中,我们设置了窗口的一些属性,并初始化飞机和敌机的初始位置。
通过添加MouseMotionListener,我们可以监听鼠标移动事件,并更新飞机的位置。在paint方法中,我们使用Graphics对象绘制飞机和敌机,并根据一定的规则更新敌机的位置。同时,我们判断飞机和敌机是否发生碰撞,如果发生碰撞,则弹出一个提示框并结束游戏。
最后,在main方法中使用SwingUtilities.invokeLater()启动游戏。
你可以将上述代码保存为Java文件并编译运行,即可看到飞机随着鼠标移动,敌机从上往下、从左往右飞的游戏界面。
阅读全文