魔塔,是一个策略类的固定数值的RPG小游戏,难度不低,对智商是一次艰巨的考验。
本项目可以对一个简单的塔进行计算,找寻最佳路线。
有关本项目的算法说明,可参见我的博客: http://ckcz123.com/blog/catagory/magic-tower-ai/。
本项目由三个子项目组成:
- AI : 真正的拆塔计算过程,Java编写。
- program : 一个可视化程序,可以读入地图数据并打出游戏,C++编写。
- map_generator : 地图生成器,可以根据图片生成地图文件,C#编写。
另外,还提供了若干已有的测试数据放在test目录下。
本项目采用的地图均为自定义地图。有关地图数据的说明可参见这里。
将地图数据文件重命名为input.txt并放置在可视化程序目录下,即可打出地图并开始游戏。
将地图数据内容全部复制,并粘贴到AI项目的控制台下,即可进行路线的计算。
此子项目是真正的拆塔计算过程,使用Java编写。
直接使用Java 8以上编译运行,然后在控制台粘贴地图数据内容即可。
有关算法的详细讨论,可参见我的博客: http://ckcz123.com/blog/catagory/magic-tower-ai/。
此子项目是一个可视化程序,使用C++基于hge库编写。
可视化程序可以读取同目录下的input.txt地图数据文件,并将整个地图打出来,以方便进行游戏。
请使用VS2012及以上进行编译运行。
如果使用VS2015进行编译,请将 legacy_stdio_definitions.lib
加入到项目库中,以免发生 error LNK2019: unresolved external symbol _sscanf
错误。
请将hge文件夹下的所有dll
文件,以及源代码目录下的Res
文件夹,复制到生成文件夹中,才可以正常进行运行游戏。
由于地图数据是我们自定义的,所以在真正将AI投入使用时需要手动录入每个位置的数据,十分不便;因此我做了这样一个地图生成器,可以读取一张给定的地图图片,打印出地图的数据内容。
此子项目使用C#进行编写。请使用VS2012及以上编译运行。
加载图片时,如果剪切板里存在图片将直接从剪切板里读取;否则将打开一个对话框以选择图片文件。
推荐使用方法:打开Windows自带的截图工具,使用矩形截图实际一座塔里的地图,然后将整个地图复制;再点击该地图生成器的“加载图片”,得到实际地图,最后手动修改不符合条件的数据,最后复制地图数据即可。
其主要算法为:将图片转成灰度图,然后确定左上角地图起始点位置,最后匹配整张图。
经测验,对于红血瓶和蓝血瓶无法进行有效区分(转成灰度图后近似一致),其他基本上都能正确进行识别。
欢迎star或fork这个项目,给我一些支持和鼓励;如果你也对魔塔AI比较感兴趣,有什么意见或建议,欢迎直接联系我。
你可以直接提出issues,也可以邮件至 ckcz123@126.com
或ckcz12345@gmail.com
。
感谢大家对本项目的支持!