用java写一个坦克大战游戏
时间: 2023-12-20 14:04:27 浏览: 31
好的,下面是一个简单的坦克大战游戏的Java代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TankGame extends JFrame {
private static final long serialVersionUID = 1L;
// 游戏面板
MyPanel mp;
public TankGame() {
super("坦克大战游戏");
// 初始化游戏面板
mp = new MyPanel();
// 添加游戏面板
this.add(mp);
// 设置窗口大小
this.setSize(800, 600);
// 显示窗口
this.setVisible(true);
// 设置窗口关闭方式
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TankGame();
}
}
// 游戏面板类
class MyPanel extends JPanel implements KeyListener {
private static final long serialVersionUID = 1L;
// 坦克
Tank tank;
public MyPanel() {
super();
// 初始化坦克
tank = new Tank(100, 100);
// 添加键盘监听器
this.addKeyListener(this);
// 设置焦点
this.setFocusable(true);
}
// 绘制方法
@Override
public void paint(Graphics g) {
super.paint(g);
// 绘制坦克
tank.draw(g);
}
// 键盘按下事件
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
tank.moveUp();
break;
case KeyEvent.VK_DOWN:
tank.moveDown();
break;
case KeyEvent.VK_LEFT:
tank.moveLeft();
break;
case KeyEvent.VK_RIGHT:
tank.moveRight();
break;
default:
break;
}
// 重绘面板
this.repaint();
}
// 键盘释放事件
@Override
public void keyReleased(KeyEvent e) {}
// 键盘输入事件
@Override
public void keyTyped(KeyEvent e) {}
}
// 坦克类
class Tank {
// 坦克位置
private int x, y;
public Tank(int x, int y) {
super();
this.x = x;
this.y = y;
}
// 绘制方法
public void draw(Graphics g) {
g.setColor(Color.RED);
g.fillRect(x, y, 50, 50);
}
// 移动方法
public void move(int dx, int dy) {
x += dx;
y += dy;
}
// 上移
public void moveUp() {
move(0, -10);
}
// 下移
public void moveDown() {
move(0, 10);
}
// 左移
public void moveLeft() {
move(-10, 0);
}
// 右移
public void moveRight() {
move(10, 0);
}
}
```
这个代码实现了一个简单的坦克大战游戏,其中包括一个坦克类和一个游戏面板类。玩家可以通过键盘控制坦克的移动,通过重绘面板实现游戏画面的更新。