作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] 限制型的乱序 及其它问题..
时间Sun Aug 22 09:02:33 2010
※ 引述《justinj (闇冥)》之铭言:
: 问题一..之前有一个random_sort的来作乱序..如果限制有条件某几格不参加的话
: 要怎麽写
: 例如a=({0,0,3,4,0,5,0,6,0})
: 限制>0的几格要乱序
: 现在想到的方法是
: ----------------------------------------------------------------------
: b=a-({0});
: b=sort_array(b,"random_sort",this_object());
: tmp=allocate(9);
: for(i=0;i<9;i++)
: if(a[i]==0) tmp[i]=0;
: else
: {
: tmp[i]=b[m];
: m++;
: }
: a=tmp....
mixed b=({});
int m;
b=a;
b-=({0}); // 它会把 b 里面只要有 0 都扣掉
b=sort_array(b,"random_sort",this_object());
m=sizeof(b);
这样 b 就是「没有 0 且乱数排序过」的阵列,m 就是
你要的 m。实测结果..
b=({ 6, 3, 5, 4 }), m=4
: -----------------------------------------------------------------------
: sort_array应该有更简易的写法吧..看不懂它的说明.....
: 问题二..
: foreach(num in da)
: {
: k=num+1;//往东
: if(member_array(k,da)==-1 && now[k]=tmp) da+=({k});
: k=num-1;//往西
: if(member_array(k,da)==-1 && now[k]=tmp) da+=({k});
: k=num+n;//往南
: if(member_array(k,da)==-1 && now[k]=tmp) da+=({k});
: k=num-n;//往北
: if(member_array(k,da)==-1 && now[k]=tmp) da+=({k});
: }
: 这样感觉会出问题...
: 这个是说在某点(例如:红色的)相连的附近点只要是红色的都加进去
: 001-002-003 例:有数字(因为红色相连)的都加进去
: | | | 左下角不加进去(虽然是红色但不相连)
: xxx-xxx-004
: | | |
: xxx-xxx-005
: 这个要怎麽写...
一、你在哪一点发动指令去做上述的程式段?
二、你想要让 da 在那一点时,最後会得到什麽结果
三、图说时请尽量不要有 xxx 的。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.3.82
※ 编辑: laechan 来自: 122.117.3.82 (08/22 09:04)