看板 GameDesign 關於我們 聯絡資訊
我個人提供兩個懶惰的方法 首先把你會讀入的檔案數量以及個檔案大小匯出成兩檔案 binary with xml( extenable file format ) 如此你會知道全部所需讀取行為的大小為n 並且在該會出檔案中知道目前處理的進度 ex: <DataStart> <!-- Adress是目前檔案讀取位址 --> <Image Name="79979.fat" Adress="0" /> <Progess Value="50" /> <Image Name="978978.fat" Adress="28825252" /> <Progess Value="100" /> <DataStart/> 如此你可以知道目前的進度為 g_iDataProgess/n 如此將可以丟給多執行緒畫出目前進度 不過比較常見的方式應該是 在parse你檔案的時候做一個while迴圈 int l_iDataCount = n; while(n) { string l_strFileName = g_strFileList[n]; void*l_pData = DoDataParse( GetFileFormatData( l_strFileName ) ); g_pResource->AddData(l_pData); DrawProgress(); } 這是最懶惰的方式 不過我比較偏向第一種就是 不過第一種需要花費的精神比較大 以上是一點小小的經驗 沒有寫的很仔細 請大家不要鞭我XD ※ 引述《kuso0516 (隱)》之銘言: : 我有個程式要載入差不多6MB的24位元點陣圖 : 載入的時候都會頓一下 : 是因為尋找足夠記憶體所以花了點時間嗎? : 這樣正常還是說有問題 : 是不是有比較好的處理方式 : 因為這是一張1600*1200的地圖(以後有可能更大) : 我想做類似即時戰略的視窗和地圖 : 畫面可以上下左右移動 : 程式流程 : 1.把地圖畫到HDC上 : ┌──────────────┐ : │ │ : │ │ : │ │ : │ │1200 : │ │ : │ │ : └──────────────┘ : 1600 : 2.把地圖上的物件畫出來 : ┌──────────────┐ : │ │ : │ <囧> │ : │ │ │ : │ /\ │1200 : │ │ : │ │ : └──────────────┘ : 1600 : 3.把HDC某個部份畫到視窗上 : ┌──────────────┐ : │ │ ╭───_口X : │ <囧> │ │ <囧> │ : │ │ │─→ │ │ │ : │ /\ │1200 │ /\ │←視窗 : │ │ ╰─────╯ : │ │ : │ │ : └──────────────┘ : 1600 : 另外想問的就是 : 有些遊戲會有LOADING的畫面 : 是怎樣寫的? : fun work_1(); //某個會花很久時間的涵式 : loading(40); //畫面顯示40%成功 : fun work_2(); //某個會花很久時間的涵式 : loading(40); //畫面顯示60%成功 : fun work_3(); //某個會花很久時間的涵式 : loading(20); //畫面顯示100%成功 : 這樣嗎XD : 新手發問,請多指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.118.21
darkflier:順便提一下原po的方向是對的 只是經驗不太夠要多看code 11/22 18:46
darkflier:剛開始寫code曾被資深設計師說:幹你馬的會不會寫程式啦 11/22 18:47
darkflier:多被電幾次就會啦XDDD 11/22 18:47
kuso0516:嗯嗯 感謝D大 11/22 20:59
a1234957:這種命名法?你習慣用VS嗎XD 11/23 03:38
darkflier:不用VS的比較少吧 畢竟功能強大很多 11/23 07:51
Bencrie:那個叫 ... 微軟慣用的匈牙利命名法 @@? 11/23 21:54
Ebergies:匈牙利真是被誤用到想哭 11/29 19:21
ddavid:匈牙利命名法的誤用,請讓Joel來幫您介紹其源流跟正確使用 11/30 00:54
ddavid:方式XD: 11/30 00:54
ddavid:http://tinyurl.com/g8zds 11/30 00:54