import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class PlaneGame extends JFrame implements ActionListener, KeyListener {
private Timer timer;
private int planeX = 250;
private int planeY = 500;
private int bulletX = 10;
private int bulletY = 10;
public PlaneGame() {
setTitle("飞机大战");
setSize(500, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
addKeyListener(this);
timer = new Timer(10, this);
timer.start();
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, 500, 600);
g.setColor(Color.WHITE);
g.fillRect(planeX, planeY, 50, 50);
if (bulletX != 10) {
g.fillRect(bulletX, bulletY, 10, 20);
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (bulletX != 10) {
bulletY = 10;
if (bulletY < 0) {
bulletX = 10;
bulletY = 10;
}
}
repaint();
}
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) {
planeX = 10;
} else if (key == KeyEvent.VK_RIGHT) {
planeX += 10;
} else if (key == KeyEvent.VK_SPACE && bulletX == 10) {
bulletX = planeX + 20;
bulletY = planeY;
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
public static void main(String[] args) {
PlaneGame game = new PlaneGame();
game.setVisible(true);
}
} 这个示例中,我们创建了一个名为PlaneGame的类,它继承了JFrame并实现了ActionListener和KeyListener接口,在构造函数中,我们设置了窗口的标题、大小、关闭操作、位置和不可调整大小,并将键盘监听器添加到窗口中,我们还创建了一个定时器,用于定期更新游戏状态。

paint方法负责绘制游戏画面,包括飞机和子弹。actionPerformed方法处理定时器事件,更新子弹的位置。keyPressed方法处理键盘事件,根据按键移动飞机或发射子弹。
要运行这个游戏,只需将这段代码保存为一个名为PlaneGame.java的文件,然后使用Java编译器编译并运行它。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复