Re: [wizs] 限制型的亂序 及其它問題..

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間15年前 (2010/08/22 09:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《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)
文章代碼(AID): #1CS7Sinu (mud_sanc)
文章代碼(AID): #1CS7Sinu (mud_sanc)