# JavaGame **Repository Path**: xindonhub/java-game ## Basic Information - **Project Name**: JavaGame - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-20 - **Last Updated**: 2025-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JavaGame JavaGame是一个用Java实现的类似Python Pygame的游戏开发模块,基于JavaFX构建,提供了简单易用的API来创建2D游戏。 ## 功能特性 ### 1. 图形渲染 - 支持基本图形绘制(矩形、圆形、线条、文本等) - 支持图像加载和绘制(支持透明度、旋转、缩放等效果) - 双缓冲技术,避免屏幕闪烁 - 支持离屏渲染 ### 2. 事件处理 - 键盘事件(按下、释放) - 鼠标事件(点击、移动、按下、释放、拖动、滚轮) - 事件队列机制,确保线程安全 ### 3. 音频管理 - 音效预加载和缓存 - 音效播放控制 ### 4. 窗口管理 - 自定义窗口大小和标题 - 支持窗口拖动 - 支持无标题栏窗口 - 系统托盘图标支持 ### 5. 其他功能 - 帧率控制 - 窗口特效开关 - 跨平台支持(基于JavaFX) ## 快速开始 ### 安装 1. 确保你已经安装了Java JDK 11或更高版本 2. 确保你已经安装了JavaFX SDK 3. 将JavaGame模块添加到你的项目中 ### 简单示例 ```java import common.JavaGame; import javafx.scene.paint.Color; import javafx.scene.text.Font; public class SimpleGame extends JavaGame { @Override public void init() { // 初始化代码 System.out.println("游戏初始化"); } public static void main(String[] args) { // 启动游戏,设置窗口大小和标题 startGame(SimpleGame.class, 800, 600, "我的第一个JavaGame"); SimpleGame game = getInstance(); // 游戏主循环 while (true) { // 清空屏幕 game.clear(); // 绘制矩形 game.drawRect(100, 100, 200, 150, Color.BLUE); // 绘制文本 game.drawText("Hello JavaGame!", 300, 200, Color.RED, new Font("Arial", 24)); // 绘制圆形 game.drawFillCircle(400, 300, 50, Color.GREEN); // 绘制线条 game.drawLine(100, 100, 300, 250, Color.BLACK, 2); // 更新显示 game.update(); // 控制帧率 game.tick(60); } } } ``` ## API文档 ### 核心类 #### JavaGame 游戏的核心类,提供了所有主要功能。 **构造方法** - `JavaGame()`: 创建一个带有退出按钮的游戏窗口 - `JavaGame(boolean showExitCross)`: 创建游戏窗口,可以指定是否显示退出按钮 **启动方法** - `static void startGame(Class gameClass, int width, int height, String title)`: 启动游戏 **绘制方法** - `void blit(Image img, double x, double y)`: 绘制图像 - `void blitWithOpacity(Image img, double x, double y, double opacity)`: 绘制带透明度的图像 - `void blitRotate(Image img, double x, double y, double angle)`: 旋转绘制图像 - `void drawText(String text, double x, double y, Color color, Font font)`: 绘制文本 - `void drawRect(double x, double y, double w, double h, Color color)`: 绘制矩形 - `void drawFillCircle(double x, double y, double radius, Color color)`: 绘制填充圆形 - `void drawLine(double x1, double y1, double x2, double y2, Color color, double lineWidth)`: 绘制线条 **事件处理** - `List getEvents()`: 获取并清空事件队列 **窗口管理** - `void setWindowIcon(String iconPath)`: 设置窗口图标 - `void setTrayIcon(String iconPath, String tooltip)`: 设置系统托盘图标 **音频管理** - `void setEffectPath(String effectPath)`: 设置音效路径 - `void setEffectEnabled(boolean isEffectEnabled)`: 启用/禁用音效 #### SoundEffectManager 音效管理类,负责音效的预加载和播放。 - `static void preloadEffect(String soundPath)`: 预加载音效 - `static void playEffect(String soundPath)`: 播放音效 #### EventType 事件类型枚举,包括键盘和鼠标事件。 #### GameEvent 游戏事件类,包装了原始的JavaFX事件。 ## 项目结构 ``` e:\JAVA\JavaGame/ └── src/ └── common/ ├── EventType.java # 事件类型枚举 ├── GameEvent.java # 游戏事件类 ├── JavaGame.java # 核心游戏类 └── SoundEffectManager.java # 音效管理器 ``` ## 技术栈 - Java 11+ - JavaFX - 双缓冲技术 - 线程安全设计 ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request! ## 联系方式 如有问题或建议,请随时联系项目维护者。