大话II奖励机制解密(附模拟程序)
附源代码:
Rem 开始:
rem 以下语句定义了文件对象,并将文件以写入的方式打开,用来将测试结果写入到文件,用以进行事后的分析。
dim fso
set fso=createobject("scripting.filesystemobject")
set xr=fso.opentextfile("jl.xls",2,true)
rem 定义藏宝图中奖励数据,我们定义了11种可能出现的奖励,出现此奖励的数值上下限范围。
dim sjk(20,5)
sjk(1,1)="见闻录"
sjk(2,1)="炼妖石"
sjk(3,1)="血法药"
sjk(4,1)="小妖"
sjk(5,1)="宝石"
sjk(6,1)="装备"
sjk(7,1)="神兵"
sjk(8,1)="仙器"
sjk(9,1)="钱"
sjk(10,1)="空箱子"
sjk(11,1)="婴儿物品"
rem 定义两项奖励中间的间隔
dim jiange
jiange=1000
rem 定义奖励上下限范围。为了简化期间,设定每个奖励的范围相同。当然可以自己修改,要注意的是修改第N号奖励的上限,不能超过第N+1号奖励的下限-1,修改第N号奖励的下限,不能超过第N-1号奖励的上限+1。
dim k
for k= 1 to 11
sjk(k,2)=k*jiange
sjk (k,3)=k*jiange+200
next
rem 我们定义出现奖励的可能为200,如果我们要修改某项奖励的可能再在下面定上对应的语句就可以了。
rem 下面语句将得到见闻录的机率调为以前的2.5倍
sjk(1,3)=1*jiange+500
rem 下面语句将得到神兵的机率调为以前的百分之一
sjk(7,3)=7*jiange+2
rem 下面语句用来定义每项奖励每天最多发放的件数。
for k = 1 to 11
sjk(k,4)=9999
next
rem 下面语句用来将每天神兵发放的件数设定为5件
sjk(7,4)=5
rem 下面语句用来将每天仙器发放的数目设定为20件
sjk(8,4)=20
rem 下一条语句调用随机数生成器
randomize
rem 下面几条语句用来获取所有奖项的最大范围
dim top
dim p
for p = 1 to 20
if sjk(p,1)="" then exit for
next
top=p*1000
rem 下面语句是用来做实验的,模拟一定次数下挖藏宝图所得东西的。
rem 定义一个变量要求玩家输入模拟的次数
dim cishu
cishu=clng(inputbox("请输入你要模拟打开藏宝图的次数"))
rem 判断用户输入的数据,并调用生成奖励的函数
if cishu>0 and cishu<65535 then
dim try
for try=1 to cishu
shengcheng()
next
end if
rem 因为我们的数据分析是通过EXCEL来完成的,EXCEL所能支持的最大行数为65535,所以输入的次数不能超过65535
rem 下面的函数是用来生成奖励的
sub shengcheng()
rem 定义一个变量,查看玩家是否得到奖励,初始设定为没有得到任何奖励。
dim item
item=""
rem 下面语然用来模拟奖励生成的过程,首先对玩家是否获得奖励进行判断。如果没有奖励则运行循环,直到得到奖励
do while(item="")
rem 下面语句用来产生一个随机值
dim jiangli
jiangli=cint(rnd()*top)
rem 判断此数值位于哪个奖项的上下限之间,如果判断成功,此得到该项奖励。
for p= 1 to 20
if jiangli<=sjk(p,3)and jiangli>=sjk(p,2) then
if sjk(p,4)>0 then
sjk(p,4)=sjk(p,4)-1
item=sjk(p,1)
end if
end if
next
loop
rem 下一语句将奖励写入文件
xr.writeline(item)
rem 函数到此结束。
end sub
rem 下一语句用来关闭打开的文件(系统操作文件以文件流的方式,不同于我们平常说的关闭一个文件)
xr.close
rem 告诉用户已经完成了测试,并尝试打开模拟结果。
dim xuanze
xuanze=msgbox("已经完成了模拟,是否打开文件查看模拟数据?" & vbcrlf & "注意:有的用户的机器设定可能打不开文件,请手动打开同一目录下的jl.xls文件以查看。",vbyesno+vbquestion,"注意!")
if xuanze=vbyes then
dim dakai
set dakai=wscript.createobject("wscript.shell")
dakai.run("jl.xls")
end if
Rem 结束
论坛地址:http://bbs.yezizhu.yzz.cn/viewthread.php?tid=1251795&extra=page%3D1