Skip to content

L1rics06/A-raycasting-maze-game

Repository files navigation

🌀 基于光线投射原理的伪3D迷宫游戏

🎮 使用 EasyX 图形库开发 | 光线投射(Raycasting)原理实现 | 随机迷宫生成
大一上 C 语言结课项目之一 —— 灵感来自经典游戏《重返德军总部》。


✨ 项目简介

这是一个使用 光线投射(Raycasting) 技术实现的伪 3D 迷宫探索游戏。
玩家将在随机生成的迷宫中探索、寻找出口,并破坏挡路的白色墙壁。
项目完全基于 C 语言与 EasyX 图形库编写。

💡 每次启动游戏都会生成全新的随机迷宫。
由于能力与时间限制(期末周作品 😭),游戏中仍存在部分小 BUG:

  • 墙角可能存在空隙;
  • 出生点可能生成白色墙壁;
  • 音频文件 mili.wav 未包含在仓库中(体积过大,可手动替换)。

🕹️ 游戏操作说明

按键 功能说明
W / S 前进 / 后退(在主菜单中控制光标)
A / D 左右旋转视角
E 获取当前位置(用于辨路)
P 放弃游戏(当你真的找不到出口时)

🎯 游戏目标:
你是 Mostima —— the keeper of the lock & keys。
被困于迷宫之中。
打破白墙,找到黑墙出口,逃离这里!


🧩 文件结构说明

文件 说明
main.cpp 项目入口。包含初始化(图形界面、随机种子、地图等),根据选择进入演示或游戏模式,调用 EngineForGame() 运行核心逻辑。
Config.h 定义全局宏、结构体和变量。包括时间、模式、贴图路径、音频路径、线程变量等。
EngineForGame.cpp 游戏主逻辑核心:处理输入、更新状态、调用 Generation_Frame_3D() 绘制伪3D场景。
EngineForDev.cpp 演示模式逻辑,主要处理二维图像渲染。
misc.cpp 各类辅助函数:音效线程(PlaySoundEffect)、透明图像绘制、信息提示、菜单界面、结算界面、排行榜(rank, datasFromFile, compare 等)。
players.txt / times.txt 玩家数据与通关时间记录文件。

🔊 音频资源

默认背景音乐文件为: mili.wav

由于体积较大未包含在仓库中。
如需正常播放,请在 config.h 中修改 BGM 路径或替换为你自己的音频文件。


🏗️ 技术要点

  • 🧠 Raycasting 光线投射:通过逐列投射光线计算墙面距离,渲染出伪 3D 效果。
  • 🎲 随机迷宫生成算法:每次启动生成独立迷宫。
  • 🖼️ EasyX 图形库:用于渲染图形与处理事件。
  • 🎧 多线程音效播放:游戏与音效线程分离,保证运行流畅。
  • 💾 排行榜系统:记录玩家姓名与完成时间。

💬 作者的话

作为大一上学生的课程项目,这个游戏在技术与美术上都还很粗糙。
但能用光线投射原理复现出伪3D效果、实现随机迷宫,我依然感到十分满足。
如果你有更好的优化建议,欢迎在 Issue 区或 PR 中留言!


📜 License

本项目仅用于学习与展示,禁止商用。
若引用代码,请注明来源:
A-raycasting-maze-game by L1rics06


About

A game which used the raycasting

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors