# 黑暗迷宫 **Repository Path**: zlmaker/dark-labyrinth ## Basic Information - **Project Name**: 黑暗迷宫 - **Description**: 这是杭州电子科技大学C语言课程实践的期末大作业,借鉴了B站上的黑暗迷宫,自己改进和完善了一下 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2021-06-09 - **Last Updated**: 2025-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 黑暗迷宫 ### 开发背景 迷宫游戏(英文:Maze),是一种益智类的探索游戏,由于人类建造迷宫已有5000年的历史。在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲、困难重重的小路吃力地行走,寻找真相。迷宫类小游戏应运而生。在游戏中,迷宫被表现为冒险舞台里,藏有各式各样奇妙与谜题或宝藏的危险区域。型态有洞窟、人工建筑物、怪物巢穴、密林或山路等。迷宫内有恶徒或凶猛的生物(真实存在或想像物体都有)徘徊,其中可能会有陷阱、不明设施、遗迹等。 在本次课程设计中,支持键盘操作和怪兽自动、玩家的移动变换,并且界面上显示玩家的移动和环境的变化以及当前的玩家的位置,迷宫游戏可以选择不同的冒险模式,例如单人模式、双人模式来进行玩耍。 ### 系统功能设计 ![功能模块](https://images.gitee.com/uploads/images/2021/0609/230942_ddb04c61_8486856.png "屏幕截图.png") ### 系统业务流程设计 ![流程图](https://images.gitee.com/uploads/images/2021/0609/231114_bea93ef5_8486856.png "屏幕截图.png") ### 系统开发环境要求 本项目的开发及运行环境要求:需要在官网下载eazyx.h库,并导入 操作系统:Windows 10 开发工具:Visual Studio 2017 开发语言:C/C++ ### 项目运行效果 ![模式选择](https://images.gitee.com/uploads/images/2021/0609/231508_3bea93eb_8486856.png "屏幕截图.png") ![规则说明](https://images.gitee.com/uploads/images/2021/0609/231536_41dfd39b_8486856.png "屏幕截图.png") ![欢迎界面](https://images.gitee.com/uploads/images/2021/0609/231607_5c35f678_8486856.png "屏幕截图.png") ![单人模式](https://images.gitee.com/uploads/images/2021/0609/231626_21d33b3b_8486856.png "屏幕截图.png") ![双人模式](https://images.gitee.com/uploads/images/2021/0609/231644_e4483404_8486856.png "屏幕截图.png") ### 项目创新点 1.利用GetImageBuffer()和GetImageBuffer(&image)函数来获取屏幕和图片显存。然后循环用bufScreen[y * HEIGHT + x] -= 0x050505来减少像素,实现屏幕逐渐变暗。 2.通过求鼠标和人物的x,y的距离,来求出与x正半轴的偏转角度,再通过这个角度和人物坐标来绘制灯光:bufScreen[y*WIDTH + x] += 0x202000; 3.利用深度搜索来实现怪兽自动寻找出口:先将起点位置放入栈中,并设置状态为已寻找过,然后设置一个试探点,改变当前点的方向,然后看下一步是否已寻找过且像素是否为白色,若满足,就将试探点的值赋给当前点,并标记试探点为已寻找过,将其坐标放入栈中;若不满足,就从栈中弹出一个点,并赋值给当前点,完成回退。这样一直循环。 4.利用GetAsyncKeyState(VK_...)来异步获取键盘值,这样能解决双人玩的时候,会出现一个人走或改变方向时,另一个人不能走的情况。 #### 介绍 这是杭州电子科技大学C语言课程实践的期末大作业,借鉴了B站上的黑暗迷宫,自己改进和完善了一下 #### 使用说明 本游戏使用控制台来展示游戏效果的,如果想使用Qt界面的,请自己重构。