版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
HPF坦克大戰(zhàn)地圖編輯器功能以及代碼說明程序結(jié)構(gòu)說明:MainFrm.cpp:主框架類,在此文件中的PreCreateWindow()方法中,添加了對窗口大小進(jìn)行初始化的語句。Tankmap.cpp:主應(yīng)用程序類,在此文件中的initinstanse()方法里,添加語句,使窗口固定大小,不能最大化和最小化,也不能通過拖拉來改變邊框大小。MapSaveLoad.h:定義了地圖存儲加載操作類,用來進(jìn)行編輯區(qū)域的地圖和數(shù)據(jù)文件的轉(zhuǎn)換。進(jìn)行基本的保存和加載方法,并且申明了標(biāo)記變量和地圖編輯元素記錄數(shù)組。staticintsaveMap[13][13];//將地圖編輯區(qū)域分成13*13的區(qū)域,該數(shù)組為保存//地圖的二維數(shù)組,每個(gè)元素保存當(dāng)前位置保存的圖//片編號;默認(rèn)為0,表示無地圖在此處;staticintisSaveOrLoad;//標(biāo)記變量,當(dāng)值1為時(shí),表示當(dāng)前狀態(tài)為剛//保存文件或剛剛打開文件;在后續(xù)的處理中,//這個(gè)值將會非常有用,初始化為0;staticboolSave(CFile*);//將當(dāng)前操作區(qū)域的地圖編輯按照二維數(shù)組來//進(jìn)行記錄,記錄值為代表當(dāng)前貼圖的圖片編號。staticboolLoad(CFile*);//加載數(shù)據(jù)文件;讀入按照一定格式進(jìn)行記錄的數(shù)據(jù)文件,將讀入值//記錄到二維數(shù)組當(dāng)中,在OnDraw()函數(shù)執(zhí)行繪圖的時(shí)候,會根據(jù)二//維數(shù)組的值,貼上相應(yīng)圖片,完成打開操作。MapSaveLoad.cpp:地圖操作類的實(shí)現(xiàn),定義在相應(yīng)頭文件中聲明的各個(gè)變量和方法。TankMapDoc.cpp:在此文件的OnNewDocunment()方法中,進(jìn)行了【新建】操作的執(zhí)行代碼,將地圖數(shù)組清為零,并且將表記值isSaveOrLoad的值設(shè)置為1,表示剛剛進(jìn)行了文件操作。在執(zhí)行OnDraw()函數(shù)的時(shí)候,會將地圖編輯區(qū)域改變成一個(gè)除了老巢貼圖外,沒有任何其他貼圖的背景。在此文件的Serialize()方法中,添加代碼來執(zhí)行【保存】,【另存為】,【加載】等操作,通過判斷當(dāng)前CArchive&的變量ar來決定進(jìn)行何種操作,如果ar.isStoring,則表明現(xiàn)在執(zhí)行的是保存操作,執(zhí)行MapSaveLoad類的Save()方法,進(jìn)行保存,否則,執(zhí)行MapSaveLoad類的Load()方法,進(jìn)行打開文件操作。TankMapView.cpp:此文件為該程序執(zhí)行的主要文件,基本所有的畫圖函數(shù)都在此文件中。通過對OnDraw()方法的調(diào)用,來繪圖。添加的變量有:intmapNum=14;//全局變量;//標(biāo)示當(dāng)前選定的地形元素的圖片編號;//初始化為14,沒有代表任何圖片;//(因?yàn)楣ぞ呦渲械谋尘皥D片的編號為14)intmap[169][2];//代表地圖坐標(biāo)的數(shù)組,每個(gè)元素的//第一個(gè)變量代表該網(wǎng)格的橫坐標(biāo);//第二個(gè)坐標(biāo)代表該網(wǎng)格的縱坐標(biāo);//地圖網(wǎng)格排序按照行來順序編號;inttoolBox[14][2];//代表工具箱坐標(biāo)的數(shù)組,每個(gè)元素的//第一個(gè)變量代表該網(wǎng)格的橫坐標(biāo);//第二個(gè)變量代表該網(wǎng)格的縱坐標(biāo);//工具箱網(wǎng)格排序按照行來順序編寫;intx=-1;//當(dāng)前鼠標(biāo)位置橫坐標(biāo);//初始化為-1,表示程序剛剛開始執(zhí)行;inty=-1;//當(dāng)前鼠標(biāo)位置縱坐標(biāo);//初始化為-1,表示程序剛剛開始執(zhí)行;intinit=0;//數(shù)組初始化標(biāo)記,若等于1,則數(shù)組已初始化//若等于零,則數(shù)組未初始化;初始值為零;//該變量是為程序邏輯而設(shè)定的判斷變量;//雖然整個(gè)程序運(yùn)行中只改變1次,但是,其對//繪圖邏輯有很重要的作用//以免幾個(gè)普通數(shù)組被反復(fù)初始化浪費(fèi)效率;//避免SaveMap[][]數(shù)組被反復(fù)初始化,造成【新建】的效果。添加的函數(shù)有:boolInitArray();//function_1:初始化全局?jǐn)?shù)組,//將編輯器,包括地圖部分和工具箱部分的網(wǎng)格數(shù)組初始化;//并且將用于保存和加載的二維地圖數(shù)組初始化為0;boolDrawHome(CDC*pdc);//function_2:畫出地圖上的老巢,//這一塊地圖的老鷹圖片是默認(rèn)的,//是不可修改的,不可覆蓋的;boolDrawToolBox(CDC*pdc);//function_3:畫出工具箱網(wǎng)格,//并且繪制出在工具箱下面的選定元素展示框網(wǎng)格;//函數(shù)中用到的數(shù)據(jù)都是作者進(jìn)行多次計(jì)算或?qū)嵺`后得出。//因此數(shù)字值采用硬編碼的方式進(jìn)行編寫。boolDrawToolMap(CDC*pdc);//function_4:畫出工具箱中的待選擇元素//將14種地圖元素(包括背景)繪制到相應(yīng)的工具箱中的指定位置。boolDrawMap(CDC*pdc);//function_5:繪制地圖區(qū)域的網(wǎng)格,//13行13列,每個(gè)網(wǎng)格像素。boolChooseTool(CDC*pdc);/function_6:選擇工具箱中地圖元素,//根據(jù)鼠標(biāo)坐標(biāo)來選擇即將進(jìn)行編輯的元素;//將該元素設(shè)置為當(dāng)前編輯的地圖元素,//之后所選中的網(wǎng)格進(jìn)行就會貼該地圖元素。//該函數(shù)還負(fù)責(zé)將選中的編輯元素添加到下面的展示框內(nèi);boolChooseMap();//function_7:選擇的當(dāng)前貼圖位置,//將當(dāng)前鼠標(biāo)點(diǎn)選位置轉(zhuǎn)換為地圖二維數(shù)組的下標(biāo),//將該數(shù)組元素的值標(biāo)記為當(dāng)前選擇的編輯地圖元素,//用來記錄當(dāng)前位置的應(yīng)貼圖片編號;//貼圖可覆蓋,可用bitmap14,也就是背景圖片來覆蓋圖片,//產(chǎn)生橡皮效果效果。//老巢不可覆蓋。boolDrawNewMap(CDC*pdc);//function_8://每次讀取數(shù)組記錄,繪制已編輯地圖;//采用循環(huán)機(jī)制,將13*13的數(shù)組全部掃描繪制//將數(shù)組記錄值對應(yīng)的貼圖貼如到當(dāng)前數(shù)組所代表的地圖編輯網(wǎng)格中。重寫的方法:CTankMapView::OnDraw()在此方法內(nèi),通過設(shè)計(jì)上述添加函數(shù)的順序和進(jìn)行適當(dāng)?shù)臉?biāo)記變量的判斷,來控制整個(gè)程序的畫圖流程,相當(dāng)于主控函數(shù),具體程序執(zhí)行流程請參照說明文檔第二部分的圖形。CTankMapView::OnLButtonDown()處理鼠標(biāo)點(diǎn)擊事件,根據(jù)鼠標(biāo)點(diǎn)擊的位置來判斷動作,或者進(jìn)行工具箱的點(diǎn)選或者進(jìn)行地圖編輯區(qū)域的貼圖。通過調(diào)用Invalidate()函數(shù)來調(diào)用OnDraw(),進(jìn)行圖形繪制。附件說明:Res文件夾:自己在實(shí)際小霸王機(jī)子上截下來的地圖元素編輯圖片。包括各種地形的各種形狀。完全符合小霸王的地圖編輯元素。另外包含了后來沒有用到的四個(gè)方向的主坦克圖片,作為擴(kuò)充。自己寫的截圖程序(C#):Bitmapbb=(Bitmap)Image.FromFile("D:\\學(xué)習(xí)\\window編程\\picture\\src.bmp");for(inti=1;i<=13;i++){Bitmaps=bb.Clone(newSystem.Drawing.Rectangle((i-1)*32,0,32,32),System.Drawing.Imaging.PixelFormat.Format32bppPArgb);s.Save("D:\\學(xué)習(xí)\\window編程\\picture\\des"+i+".bmp");}Map文件夾:自己實(shí)際對照小霸王機(jī)上的關(guān)卡,模仿繪制出的1—4關(guān)的地圖,只要在啟動程序后,打開即可見。主要流程說明:見下頁流程將地圖數(shù)組數(shù)據(jù)填充到文件中。【保存】【另存為】MapSaveLoad::Save()IsSaveOrLoad=0;將數(shù)據(jù)文件數(shù)據(jù)填充到地圖數(shù)組中?!敬蜷_】MapSaveLoad::Load()IsSaveOrLoad=0;【新建】TankMapDoc類OnNewDocument()初始化地圖數(shù)組全為0IsSaveOrLoad=1;OnLButtonDown()鼠標(biāo)點(diǎn)擊將鼠標(biāo)點(diǎn)擊位置換算成相應(yīng)的數(shù)組下標(biāo)。IsSaveOrLoad=0;YNDrawHome()繪制老巢;DrawMap()繪制地圖網(wǎng)格DrawToolBox()將地圖數(shù)組數(shù)據(jù)填充到文件中?!颈4妗俊玖泶鏋椤縈apSaveLoad::Save()IsSaveOrLoad=0;將數(shù)據(jù)文件數(shù)據(jù)填充到地圖數(shù)組中。【打開】MapSaveLoad::Load()IsSaveOrLoad=0;【新建】TankMapDoc類OnNewDocument()初始化地圖數(shù)組全為0IsSaveOrLoad=1;OnLButtonDown()鼠標(biāo)點(diǎn)擊將鼠標(biāo)點(diǎn)擊位置換算成相應(yīng)的數(shù)組下標(biāo)。IsSaveOrLoad=0;YNDrawHome()繪制老巢;DrawMap()繪制地圖網(wǎng)格DrawToolBox()繪制工具箱網(wǎng)格DrawT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025福建省建筑安全員B證(項(xiàng)目經(jīng)理)考試題庫
- 2025四川建筑安全員-B證考試題庫附答案
- 2025天津市安全員《A證》考試題庫及答案
- 《it推動商業(yè)變革》課件
- 大匠文化精神課件(增)
- 多項(xiàng)式與多項(xiàng)式相乘的課件
- 【物理課件】測定金屬的電阻率 練習(xí)使用螺旋測微器課件
- 江蘇省無錫市2024-2025學(xué)年高二上學(xué)期期終教學(xué)質(zhì)量調(diào)研測試歷史試卷(含答案)
- 單位管理制度展示大全【職員管理】十篇
- 單位管理制度收錄大全【員工管理】十篇
- 貴州省遵義市播州區(qū)2023-2024學(xué)年二年級上學(xué)期數(shù)學(xué)期末質(zhì)量監(jiān)測試卷
- 2024版智能硬件產(chǎn)品研發(fā)合作協(xié)議3篇
- 國家電網(wǎng)招聘之財(cái)務(wù)會計(jì)類題庫含完整答案(必刷)
- 2024年手術(shù)室?guī)Ы坦ぷ饔?jì)劃樣本(5篇)
- 保安服務(wù)招投標(biāo)書范本(兩篇)2024
- 遼寧省沈陽市五校協(xié)作體2024-2025學(xué)年高二上學(xué)期11月期中考試語文試題(含答案)
- 保密知識培訓(xùn)
- 江西省穩(wěn)派教育2025屆數(shù)學(xué)高二上期末教學(xué)質(zhì)量檢測模擬試題含解析
- 2022-2023學(xué)年北京市海淀區(qū)高二(上)期末英語試卷(含答案解析)
- 2021-2022學(xué)年統(tǒng)編本五四制道德與法治五年級上冊期末檢測題及答案(共6套)
- (BRB)屈曲約束支撐施工專項(xiàng)方案
評論
0/150
提交評論