Re: 製作遊戲的計時器

看板Flash作者 (喵)時間19年前 (2006/11/19 11:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
※ 引述《etrexetrex (ETREX)》之銘言: : ※ 引述《rita167 (振作)》之銘言: : : 二是我現在製作的牌面是剛剛好的數量 : : 請問有辦法做超過這個數量 然後每次亂數選出剛剛好的牌嗎? : : (目前遊戲中需要16張牌, 兩兩成對所以我做了8張牌面) : : (可是如果我製作超過8張牌面的話, 遊戲中就會出現消不掉的牌) : : (有可能說我做20張不同牌面, 每次還是亂數出現剛好16張"可完全消掉"的牌嗎?) : 先亂數選牌面 存到陣列裡 (一次就選兩張相同的牌面) : 然後再從陣列裡一個一個取出來放到畫面上 關於這個問題 我也曾經困擾過 就是希望能夠在某個特定範圍內取出數個不同數字 例如上面所說的問題 表面上只有16張牌也就是8對 可是如果我多做幾張牌出來 那我到底要挑哪幾張呢? 假設做了12張牌 應該是從這12張牌隨機挑出8個不重複的數字 然後再用程式將這八個數字所代表的卡片放在畫面上 做了一些小學數學練習程式中 也常常會出現這樣的狀況 所以最近我寫了一個函數 可以從指定範圍內取出指定個數的不重複數字 但是沒有寫的很仔細 想請大家幫我檢查看看會不會哪裡有問題 function random_num (rangemin,rangemax,howmany) { //從n中取出howmany個隨機不重複變數,rangemin<=n<=rangemax //設定回傳的矩陣, //變數range是設定範圍有幾個數字藉以判斷可否取howmany個數字 random_array=new Array(); random_array[0]=rangemin+" ~ "+rangemax+" get "+howmany; range=rangemax-rangemin+1; if(rangemax-rangemin+1>=howmany){ temp_array=new Array(); for(i=0;i<range;i++){ temp_array[i]=rangemin+i; } for(i=1;i<=howmany;i++){ temp_num=random(temp_array.length); random_array[i]=temp_array[temp_num]; temp_array.splice(temp_num,1) } return random_array; }else{ random_array[0]=0; return random_array; trace("範圍不對"); } } 若輸入的數字沒問題的話 會傳回一個陣列 若我需要1~12取8個數字 那我就是用 a=random_num(1,12,8); 那麼a[0]=1 ~ 12 get 8; (這個是做紀錄用的啦 因為習慣還是從1開始,所以矩陣第0項我都不太愛用) a[1]~a[8]就是取得的數字 但是有個問題 如果我用typeof去傳回a這個東西的類型 她跟我說是object耶 這個部份不曉得在使用上會不會有什麼問題? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.141.15.61
文章代碼(AID): #15NzIuMr (Flash)
文章代碼(AID): #15NzIuMr (Flash)