作者jonathanmeow (喵)
看板Flash
标题Re: 制作游戏的计时器
时间Sun Nov 19 12:00:58 2006
※ 引述《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