使用java time和swing编写代码,使enemy这个添加的图片从上方向下掉落,同时鼠标控制一个plane图片移动,并且两个飞机碰撞后没有影响
时间: 2024-04-10 19:27:09 浏览: 81
好的,下面是一个示例代码,实现了敌人图片从上方向下掉落,并且鼠标控制飞机图片移动,当两个飞机碰撞时没有影响。
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class EnemyPlaneGame extends JFrame {
private Timer timer;
private int enemyX;
private int enemyY;
private int planeX;
private int planeY;
public EnemyPlaneGame() {
setTitle("Enemy Plane Game");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);
setLocationRelativeTo(null);
enemyX = 200; // 初始位置
enemyY = 0;
planeX = 200;
planeY = 300;
timer = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
enemyY += 1; // 敌人向下移动的距离
// 碰到底部时重新开始
if (enemyY >= getHeight()) {
enemyY = 0;
}
// 判断飞机是否与敌人发生碰撞
if (planeX <= enemyX + 50 && planeX + 50 >= enemyX && planeY <= enemyY + 50 && planeY + 50 >= enemyY) {
// 发生碰撞,处理逻辑
System.out.println("飞机与敌人碰撞!");
}
repaint();
}
});
timer.start();
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
planeX = e.getX(); // 飞机跟随鼠标移动
planeY = e.getY();
repaint();
}
});
}
@Override
public void paint(Graphics g) {
super.paint(g);
// 绘制敌人图片
ImageIcon enemyIcon = new ImageIcon("enemy.png");
Image enemyImage = enemyIcon.getImage();
g.drawImage(enemyImage, enemyX, enemyY, null);
// 绘制飞机图片
ImageIcon planeIcon = new ImageIcon("plane.png");
Image planeImage = planeIcon.getImage();
g.drawImage(planeImage, planeX, planeY, null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new EnemyPlaneGame().setVisible(true);
}
});
}
}
```
在上述代码中,我们在原有的敌人下落游戏基础上增加了飞机图片,并通过鼠标移动事件来控制飞机的位置。在每次计时器动作事件中,我们判断飞机与敌人是否发生碰撞,如果碰撞,则可以添加相应的处理逻辑。
同样地,我们假设存在名为"enemy.png"和"plane.png"的敌人和飞机图片文件。您需要将这两个文件放置在与代码文件相同的目录下,或根据需要更改图片文件的路径。
请根据您的需求修改窗口大小、敌人和飞机移动速度等参数。希望这能满足您的要求!
阅读全文