小游戏!
2024-08-08 18:50:49
发布于:上海
Update on 2024.8.8:咕了
Update on 2024.7.7:有了更加友好的界面!
Update on 2024.7.6:按下 Tab 键可以自动追踪主角了!
已知 Bug:
- 进入游戏——Esc 退出游戏——再进入游戏,渲染会出现一些奇奇怪怪的 Bug……
(包括但不限于:神秘闪屏、影分身术、人格分裂、多重地牢……)如果有好人可以帮帮我。
本小游戏是 C++编写而成的 Roguelike 命令行游戏!由于用到了大量 Windows 接口,只支持在 Windows 上编译运行!
确保你的编译器支持 C++11。也许你需要在编译选项中添加 -std=c++11
。使用其它版本编译产生的 Bug,概不负责。
由于代码较长,代码放在洛谷云剪切板了。
本作(目前)亮点:
-
使用
fwrite
和无闪清屏技术,带来更流畅的帧率体验。 -
摒弃了
windows.h
自带的Sleep
低效处理键盘事件,改为使用std::chromo
中的时间段,高灵敏度处理键盘事件,同时不会误触。
3.(最重要的)极度复杂而精致的地牢!使用精心设计的,高效的地牢随机生成算法,生成不重样的复杂地牢。算法大致流程放在了最后。
游戏操作:
目前只有一个主角 P
,按 WASD
移动,Tab
键启动追踪……#
是墙过不去,.
是地面可以通行。
界面预览:
地牢生成算法:
函数原型:
vector<vector<int>> Generator(int n,int m,int ROOMMINWIDTH,
int ROOMMINHEIGHT,int ROOMMAXWIDTH,
int ROOMMAXHEIGHT,int times,double UnionChance);
(即源码中 Generator
命名空间下的 Generator
函数)
流程:
- 准备一张大小为 的地图。
- 随机抽取
times
个矩形房间。大小最小为ROOMMINWIDTH
ROOMMINHEIGHT
,最大为ROOMMAXWIDTH
ROOMMAXHEIGHT
。如果房间坐标不越界且不与地图上已有的房间重叠,则将此房间加入地图。 - 使用广搜将剩余不属于房间的格子连为走廊。
- 搜索并记录房间与走廊、房间与房间之间的墙。
- 将每一个房间或走廊抽象为一个点,之间的墙抽象为无向边,于是构成了一张图。随机选择一个点,然后随机选择一条这个点有关的边。如果并查集查询边的两个顶点不连通,则将这条边与对应的墙打通,并并查集合并这两个顶点,再将这个新点加入队列。否则删去这两个点之间的所有边。重复执行以上过程直到队列为空。删边时,对应的墙有
UnionChance
的概率被打通。
6.返回地图。
我使用的参数:
Generator(101,41,4,4,10,10,2000,0.02)
可以自己在源代码里调整,但是 和 必须都是奇数,并且 UnionChance
必须小于 ,而且不要太大(最好小于 ),否则生成的地牢像碎掉了一样。
全部评论 13
暑假神NB。
2024-08-08 来自 浙江
1顶顶顶。😊😊😊
2024-08-08 来自 浙江
0
真的挺不错的,就是有几个建议,应该可以优化一定体验,
如
1.修改背景色:system("color i")也行 SetConsoleTextAttribute更好
我只会上面system,就不做示范了,希望可以标记P让它更明显一点,我找半天:(
给个参考网址
2.自主设置迷宫长宽
本来想帮你写一个函数的,但您这define用的太不给情面了,其实const也问题不大的,尽管看上去是差点速度,但是全局两个数差别不大,也没占多少空间
3.显示p的朝向,有点麻烦,但其实可以用特殊符号的
额,这款游戏的开发空间极大,我十分期待你的续作,催更!2024-07-06 来自 浙江
1感谢,不过我确实没什么时间(
2024-07-06 来自 上海
0不过我会考虑采纳的qwq
2024-07-06 来自 上海
0现在可以按 Tab 键自动追踪主角了!
2024-07-06 来自 上海
0
好玩👍
2024-07-06 来自 广东
1感谢支持:)
2024-07-06 来自 上海
0
我顶!
2024-08-15 来自 浙江
0顶
2024-08-08 来自 湖南
0好玩,顶!
2024-07-18 来自 浙江
0匹夫速更
2024-07-09 来自 广东
0要不然我就手搓小游戏
2024-07-09 来自 广东
0更不动了(
2024-07-09 来自 上海
0
怎么玩1
2024-07-09 来自 上海
0非常好游戏,使我花瓣旋转
2024-07-08 来自 上海
0更新了,顶
2024-07-07 来自 上海
0good games
2024-07-06 来自 广东
0太强了
2024-07-06 来自 广东
0顶!
2024-07-06 来自 上海
0
有帮助,赞一个