Re: [程式] 模擬城市的電線連接判斷是怎麼做的阿???

看板GameDesign作者 (風雲再起)時間14年前 (2010/07/12 11:46), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串6/8 (看更多)
※ 引述《chenglap (無想流流星拳)》之銘言: : ※ 引述《yhn0tgb60 (呦厚厚)》之銘言: : : 我想也許他們有更好的方法在處裡這個問題 ??? : : 想和大家討論一下這個問題 謝謝了 ^^ : 我覺得以上的分析本身走錯了方向. : 因為你分析出來的, 是忽視了以下這些東西: : 1. 模擬城市有電量的限制的, 並不是只要連到發電廠就有電, 而 : 是要發電廠支持得住發電量 : 2. 在模擬城市表現出來的是發電廠會先提供更接近區的電力. : 3. 可以有兩個不同地方的發電廠, 所以終點可以有兩個, 但到底 : 決定由誰供電卻是謎題. : 4. 一個較近的電廠的供電額滿, 還是會使用較遠的電廠, 所以也 : 不是單純找最近的電廠 : 因此, 最基本的問題是, 「哪個是起點, 哪個是終點」, 這件事根 : 本就無法在一開始時決定, 既然連起點和終點都不明白, 我們不需 : 要假定這個系統是建立在「路徑搜尋」之上的. : 而我認為最簡單的做法就是「顏料滲透」法. : 在古早時代的語言 BGI 帶的繪圖指令中, 已經有 floodfill 這種 : 指令, 簡單來說, 就是填色. 把一個區塊填滿, 直至碰到邊為止. : 這種指令在 286 的電腦上也不會用很多的時間, 而運作的方式很 : 簡單, 就是從一點開始不斷擴張出去, 直至填完為止. 可以用 : recursion 或者 BFS 類似的方式達成. : 然則, 你把電網想像成一幅圖的話, 運作方式也是相同的. 很簡單 : , 由電廠開始, 你只要加一個參數是「電量」, 每經過一個會使用 : 電的點處, 就減去相對的數量, 直至填滿或者數值不足為止. : 你可以想像成, 每座電廠相當於一瓶滾珠, 而電網則是一個迷宮, : 你做的事情就是在迷宮幾點倒下滾珠, 隨他們自己滾動而已. : 你有幾座電廠, 就做幾次, 模擬城市一當中沒有小型電廠 (風電, : 水電) , 只有大型電廠 (煤電, 核電) , 所以電廠的數量不會太多 : , 應該不會超過十個. 相連的電廠更可以直接將電量相加計算. : 那麼一次的工作量, 大概就是等於電廠數 x floodfill 的工作量, : 另外, 因為不用顯以及有限額的關係, 所以工作量應該比 : floodfill 要低. 而模擬城市本身的更新速度其實並不很頻繁, 一 : 個月可能只更新五次左右而已. : 那是 286 也可以支持得來的. 至於你開電纜, 關電纜, 也不會有影 : 響, 運算不應該在你建築或者拆除時進行, 而應該用 timer 計時 : 器定期進行. : 所以這並非一個「searching」動作, 而是一個「floodfill」的動 : 作, searching 需要找最短的路線, 而你 floodfill 根本就不用顧 : 慮這問題, 只要節省了「尋找最短路線」這個要求, 你就會發覺你 : 不需要用那麼複雜的 algorithm 了. : 一開始把這問題想成是「路徑尋找」的問題就是盲點, 那會誤導你 : 解決問題的方向的. 我不是學程式的,但是我的想法是 每個小區塊大小是1,並帶有一個數值0或1,0沒電,1有電 所以只要檢查旁邊相鄰的區塊是0還是1就好,全部區塊加起來<150就沒問題(電廠算) 而這個動作只有在建築區塊新增或減少的時候檢查 這樣會不會比較簡單? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.242.159.194

07/12 11:50, , 1F
我的想法也比較偏這種 應該不一定要用路徑去判斷吧?
07/12 11:50, 1F

07/12 12:42, , 2F
是比較簡單,且導入了 wireless energy transfer 科技,
07/12 12:42, 2F

07/12 12:43, , 3F
比起元祖 SimCity, 這算法比較適合在SimCity5000使用 XD
07/12 12:43, 3F
文章代碼(AID): #1CEf0ZRu (GameDesign)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 6 之 8 篇):
文章代碼(AID): #1CEf0ZRu (GameDesign)