灯管难题
最近在玩一个游戏《Dungeon Siege II: Broken World》,打到第二幕的时候有个可选任务需要解机关救人,机关就是分布在地上的几盏灯,初始状态全是亮的,对某一盏灯的一次触发就能使这盏灯及跟它相关联的灯状态置反,亮的变成灭的,灭的变成亮的,玩家的任务就是将地上所有的灯熄灭。
我一共解了三个机关,感觉这种题目很难,灯的关联可以错综复杂,还根本找不到规律,于是我根据这个游戏改编出了这个作品。游戏中的关卡我现在记不太清楚了,所有上面的关卡除了最后一关,都是我自己想出来的,最后一关我现在还过不了,谁要是玩通过了,麻烦把步骤告诉我一下。^o^
我把程序的源代码以及编译好的可执行文件都放了上来,谁感兴趣的可以down下去看看,或者为这个程序新增些内容,最好弄些新的关卡上去。
关于关卡的描述,我是存在资源文件的字符串里面,另外在全局文件GlobalData.h中有最大关卡数的定义:#define MAX_SCENARIO_NO 6,这里也需要改一下。关卡描述如下:
IDS_STR_SCENARIO_1为第一关的描述,第二关是IDS_STR_SCENARIO_1+1,第三关是IDS_STR_SCENARIO_1+2,依此类推,拿第一关为例子,它的描述为“1,Four Corners,4,100,100,2,3,2,300,100,2,3,2,300,300,2,0,1,100,300,2,0,1,”,开头的“ 1” 为关卡序号,接下去的“Four Corners”为简短说明,接下去的“ 4” 是说它一共有4盏灯,再下去就是对各盏灯的描述了,灯的序号从0开始,先是第0盏灯,“100, 100” ,这是第0盏灯在主窗口客户区的坐标,紧跟着的“ 2” 是说这第0盏灯和其它两盏灯有关联,分别是接下去描述的“3, 2” ,也就是和第3盏灯和第2盏灯有关联,第0盏灯描述完毕,接下去就是第1盏灯了,直到4盏灯都描述完毕。
OK,还有什么问题的话可以留言。谢谢!
(BTW:第6关很难,本应该是第10关,但我偷懒了^o^)
(20061130)
今天才知道CSDN.net的blog不支持附件,那就没什么办法了,谁要程序的在留言处留下邮箱,我把程序及源码都发过去。另外,今天我靠运气把最难的一关搞定了,如下:
我再想想看设置一些更难的关卡,解答这种问题貌似需要列方程组,类似魔方那种思路,嗯,再研究了。