# TankBattle-Java **Repository Path**: liu-zichen1234/tank-battle-java ## Basic Information - **Project Name**: TankBattle-Java - **Description**: 基于 Java 开发的经典坦克对战桌面游戏,用于学习 Java 桌面应用开发 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-03 - **Last Updated**: 2026-01-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 坦克大战 Java 版 一个基于 Java AWT/Swing 开发的经典坦克大战游戏。 ## 项目简介 本项目是一个复刻经典坦克大战的 Java 游戏,提供了完整的游戏体验,包括玩家坦克控制、敌方坦克AI、多关卡系统、碰撞检测、子弹管理等核心功能。 ## 功能特性 - **玩家坦克控制**:使用方向键移动坦克,空格键发射子弹 - **敌方坦克AI**:自动移动和射击的敌方坦克 - **多关卡系统**:包含多个难度递增的关卡 - **碰撞检测**:实现坦克与墙壁、子弹与坦克、坦克与坦克之间的碰撞检测 - **对象池管理**:使用对象池管理子弹,提高游戏性能 - **游戏状态管理**:菜单、运行、暂停、结束等状态切换 - **随机地图生成**:每关随机生成墙壁布局 ## 环境要求 - JDK 8 或更高版本 - 支持 Java AWT/Swing 的图形界面环境 ## 快速开始 ### 编译运行 ```bash # 编译项目 javac -d bin src/com/TANK/app/Main.java # 运行游戏 java -cp bin com.TANK.app.Main ``` ### 目录结构 ``` tank-battle-java/ ├── src/com/TANK/ │ ├── app/ │ │ └── Main.java # 游戏入口类 │ ├── game/ │ │ ├── Bullet.java # 子弹类 │ │ ├── CollisionDetector.java # 碰撞检测器 │ │ ├── GameFrame.java # 游戏主窗口和游戏循环 │ │ ├── LevelManager.java # 关卡管理器 │ │ └── Wall.java # 墙壁类 │ ├── tank/ │ │ ├── EnemyTank.java # 敌方坦克类 │ │ ├── MyTank.java # 玩家坦克类 │ │ └── Tank.java # 坦克抽象基类 │ └── until/ │ ├── BulletsPool.java # 子弹对象池 │ ├── Constant.java # 游戏常量定义 │ └── MyUtil.java # 工具类 ├── res/ # 图片资源目录 └── LICENSE ``` ## 游戏操作 | 按键 | 功能 | |------|------| | ↑↓←→ | 移动坦克 | | 空格 | 发射子弹 | | ESC | 暂停/继续游戏 | | Enter | 确认选择 | ## 游戏状态 游戏包含以下状态: - **MENU**:主菜单界面 - **HELP**:帮助说明 - **ABOUT**:关于信息 - **RUN**:游戏运行中 - **PAUSE**:游戏暂停 - **OVER**:游戏结束 ## 核心类说明 ### GameFrame 游戏主窗口类,继承自 `Frame`,负责游戏主循环、渲染和状态管理。 ### Tank(抽象类) 坦克基类,定义坦克的通用属性和行为: - 位置、速度、方向、状态 - 生命值、攻击力 - 子弹管理 ### MyTank 玩家坦克类,继承自 `Tank`,响应用户输入。 ### EnemyTank 敌方坦克类,继承自 `Tank`,包含自动寻路和射击AI。 ### Bullet 子弹类,负责子弹的移动和绘制。 ### CollisionDetector 碰撞检测工具类,检测各种碰撞情况: - 子弹击中坦克 - 坦克撞墙 - 子弹撞墙 - 坦克相撞 ### LevelManager 关卡管理器,负责: - 关卡初始化 - 难度递增设置 - 敌人生成管理 - 关卡完成判定 ## 许可证 本项目遵循 MIT 许可证。