Re: [問題] 買兵時的人口恢復問題

看板Ikariam (Ikariam - 遠古文明)作者 (睏龍)時間17年前 (2009/02/21 10:47), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串7/7 (看更多)
以前在2.8的時候也想過這個問題,跟大家分享一下.... 3.0還適不適用我就懶得去算了 應該是還適用拉....人口計算公式好像沒有變化 ============這是2.8的例子喔.....========= 以衝撞船為例 衝撞船 艦隊成本 * 市民: 6 * 木材: 56 * 硫磺: 21 * 每小時維持費用: 20 * 建造時間: 34分 * 市民: 6 沒錯!!就是這個!!! 人口一減少,金幣產量也會跟著減少 這個消耗掉多少成本呢? 以22城鎮 16酒館 8博物館來說 人口全滿後基本民意有100.....廢話不多說,直接跳到結論 消耗的金錢&消耗的時間 <=> 40金幣 & 2.9小時 PS:消耗的時間指的是恢復到人口全滿所需要的時間 消耗的金錢指的是你從點下去的那一刻開始,減產的金幣的總額 一次造更多會消耗更多 如果一次造10台 消耗的金錢 & 消耗的時間 <=> 2637 & 23.41 20台 消耗的金錢 & 消耗的時間 <=> 8285 / 39.29 幾個原則 1.單次造兵量越多,成本越高,是每一個單位的成本都會提高 2.基本民意越高,損失越少,因為恢復的速度會加快 不過應該平常都會讓 人口最大值>民意最大值 才是(所以基本民意應該會放到趨近0) 時間太多可以造好一條點一條船,這是損失最少的作法....假如吃飽太閒的話 另外,造好一條船等人口恢復再造一條不會比較省,因為還有個東西叫做維持費 在"完美"的情況下,一次一條跟一次20條所消耗的維持費是一樣的 ^^^^ (意思就是你一次造一條船,然後中間沒有船廠的閒置時間) ============以下是程式碼========== #include <stdio.h> int main() { long int pop_buffer = 0; int human_incre_rate; int base_human_rate = 0; int lose_human = 0; int time_counter = 0; int money_counter = 0; int money_buffer = 0; do{ printf ( "請輸入基本民意:" ); scanf ( "%d", &base_human_rate ); printf ( "請輸入減少的人口(輸入-1離開):" ); scanf ( "%d", &lose_human ); time_counter = 0; money_counter = 0; human_incre_rate = base_human_rate + lose_human; while ( lose_human > 0){ pop_buffer = pop_buffer + human_incre_rate; money_buffer = money_buffer + lose_human * 4; while ( money_buffer > 3600) { money_buffer = money_buffer - 3600; money_counter++; } if ( pop_buffer > 180000){ pop_buffer = pop_buffer - 180000; lose_human--; human_incre_rate--; } time_counter++; } printf ( "消耗的金錢/消耗的時間 = %d/%.2f(時)\n", money_counter, (float)time_counter/3600); }while (lose_human != -1) ; return 0; } 說明: 民意50一個小時會增加一個人口 也就是說假設有個值為pop_buffer (population buffer 人口暫存器) 民意50表示每秒會幫pop_buffer+50點 一個小時之後會增加一個人口 所以 50*3600=180000 也就是說當pop_buffer達到180000之後,人口就會加一 民意就會減一(=49) 這個計算法在精度上應該是沒問題...都是整數而且時間上是以秒為單位 金錢的部份我就不說明了,遊戲中大部份的數值都可以這樣子去做分析 然後就可以用線性規劃去計算最大的利益(如何當個農夫) ============ 不過是在不跟任何人交流的前提下.....跟人交流的話又更複雜了 更不用說還有"用搶得比較快"這種方式 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.182.246

02/21 10:49, , 1F
註:有關 消耗的金錢&消耗的時間 的數字是用程式跑出來的
02/21 10:49, 1F

02/21 10:52, , 2F
噗...我好像搞錯問題了....算了
02/21 10:52, 2F

02/21 12:12, , 3F
唔...這種算法好像也有可能...不知道遊戲是使用哪種
02/21 12:12, 3F
文章代碼(AID): #19dsitmp (Ikariam)
文章代碼(AID): #19dsitmp (Ikariam)