数学建模社区-数学中国

标题: 用数学软件建模来通过游戏关卡的一个小想法, [打印本页]

作者: 木头风火轮    时间: 2014-7-13 23:05
标题: 用数学软件建模来通过游戏关卡的一个小想法,
本帖最后由 木头风火轮 于 2014-7-14 19:20 编辑

前不久玩《机械迷城2-小小星球大碰撞》玩到倒数第二关的这个拼图这里一时半会没拼出来, 就想到是不是可以用matlab矩阵实验室来求解答案
[attach]145137[/attach]
把每一个小块编号:a,b....k
[attach]145139[/attach]
然后进行数字化处理, 后面用这些数字矩阵在软件里来做拼图游戏,应该会简单很多,,下面是程序部分,
  1. clear all;
  2. %假设初始状态,十个小块都在大面板的左上角放置
  3. a='4040e0000000';
  4. b='40e040000000';
  5. c='80c060000000';
  6. d='c08080000000';
  7. e='c07000000000';
  8. f='f04000000000';
  9. g='20e000000000';
  10. h='808080808000';
  11. i='40e020000000';
  12. j='c04040000000';
  13. k='800000000000';
  14. %十个小块在大面板中的十六进制编码
  15. tab={a b c d e f g h i j k};
  16. tab2=cell(1,11);
  17. %定义一个一行十列的数组用以储存转换后的二进制编码
  18. tabL=zeros(1,11);
  19. for t=1:11
  20.     tx=tab(t);
  21.     %依次读取十六进制编码
  22.     tt=hex2dec(tx);
  23.     tab2{1,t}=dec2bin(tt);
  24.     %依次转换成二进制编码储存在tab2{}中
  25. end
  26. for k=1:11
  27.     n=tab2{1,k};
  28.         nn=num2str(n);
  29.         lin=length(nn);
  30.         %读取二进制编码并转换成字符串格式,以便能测量长度
  31.         %因为在从十进制转成二进制的过程中, 二进制数开头的0会被省略掉,所以需要重新测量长度
  32.     for m=lin:-1:1
  33.         if nn(m)==1
  34.             
  35.             tabL(1,k)=47-m;
  36.           %这里应该是能表示出每个小块能向右移动的最大距离,

  37.         end
  38.         continue
  39.     end
  40. end

复制代码
如上面最后一条注释所说, tabL(1,k)=47-m; 应该能储存每个小块的矩阵编码含1部分能向右移动的最大距离,但是在这个方式里面好像有点问题,另一个方式里面能表示出最大距离,和这个差不多, 那个程序问题比较多,,就不发另一个的了,
做到这一步之后, 最后就只差一个类似线性规划的多元一次方程了,
大概是
A U B U C U D U . . U J U K==ones(1,48),
是一个矩阵做并,或者也可能是做异或, 由于一开始就把所有条件都设为一维矩阵,所以最后并下来的结果和ones(1,48)相等,就能找出每个小块在大面板中从左上角开始移动的距离,从而得出正确的拼图答案
难就难在只有一个方程, 我matlab了解得不深, 不知道matlab该怎么去实现最后这一步,,接下几天在其他事情上会比较忙, 所以不再独自一个人研究, 发出来大家共同探讨,集思广益,


【后面有一个小小的建议,建议在YY频道里开设课程试听环节,159214作为数学中国旗下的指定的学员交流和授课频道, 没有了免费试听环节之后, YY里每天都没什么人, 没人气,除了交了费了来听课之外, 都很少有爱好者来围观了, ,对数学中国和YY电台都是不怎么好的事情】
作者: 木头风火轮    时间: 2014-7-15 16:38
这里用16进制数写进去, 是由于我对十六进制数比较熟悉, 而且主要是48位的二进制,用十六进制只要12为就能输入进去,再通过一个小程序即可再转回二进制数,便于后面程序调用
作者: GO雨林木风    时间: 2014-7-15 16:39
高大上啊,,有点看不懂。试听现在是每一个课程的第一节是试听课程。(⊙v⊙)嗯,
作者: 木头风火轮    时间: 2014-7-15 16:45
GO雨林木风 发表于 2014-7-15 16:39
高大上啊,,有点看不懂。试听现在是每一个课程的第一节是试听课程。(⊙v⊙)嗯,

这个哪里高端大气了, 就是拼图而已, ,,希望试听是第一节课+每节课的前十几分钟就好了
作者: kedi87135    时间: 2014-8-4 18:27
学习了,谢谢~~~~~




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5