Skip to content

tianguantg/EasyIsaac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EasyIsaac(学习项目)

Language Library Platform License: Unlicense

简介 (Introduction)

本项目 EasyIsaac 是一个基于 EasyX 图形库实现的 射击小游戏,作为 C 语言课程设计 完成。游戏的玩法和视觉风格模仿了著名的独立游戏 《以撒的结合》(The Binding of Isaac)

因为 EasyX 库的要求使用了C++编译,但代码遵循 C 语言语法。 运行前请阅读安装与运行

本项目完全开源,您可以自由使用、修改、分发,无需任何限制。

注意: 本项目作为课程设计已经完成,目前没有计划进行后续更新和维护。

特性 (Features)

  • 基于 EasyX 实现的 2D 图形渲染。
  • 模仿《以撒的结合》的俯视角射击玩法。
  • 包含角色移动、子弹发射与碰撞检测。
  • 使用掩码图技术实现部分图片的透明效果。
  • 包含简单的地图生成逻辑(目前为单个房间)。
  • 集成了简单的音效和背景音乐播放 (使用 mciSendString)。
  • 使用了自定义字体(方正流行体_GBK)用于界面显示。
  • 支持显示碰撞箱(调试功能)。

截图 (Screenshots)

开始界面: EasyIsaac Start Menu

游戏主菜单: EasyIsaac Main Menu

游戏画面(实际画面为60帧): EasyIsaac Gameplay

排行榜: EasyIsaac Rank

操作说明 (Controls)

  • 移动 (Movement): W A S D
  • 射击 (Shoot): (方向键)
  • 返回 / 暂停 (Back / Pause): Esc
  • 确定 (Confirm): Space (空格键) 或 Enter (回车键)
  • 显示/隐藏碰撞箱 (Toggle Hitboxes): U

技术栈与依赖 (Tech Stack & Dependencies)

  • 语言 (Language): C++ (C 风格语法)
  • 图形库 (Graphics Library): EasyX (官网: easyx.cn)
  • 核心库 (Core Libraries):
    • <easyx.h>
    • <stdio.h>
    • <stdlib.h>
    • <time.h>
    • <math.h>
    • <shlobj.h> (用于特定 Windows 功能)
    • winmm.lib (通过 #pragma comment(lib, "winmm.lib") 链接,用于多媒体功能,如声音播放)
  • 开发环境 (IDE): Visual Studio 2022
  • 操作系统 (OS): Windows

安装与运行 (Setup & Run)

  1. 环境准备:

    • 确保你的操作系统是 Windows
    • 安装 Visual Studio 2022 (下载地址)。
    • 下载并安装 EasyX 库。前往 EasyX 官网 (easyx.cn/t/download) 下载最新版的安装程序(通常是一个 .exe 文件),运行它并勾选Visual Studio 2022,EasyX库会自动安装到VS2022中。
  2. 获取项目:

    • 克隆或下载此完整仓库到本地。
  3. 配置 Visual Studio:

    • 使用 Visual Studio 2022 打开项目根目录下的 MyIsaac.sln 文件。
    • 在 VS 2022界面顶部导航栏,点击 “调试”,下拉菜单中选择 “MyIsaac 调试属性”
    • 导航到 配置属性 -> 高级 -> 字符集
    • 将其设置为 “使用多字节字符集”。点击“应用”并“确定”。
  4. 编译与运行:

    • 直接点击“本地 Windows 调试器”(或按F5)即可运行。

项目结构 (Project Structure)

EasyIsaac/
├── assets/                     # 资源文件
│   ├── fonts/                  # 字体文件
│   │   └── 方正流行体_GBK.TTF  # 主菜单等使用的字体
│   ├── images/                 # 图片贴图
│   │   ├── bullet/             # 子弹图片 (前后景用于透明效果)
│   │   ├── character/          # 角色图片 (前后景用于透明效果)
│   │   └── ...                 # 其他 (怪物、障碍物等)
│   └── sounds/                 # 音效和音乐文件
│       ├── dead.mp3
│       └── ...
├── src/                        # 源代码
│   ├── main.cpp                # 主程序入口,游戏循环,渲染,事件处理,资源管理
│   ├── room.cpp                # 房间/地图管理 (地图生成, BFS寻路算法)
│   ├── tool.cpp                # 工具函数 (按键检测, 定时器, 数学函数等)
│   └── 标头.h                  # 头文件 (结构体定义, 全局变量声明, 函数原型)
└── EasyIsaac.sln               # Visual Studio 解决方案文件 (使用 VS2022 打开)
  • assets/images: 图片资源主要来源于游戏《以撒的结合》,部分经过了修改(如 Photoshop 处理)。透明效果是通过同时加载背景图 (_back.jpg) 和掩码图 (_front.jpg) 来实现的。
  • assets/sounds: 音效和音乐文件同样来源于《以撒的结合》。
  • src/: 代码文件的详细功能划分请参考文件内的注释或以下概览:
    • main.cpp: 游戏主逻辑,包括初始化、资源加载/释放、游戏循环、状态更新、渲染(角色、障碍物、UI)、事件处理(移动、射击)、碰撞检测。
    • room.cpp: 负责地图相关的功能,如使用 BFS 算法进行寻路或地图生成逻辑。
    • tool.cpp: 提供各种辅助功能,例如精确的按键检测、计时器、数学运算(如返回最大值)、坐标转换等。
    • 标头.h: 定义了整个项目共享的数据结构(游戏状态、房间状态、玩家状态、实体链表节点、子弹链表节点等)、常量、全局变量声明以及所有主要函数的原型。

已知问题与局限性 (Known Issues & Limitations)

  • 音效播放: 使用 mciSendString 播放音效时,同一个音效无法重叠播放,必须等待当前播放完成后才能再次触发播放同一个音效。
  • 按键监听: 游戏窗口即使不在前台(非活动窗口)时,仍然会响应键盘输入。
  • 游戏内容: 目前游戏只有一个固定房间,没有实现《以撒的结合》中进入不同房间的机制。
  • 敌人/Boss: 缺乏复杂的敌人行为和 Boss 战。
  • 开发状态: 项目已停止开发,不太可能进行功能更新或 Bug 修复。

致谢 (Acknowledgements)

  • 感谢 Edmund McMillenFlorian Himsl 创作了伟大的游戏 《以撒的结合》,为本项目提供了灵感来源和部分资源。
  • 感谢 EasyX 图形库 (easyx.cn) 的开发者,使得在 C++ 中进行简单的图形编程成为可能。

联系方式 (Contact)

如果你对本项目有任何疑问,可以通过以下方式联系作者:

  • 邮箱: 2519521987@qq.com

About

C语言大作业—简单的以撒的结合

Resources

License

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors