看板 Ikariam 關於我們 聯絡資訊
== 程式測試的結果:== 以動畫方式顯示 http://et284vu065k3.googlepages.com/ikariam1.html 請在左上的框框輸入要買幾個兵 (建議100,不過你要輸入超過1000也可以) == 附上原始檔 (提供給會用flash的人看) == http://et284vu065k3.googlepages.com/ikariam1.fla == 附上原始碼 == var unitL = (A0._x - this["A-100"]._x)/100; var n; var t; function init() { n = buy.text; t = 0; A1._x = A0._x - unitL*n; A2._x = A0._x - unitL*n/2; A3._x = A0._x - unitL*n/2; } function run() { var A1人口 = (A1._x - A0._x + (n * unitL))/unitL; var A2人口 = (A2._x - A0._x + (n/2 * unitL))/unitL; var A1人口成長率 = (n - A1人口)/50; var A2人口成長率 = (n/2 - A2人口)/50; A1txt.text = "人口 " + int(A1人口*100)/100 + " 人\n"; A1txt.text +="人口成長率" + int(A1人口成長率*100)/100 + " 人"; A2txt.text = "人口 " + int(A2人口*2*100)/100 + " 人\n"; A2txt.text +="人口成長率" + int(A2人口成長率*100)/100 + " 人"; timeTxt.text = "經過" + t + "小時"; compareTxt.text = "藍色人口減綠色人口 = " + int((A1人口 - A2人口*2)*100)/100; A1._x += A1人口成長率; A2._x += A2人口成長率; A3._x += A2人口成長率; t++; } GO.onPress = function() { init(); this.onEnterFrame = run; } == 簡單說明一下: A0 和 A-100 是數線上的黑點 A1 是藍點 A2 是綠點 程式計算出目前人口和人口成長率 每0.03秒視為1小時並計算1次人口成長 (人口 = 人口 + 人口成長率) 程式只顯示到小數點後第2位,但實際計算值是到小數點後第8位以上 == 結論 == 在前半段的部分差異不大 但在終點前由於浮點數的關係,綠點因浮點數限制 (值太小) 無法前進 在人口上限的部分落敗 -- blog:http://etrex.blogspot.com/ site:http://web.ntust.edu.tw/~B9409041/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.166.1
sanat:也就是說 要在瞬間衝出最大增加率要多城徵兵 02/21 01:05
etrexetrex:如果這個模擬是對的 不管用哪個城買結果都一樣 02/21 01:06
etrexetrex:但是兵力產出的時間會不一樣啦... 02/21 01:06
sanat:但是長時間來看單城徵兵較有效率囉 02/21 01:06
etrexetrex:如果你的民意 超過人口上限 就不會輸在終點 02/21 01:07
sanat:那應該要超出很多吧@@ 不然從模擬來看 大約一半就輸了 02/21 01:10
etrexetrex:輸1個人沒差吧 02/21 01:13
etrexetrex:總之我的結論是:並無顯著差異 02/21 01:13
etrexetrex:如果要真正的答案就要有人真的去測試了 0.0 02/21 01:13
etrexetrex:在遊戲中測試... 02/21 01:14
kai0401:其實你這邊人口有小數點 所以會跟上面數學式有落差 02/21 01:18
kai0401:不過滿漂亮的 可以把座標擴大一點 XD 02/21 01:19
etrexetrex:我想在遊戲中應該也有小數點吧... 02/21 01:40
kai0401:沒有 因為他是每多一個人才改變一次成長率... 02/21 01:43
etrexetrex:0.0 02/21 02:05
wope:晚一點再來看一下問題出在哪裡 有點神奇的結果@@ 02/21 08:18
wope:提供了不同的思考方向 晚點再來看程式碼 02/21 08:20
hitlerx:老實說,整串看下來,我不知道該收哪篇 XDDD 02/23 09:17