同一个世界OL

目录

第一章 命运与审判

第二章 怀抱着的终焉

第三章 信仰的异变

第四章 生而为罪恶

第五章 禁止的禁忌

计算机求解


第一章 命运与审判

(1)魔王

(2)绝望的开始

(3)叹浮生若梦

(4)zaie之门

(5)希望的光辉

(6)规则的shufu

(7)缘起生生

第二章 怀抱着的终焉

(1)彼岸花开

(2)千世幻梦

(3)孤独与等待

(4)情不为生死

(5)重合的始终

(6)形而上的希望

(7)梦与现实

(8)悲剧之环

(9)形而下的崩坏

(10)背靠终焉

(11)缘注定生死

第三章 信仰的异变

 

(1)神不在的世界

(2)秩序之下的暗流

(3)虚伪者的微笑

(4)暗潮的涌动

(5)神之子

(6)风暴前的宁静

(7)三生石三生路

(8)自然之子

(9)强大的弱小

(10)禁忌的贪念

(11)亚都之行

(12)命运的齿轮

第四章 生而为罪恶

(1)黑暗蔓延

(2)初生

(3)善意

(4)成长之路

(5)善始

(6)自然之子

(7)天选之人

(8)生而为罪恶

(9)命运之印

(10)光之圣所

(11)逝光之殇

(12)守护之印

(13)过去

(14)未来

(15)黑暗之旅

(16)逆光之旅

(17)万水千山

(18)信仰之心

(19)亚都

(20)光之都

(21)光明咏唱

(22)希望

(23)超越的力量

(24)触碰的禁忌

(25)谎言与偶然

(26)先知

(27)神力束缚

(28)神逝遗光

第五章 禁止的禁忌

 

(1)

(2)

(3)

(4)贪婪

(5)操纵

(6)威胁

(7)奉献

(8)选择

(9)此生不换

(10)审判日▪上

(11)审判日▪下

(12)叹息

(13)罪恶之花

(14)围观者

(15)宽容的对立

(16)世界碎片

(17)平静的愤怒

(18)共生双面

(19)压制

(20)

(21)力量的逝去

(22)谎言与欺骗

(23)泯灭

(24)指尖的绝望

(25)存在的意义

(26)强大的无力

(27)孤独

(28)界限解除

(29)无力的强大

(30)

(31)光黯

(32)

(33)

(34)折翼之殇

(35)释放

(36)传说

(37)镜面规则

(38)隐居

(39)红尘凡事

(40)静候花开

计算机求解

 同一个世界OL引入了世界关卡,也就是玩家自主设计关卡,其他的玩家来破解。

不像同一个世界,游戏关卡都很对称,比较简单,世界关卡里面有一些很难的关卡。

我写了个程序来破解关卡,不过水平有限,6行5列的关卡大概会需要10秒钟,再大一点的关卡就基本上算不出来了。

思路:

从一个起点出发,使用深度优先搜索,列出所有可能的路径,利用状态压缩把一条路径映射到1个64位的整数。

另外一个起点也是同样处理,这样就得到2个差不多大小的集合S1、S2

然后遍历S1中的元素,和需要得到的最终结果进行1次位运算直接得到需要的另一条路径,然后查找S2是否包含此路径

代码:

#include<iostream>
#include<set>
using namespace std;
#define ll long long

const ll r = 6, c = 5;   //需要手动修改
int x1 = 0, yy1 = 2, x2 = 5, y2 = 1, result = 20882777;  //需要手动修改
int has[r][c] =   //需要手动修改
{
	1, 1, 1, 1, 1,
	1, 0, 1, 1, 1,
	1, 1, 1, 1, 1,
	1, 1, 1, 1, 1,
	1, 1, 1, 1, 1,
	1, 1, 1, 1, 1
};

int num[r][c];
set<pair<ll, pair<int, int>>>se;
set<ll>se1, se2;


bool ok(int x, int y)
{
	if (x < 0 || x >= r)return false;
	if (y < 0 || y >= c)return false;
	if (num[x][y])return false;
	return has[x][y];
}

void dfs(int x, int y)
{
	num[x][y] = 1;
	ll res = 0;
	for (int i = 0; i < r; i++)for (int j = 0; j < c; j++)res = res * 2 + num[i][j];
	int si = se.size();
	se.insert(make_pair(res, make_pair(x, y)));
	if (si < se.size())
	{
		if (ok(x + 1, y))dfs(x + 1, y);
		if (ok(x - 1, y))dfs(x - 1, y);
		if (ok(x, y + 1))dfs(x, y + 1);
		if (ok(x, y - 1))dfs(x, y - 1);
	}
	num[x][y] = 0;
}

void out(ll n)
{
	ll k = 1 << (r*c);
	for (int i = 0; i < r; i++)
	{
		for (int j = 0; j < c; j++)
		{
			k /= 2;
			if (n&k)cout << "●";
			else cout << "○";
		}
		cout << endl;
	}
	cout << endl;
}

int main()
{
	se.clear();
	se1.clear();
	se2.clear();
	for (int ii = 0; ii < r; ii++)for (int jj = 0; jj < c; jj++)num[ii][jj] = 0;
	dfs(x1, yy1);
	set<pair<ll, pair<int, int>>>::iterator it;
	for (it = se.begin(); it != se.end(); it++)se1.insert(it->first);
	se.clear();
	for (int ii = 0; ii < r; ii++)for (int jj = 0; jj < c; jj++)num[ii][jj] = 0;
	dfs(x2, y2);
	for (it = se.begin(); it != se.end(); it++)se2.insert(it->first);
	set<ll>::iterator it1;
	for (it1 = se1.begin(); it1 != se1.end(); it1++)
	if (se2.find((*it1) ^ result) != se2.end())
	{
		out(*it1);
		out((*it1) ^ result);
		return 0;
	}
	ll temp = 1;
	for (int i = r - 1; i >= 0; i--)for (int j = c - 1; j >= 0; j--)
		result -= has[i][j] * temp, temp *= 2;
	result *= -1;
	for (it1 = se1.begin(); it1 != se1.end(); it1++)
	if (se2.find((*it1) ^ result) != se2.end())
	{
		out(*it1);
		out((*it1) ^ result);
	}
	return 0;
}

使用说明:

代码中有3行标注了 //需要手动修改 ,一共7个整数和1个数组,运行之前根据关卡的实际情况进行修改即可

然后运行即可得到答案。

示例:

一共6行5列,俩起点的坐标分别是(0,2)(5,1),

接下来把颜色信息表示出来,黄色和白色随便哪个对应1,另外一个对应0,空的地方一定是对应0

也就是上图可表示为111110010000010101101010100110或者000001001111101010010101011001

然后把上述两个二进制整数转换成十进制,可以利用在线进制转换

至此,一共得到7个整数,分别是6,5,0,25,1,1044470438或20882777,依次写到代码里面

最后还有一个has数组,就是用1表示有点(不管颜色),0表示空的地方

如此就完成了代码

运行结果:

由白色的实心圆构成的路径就是我们需要的答案了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
花钱买来的 ,自己亲测可执行,~ 下载下来是个 txt文本,里面有 下载地址,跟密码! 这款游戏 类似王者荣耀! 客户端用 unity 4.6直接打开编译,生成exe,或者安卓APK(需要装JDK,SDK), 服务端按教程操作就可以了! 最后一战OL》是国内首款原创精品MOBA手游,是一款由前暴雪文案亲自操刀世界观,日韩专业团队打造美术场景,新加坡团队精心制作战斗音乐的旷世之作!' e9 H' Q* w: Z5 r 《最后一战OL》超快速的匹配对战、默契的团队协作给你带来意犹未尽的快感,在传统的MOBA游戏中融入了诸多创新玩法,吸附野怪技能、祭坛超级兵种、怒气超神爆发的同时多样性的英雄供你挑选!百余种装备搭配助您打造最强王者,超神不断!带上你的战友并肩协作,一起来体验《最后一战》这款引领潮流的精品手游吧!2 n" r$ Q' |+ \; w$ A' q! ^ 本资源是完整的,可以编译进游戏的。前端采用Unity3D,可以在 Unity3D 4.0 + 以上版本编译运行,后端服务器部分采用 C++开发,需要在 VS 2010 下完成编译。数据库采用 MySQL。 最后一战经过测试,可以进游戏,搭建很简单,只要几步简单的操作就能跑起来 1、客户端打开 用的u3d 4.6版本打开的,没有发现什么问题,可以直接编译 2、服务端 首先用vs2010打开server》Allserver.sln,点击编译,编译要花点时间,编译完成后,可能会出现几个红色的文字,不用管他,暂时没发现有影响。 然后打开Server\Bin\x64\Release\dbsql\Rebuild.bat,创建数据库,在这里要编辑下Rebuild.bat里面的内容,记事本打开,然后将-uroot -p123321,改成你自己的数据库名称和密码, root改成你的数据库名称,123321改成你自己的数据库密码。+ H7 s. z7 f/ g8 Q9 V+ G 数据库创建完成后,打开server》start.bat,打开的几个窗口也会有红字的文字,不用管,暂时没发现有影响。 注意点: 1、数据库安装-》数据库安装是个难活,我在自己电脑上按了N次,没成功,总是提示联不到数据库,可能跟系统有关系,回头再研究下 2、服务端编译,vs在编译后有红色的文字,之前以为是报错,一直改,没解决,后来不管他了,直接跑,居然过了。。。。 3、修改rebuild.bat,一定要修改成你自己的数据库名字和密码,不然创建不成功。 3、编译u3d客户端,就可以进游戏了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值