GameDesign 板


LINE

※ 引述《F23ko (純潔)》之銘言: : 但是有一些比較複雜的東西 : 例如: : 匿名函式 : (塞到委派中的匿名函式,讀取起來有困難,我要怎麼知道委派中的匿名函式是哪一個?) 請幫你的class多一個屬性,上面記載現在是哪一個。 : 二元樹的節點 : (我怎麼知道哪個節點連接哪個節點?只能全部讀取出來,寫入檔案嗎? : 這樣到讀檔的時候又要再重新插入一次) 有兩種比較直接的方法存二元樹: 1. 假如是Complete binary tree,那可以讓Node的編號從Node[1]開始,Node[n]的 Children一定是Node[2*n]跟Node[2*n+1],這樣你只要照層數BFS下來存就好。 2. 如果是任意的binary tree,那除了硬填成Complete來處理以外,你也可以用DFS 遞迴下去,除了照DFS順序存資料以外再加存「過程」,比如回到上一層的這個動作 ,然後讀出來就可以完全照這個順序重現。 但事實上,假設你的二元樹有確保某些性質,讓它不會因為資料進來的順序而造 成(有影響的)改變,或是你根本沒有用到那麼詳細的二元樹性質,那其實你就DFS 或BFS跑一次資料一一存下來就好了,下次讀檔再重建。重建的樹可能跟原本長得不 一樣,但是如果用不上那些性質那就不需要困擾自己,比如說你建個Binary search tree只是為了加速查找的速度,順序對你來說是不重要的。至於你說「到讀檔的時候 又要再重新插入一次」,那存得再爛大不了也就是O(nlogn) vs O(n)而已,但卻可以 讓你不用多存資料以外的其它資訊,也不用為讀檔寫出一個新的Function,而只要使 用原本的Insert就好了。 : ======================================================================= : 還有所謂的「遊戲記錄檔」之類的東西 : 就是能將遊戲給「錄」下來 : 我覺得是,將玩家以及AI的指令、亂數記錄下來後,再用遊戲的引擎去播放 : 很好,我覺得這會造成程式中「散佈」一堆紀錄、播放用的程式碼 : 撰寫、除錯起來可能會有困難...... 你沒有想到一點,那就是這堆紀錄、播放用的程式碼本身就可以拿來當作Debug Code,所以你應該讓它能夠被拿掉而完全不影響原本的程式。所以第一種方法是你可 以這樣做: #define REPLAY . . . // 一般執行用的Code #if REPLAY // Replay用的Code #endif // 一般執行用的Code 這樣你要對原本的Code做Debug,就把#define那行註解掉就好。 第二種方法是寫一個獨立的class,並提供Method來做動作記錄: class Replay { // 要定義的屬性包括所有要記錄的資訊 public void SaveAction(Action Act); public Action GetNextAction(); public bool Save(string Filename); } 然後你要記錄某個動作就在該處call SaveAction()這樣,要播放就是一個迴圈 跑GetNextAction()然後照著拿出來的Action做動作,最後用Save()直接寫成檔這樣 。 而Action也是個class,唯一的重點是它要實做出一些Method,其中一個Method 代表在遊戲中實際去做這個動作。另外還要有存取檔案的功能,這樣Replay就只要依 序Call每個存下來Action的存入功能就能存檔,同樣的反覆Create新的空Action做讀 取直到不能讀也就是讀檔完成了。但依情況而定,存取檔案也可以做在Replay那一層 裡面,但還是要有提供出Method把資料交給Replay就是。 以上不是唯二的方法,我也只是線上隨想隨寫,但這應該是很直覺且也不算太差 的做法。其中可能有些小錯或沒想詳細,不過方向應該大致沒問題。 : 所以我覺得我想的方法不好 : 請問這種功能一般是如何實現? -- 「如果你沒法給我個解釋的話,死一萬次也不能彌補你的過錯!」 「我沒辦法死一萬次賠妳啊。」 「可是你有辦法半死兩萬次,知道嗎,嗯?」 --蓮.席斯塔 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.250.175.242
1F:推 F23ko:謝謝回答,但我需要花些時間去思考..... 08/01 19:47







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP