Re: [程式] 圈地面積 最小面積取得相關 (方向判定)

看板GameDesign作者 (謊言接線生)時間12年前 (2013/02/27 04:06), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/5 (看更多)
不要想那麼多,這圖的大小沒有大到哪去,所以最簡單的做法就是假設你是一張 1024*768的圖,那你就開個1024*768的陣列。陣列裡面可能有幾種值(只是舉例): 0:還沒被圈過的點 1:已經被圈起來清掉過的點 2:正在被你畫圈經過的點 你沒看錯,就直接把你畫過的點全部trace過去填2記下來,不管直走橫走斜走都 一樣,直到你發現接下來要走到的點旁邊有另一點值是1,表示你圈到一個範圍了, 就隨便找一個為0的點跑floodfill,邊界可以是1或2。被floodfill過的點全填3標記 起來。 3:可能要被清掉的候選點 怎麼決定floodfill下去要清掉哪一邊?事實上圖的面積你一開始就是知道的, 然後每一次清掉的點數量也可以記錄,所以事實上隨時你都知道你圖還剩多少面積沒 被清掉。因此你就比較: 本次floodfill的面積 (目前總面積 - 本次floodfill的面積) 這兩個值。前者面積小,就把目前標2跟標3的清掉(標成1)。這表示你一開始 亂猜去做floodfill的那邊真的比較小。 如果後者面積小,就把標0跟標2的清掉(標成1),然後把3恢復成0。這表示你 一開始猜錯邊了,那就把另一邊的全清掉。 事實上開陣列有些好處,除了你可以很簡單知道你目前還可不可以往某方向走( 只有標為0而且旁邊有1的點是未清的邊界可以用來「移動」,只有標為0且旁邊沒1的 點是未清而且非邊界的點可以用來「圈」)以外,天蠶變遊戲其實常有些額外規則如 : 1. 如果你清掉太大塊背景圖的主要目標區(哎,常見的就是那個美女本身啦XD)但 遊戲還沒結束,會有些懲罰。(像我看過不少原本下面應該要是美女圖,但是你如果 直接把美女的部分清一大塊出來,背景就會變成超醜噁心圖之類的,在這種情況下清 光算失敗XD) 2. 當把背景圖中主要的部分清到80%(或90%之類的,不一定)以上就算過關了,但 這時就要依那個比例來計算最後的獎勵如分數、加殘機數或是獎賞圖的養眼程度(爆 )。 類似像這樣的額外規則,你直接有個全pixel的陣列就很好做,直接把清掉的部 分And一個跟全圖同大小的主要目標遮罩然後統計數量就好。要是你用向量啊線段啊 頂點啊啥有的沒的去算在裡面在外面在上面,會煩死XD 對於秀圖也有好處。你直接把這個陣列當成一種遮罩,考慮是0非0就知道你剩下 的圖該秀哪些部分了。 這也許不是唯一的方法,也不是效能一定最好的方法,不過應該很直觀好做XD -- 「珍貴的回憶?還不是跟夢一樣虛幻不實的東西?你想要什麼樣的回憶,我幫你 做出來啦!」 --艾蜜思,謊言事務所實現使者 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.118.171 ※ 編輯: ddavid 來自: 118.167.118.171 (02/27 04:25)

02/27 09:35, , 1F
先感謝您的回文 我好好來研究一下
02/27 09:35, 1F
文章代碼(AID): #1HBHN2e- (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #1HBHN2e- (GameDesign)