Skip to content

zj05409/SimpleRTS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SimpleRTS - 简单即时战略游戏

一个使用HTML5 Canvas和原生JavaScript实现的小型即时战略游戏。游戏采用模块化结构,便于维护和扩展。

游戏截图

游戏特性

  • 资源收集与单位生产:收集资源并生产单位
  • 单位合并与升级:相同等级的单位可以合并升级
  • 自动战斗系统:单位会自动攻击范围内的敌人
  • 多等级单位:不同等级的单位拥有不同的战斗力
  • 编队系统:可以创建和管理多个单位编队
  • AI敌人:电脑控制的敌人会攻击你的基地和单位

游戏玩法

  1. 游戏目标:摧毁敌方基地获得胜利,并保护自己的基地不被摧毁。
  2. 基础操作
    • 左键点击基地:创建新单位(消耗10资源)
    • 左键点击单位:选择单位
    • 左键拖动:框选多个单位
    • 按住Shift键同时左键点击:选择多个单位
    • 右键点击地图:移动选中的单位
    • 右键点击资源节点:让选中的单位去收集资源
    • 右键点击敌人:命令选中的单位攻击敌人
    • 数字键(1-9):选择对应编号的编队
    • Ctrl+Shift+数字键(1-9):保存当前选中的单位为编队
    • M键:合并选中的相同等级单位

游戏元素

  • 基地(紫色方块):用于创建新单位
  • 单位(蓝色圆形):可以移动、收集资源和攻击敌人
  • 资源节点(黄色圆形):包含可收集的资源
  • 敌人(红色圆形):会攻击你的基地和单位
  • 敌方基地(红色方块):会产生敌方单位
  • UI显示:显示当前拥有的资源数量和单位数量

单位升级系统

游戏实现了单位合并升级系统:

  • 等级1:蓝色(初始单位)
  • 等级2:紫色(攻击力提升2.5倍,更高生命值)
  • 等级3:绿色(攻击力提升6.25倍,最高生命值)

单位可以通过两种方式升级:

  1. 自动合并:当两个相同等级的单位靠近时,会自动合并成一个更高等级的单位
  2. 手动合并:选中多个相同等级的单位,按M键进行合并

游戏策略提示

  • 先快速收集资源,扩大单位数量
  • 尽量合并单位形成高等级部队
  • 派出少量单位去骚扰敌方资源收集
  • 使用编队功能便于管理大量单位
  • 注意保护自己的基地和资源节点
  • 高等级单位比大量低等级单位更有效

项目结构

项目采用了模块化设计,将不同功能分离到不同的文件中:

/src
  /entities          - 游戏实体类
    Entity.js        - 基础实体类
    Base.js          - 玩家基地类
    Unit.js          - 玩家单位类
    Enemy.js         - 敌人类
    EnemyBase.js     - 敌方基地类
    EnemyUnit.js     - 敌方单位类
    ResourceNode.js  - 资源节点类
  config.js          - 游戏配置
  effects.js         - 特效系统
  game.js            - 游戏主逻辑
  input.js           - 输入处理
  main.js            - 游戏入口
  state.js           - 游戏状态管理
  utils.js           - 工具函数
index.html           - 主页面

如何运行

  1. 克隆或下载本仓库

    git clone https://github.com/yourusername/SimpleRTS.git
    cd SimpleRTS
  2. 有两种方式运行游戏:

    • 直接在浏览器中打开index.html文件
    • 使用本地服务器(推荐,避免某些浏览器的CORS限制)
      # 使用Python
      python -m http.server
      
      # 或使用Node.js的http-server
      npx http-server
  3. 在浏览器中访问游戏(如使用本地服务器,通常是http://localhost:8000)

开发指南

修改游戏配置

游戏的大部分参数都在src/config.js文件中进行配置,包括:

  • 游戏画布大小
  • 单位属性(速度、生命值、攻击力)
  • 资源收集速率
  • 敌人生成速率和属性
  • 合并机制参数

添加新的游戏实体

  1. src/entities/目录下创建新的实体类文件
  2. 继承基础的Entity类或其他适合的类
  3. 在游戏主循环中添加对新实体的处理

扩展游戏功能

  • 添加新的输入处理逻辑:修改src/input.js
  • 调整游戏状态管理:修改src/state.js
  • 增加新的视觉效果:扩展src/effects.js

技术细节

  • 使用原生JavaScript ES6模块化开发
  • 采用面向对象编程思想,使用类继承结构
  • 使用Canvas API进行游戏渲染
  • 实现了基本的游戏循环、碰撞检测和状态管理

游戏性能优化

游戏已经实现了一些基本的性能优化:

  • 使用requestAnimationFrame进行渲染
  • 优化碰撞检测算法
  • 只在需要时更新画布
  • 有限的特效处理

改进方向

  • 添加更多单位类型和特殊能力
  • 实现更复杂的AI策略
  • 添加声音效果和更多视觉效果
  • 实现小地图功能
  • 添加游戏内教程
  • 实现游戏存档功能
  • 添加多人游戏支持
  • 添加移动设备触控支持

贡献指南

欢迎贡献代码、报告问题或提出改进建议!

  1. Fork本仓库
  2. 创建您的特性分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推送到分支(git push origin feature/amazing-feature)
  5. 开启一个Pull Request

许可证

本项目采用MIT许可证 - 查看LICENSE文件了解详情

联系方式

如有问题或建议,请通过以下方式联系:


希望您享受这个简单的RTS游戏!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published