freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

游戲坦克大戰(zhàn)軟件的開發(fā)畢業(yè)設(shè)計-資料下載頁

2025-06-29 04:01本頁面
  

【正文】 :先判斷輸入的是什么鍵,然后分別對按下的鍵作出反應(yīng),比如按的是“上”,先判斷方向是不是“上”,如果不是,先讓他方向變成上,如果是“上”再判斷是否能走,比如前方是否有敵人坦克,前方是否有障礙物,前方是否到了邊界,分別作出判斷,如果以上條件都不滿足,就是坦克可以移動,那么就讓坦克的坐標(biāo)X減去一個固定的值。其他鍵的方法跟“上”的方法一樣。這樣便實現(xiàn)了坦克的控制。4. 添加己方坦克繪制代碼在OnDraw函數(shù)里添加顯示坦克圖片代碼:原理是先創(chuàng)建與設(shè)備兼容的DC,然后把圖片選入位圖對象,在把位圖對象選入設(shè)備DC,最后顯示到屏幕上。這是基本的圖片顯示到屏幕上的原理。由于這個游戲用到了一個背景圖片,只要用到了背景圖片,那么就肯定會出現(xiàn)“閃屏”的現(xiàn)象,解決“閃屏”現(xiàn)象我們要借用圖像處理的雙緩沖技術(shù),當(dāng)然這里用到的雙緩沖技術(shù),一會在下面會專門介紹到雙緩沖技術(shù)。 坦克發(fā)子彈己方坦克發(fā)子彈:通過按空格鍵(默認(rèn))。也可以通過鍵盤設(shè)置來設(shè)置自己喜歡的鍵位。按了發(fā)子彈鍵后,出來一顆子彈,再按再出,最多可以打出來8發(fā)子彈,再按就沒了,當(dāng)然子彈過一段時間會消失,要么打中了敵人,要么到了地圖的邊界,或者遇到了障礙。如圖46所示。 圖46 坦克發(fā)子彈主要設(shè)計思路如下:先準(zhǔn)備子彈圖片,把圖片引入到程序里,然后定義變量,最后在OnKeyDown里寫程序代碼。1. 添加子彈位圖添加子彈位圖:先用PS繪制一張子彈的圖片,保存為bmp格式,放如到程序目錄res文件夾下,然后在程序里點擊插入資源(或者用快捷鍵Ctrl+R),然后選Bitmap,找到res目錄,點擊引入,然后把位圖到程序里,最后修改ID,改為IDB_ZD。2. 定義變量定義變量:定義變量分別初始化。我方子彈X,我方子彈Y,我方子彈的方向,是否顯示我方子彈。3. 添加鍵盤響應(yīng)消息在OnKeyDown里加代碼:主要把坦克的坐標(biāo)坦克的方向分別賦值給子彈的各個屬性,坐標(biāo),方向等。這樣就把坦克子彈的顯示初始位置以及方向設(shè)置了。4. 在OnTimer函數(shù)中添加代碼在OnTimer里加代碼:主要是修改子彈的坐標(biāo)(x,y);比如如果方向是上,那么讓x減去10;如果方向是下,那么就讓x加上10; 其他方向思路類似。5. 添加子彈繪制代碼在OnDraw函數(shù)里加顯示子彈圖片代碼:讓子彈在屏幕上顯示出來。主要的原理是:先建立設(shè)備DC,然后選入位圖,然后把位圖選入DC,最后顯示到屏幕上。由于子彈圖片大小比較小,移動的時候看起來不會出現(xiàn)“閃屏”現(xiàn)象。這里只是用到一般的圖片顯示就夠了,毋須用雙緩沖來做,當(dāng)然如果用雙緩沖來做也可以。 障礙物設(shè)計障礙物設(shè)計:在游戲里添加一些障礙物,讓游戲變得更有樂趣,當(dāng)坦克走到障礙物的附近的時候,有的不能走動,有的可以繼續(xù)往前走,有的可以打掉,有的打不掉。主要設(shè)計思路如下:1. 添加障礙物位圖先準(zhǔn)備素材:用PS繪制障礙物圖形,并保存為bmp格式的圖片,并把圖片放到程序的RES文件夾下。然后在程序里點擊插入資源(或者用快捷鍵Ctrl+R),然后選Bitmap,找到res目錄,點擊引入,然后把位圖到程序里,最后修改ID,改為IDB_TIE。2. 定義變量定義變量:為游戲準(zhǔn)備設(shè)置障礙在那個地方,設(shè)置個數(shù)等等定義一些必要的全局變量并初始化。3. 添加障礙物繪制代碼顯示在屏幕上:在OnDraw函數(shù)中加顯示代碼:,不過用到了API函數(shù)StretchBlt(),這個API是復(fù)制一個圖片從一個DC到另外一個DC中,并且修改圖片的大小。因為障礙物圖片比較大,并且更背景的反差比較大,所以我們必須用雙緩沖來解決“閃屏”的問題。接下來會介紹到。 敵人坦克顯示敵人坦克顯示:在游戲里顯示敵人坦克。主要設(shè)計思路如下:1. 添加敵人坦克圖片準(zhǔn)備素材:用PS繪制敵人坦克上、下、左、右,各一張圖片,并保存為bmp格式。并把圖片放到程序的RES文件夾下。然后在程序里點擊插入資源(或者用快捷鍵Ctrl+R),然后選Bitmap,找到res目錄,找到敵人坦克圖片,點擊引入,然后把位圖到程序里,為了方便記憶,我們把上、右、下、左四個坦克的ID分別修改為IDB_E1,IDB_E2,IDB_E3,IDB_E4。2. 定義變量定義變量并初始化:敵人坦克的坐標(biāo),敵人坦克的方向,是否顯示敵人坦克。3. 添加敵人坦克繪制代碼在OnDraw函數(shù)里寫代碼:原理同添加己方坦克繪制代碼這里不重復(fù)了。同樣的這里也用到了“雙緩沖技術(shù)”,稍后將介紹到。 敵人坦克AI敵人坦克的AI設(shè)計:敵人坦克可以自己移動,自己改變方向,自己放子彈。主要設(shè)計思路如下:1. 隨機函數(shù)rand()rand()通常的使用方法: rand()不需要參數(shù),它會返回一個從0到最大隨機數(shù)的任意整數(shù),最大隨機數(shù)的大小通常是固定的一個大整數(shù)。這樣,如果你要產(chǎn)生0~10的10個整數(shù),可以表達(dá)為: int N = rand() % 11。 這樣,N的值就是一個0~10的隨機數(shù),如果要產(chǎn)生1~10,則int N = 1 + rand() % 11。總結(jié)來說,可以表示為:a + rand() % n 其中的a是起始值,n是整數(shù)的范圍。 若要0~1的小數(shù),則可以先取得0~10的整數(shù),然后均除以10即可得到隨機到十分位的10個隨機小數(shù),若要得到隨機到百分位的隨機 小數(shù),則需要先得到0~100的10個整數(shù),然后均除以100,其它情況依此類推。 通常rand()產(chǎn)生的隨機數(shù)在每次運行的時候都是與上一次相同的,這是有意這樣設(shè)計的,是為了便于程序的調(diào)試。若要產(chǎn)生每次 不同的隨機數(shù),可以使用srand( seed )函數(shù)進(jìn)行隨機化,隨著seed的不同,就能夠產(chǎn)生不同的隨機數(shù)。當(dāng)然在本程序中我們的seed是系統(tǒng)的時間,這樣每次都不同,使得坦克能夠更加靈活自如。2. 坦克自己移動敵人坦克自己移動:在OnTimer函數(shù)里修改坦克的坐標(biāo),這樣就實現(xiàn)了坦克的移動,比如向上走,那么讓坦克的Y減去一個固定的值。那么就實現(xiàn)了坦克的向上移動。其他方向類似。3. 改變坦克方向及控制發(fā)子彈敵人坦克改變方向和放子彈:這里先定義個一個int times=0;然后每調(diào)用一次ontimer函數(shù)times++;這樣給個判斷,比如times==90的時候,那么讓敵人坦克的方向 EDrection變換下,當(dāng)然這里用到了系統(tǒng)的rand隨機數(shù),這樣就實現(xiàn)了坦克自動改變方向。當(dāng)然times==90的時候同時讓坦克發(fā)子彈,改變E_FIRE變量的值。并在最后令times=0;繼續(xù)循環(huán)。 敵人坦克移動判斷敵人坦克移動:判斷敵人坦克是否能走,前方如果是邊緣,如果是敵人坦克,如果是障礙物等情況,都是不能移動的情況,否則就能移動。主要設(shè)計思路如下:1. 前方是邊緣如果前方是邊緣:情況跟己方坦克類似,也是先判斷方向是往哪的,比如“上”,那么坦克坐標(biāo)Y=0。如果“下”,那么坦克坐標(biāo)Y=660。等等左右方法類似,不列舉。2. 前方是我方坦克如果前方有我方坦克:先判斷方向,比如“上”:如果前方有我方坦克,并且敵人坦克方向朝上,而且兩個坐標(biāo)值Y相差36以內(nèi),我方坦克X坐標(biāo)在敵人坦克坐標(biāo)的左36,或者右36以內(nèi)。那么就表示有我方坦克。那么敵人坦克則不能移動,不移動就是不修改他的坐標(biāo),而移動就是修改坐標(biāo)。 其他方向類似,不列舉。3. 前方是障礙如果前方是障礙:前方有障礙跟前方有坦克是一樣的。然后修改坐標(biāo)也是其他方向原理一樣。 敵人發(fā)子彈、子彈移動敵人發(fā)子彈:先判斷坦克的方向,然后對子彈的坐標(biāo)作修改,最后敵人坦克發(fā)出來的子彈在屏幕,修改一下,顯示一下,這樣就實現(xiàn)了子彈的移動。主要設(shè)計思路如下:1. 定義變量為敵人子彈定義變量:包括坐標(biāo),子彈坐標(biāo),以及是否顯示子彈變量,因為有3個敵人坦克,那么我們應(yīng)該用數(shù)組。2. 在OnTimer里加判斷代碼在OnTimer函數(shù)里加代碼:先判斷方向,然后對子彈的坐標(biāo)進(jìn)行修改。這里拿子彈方向朝上舉例子:方向朝上,使得坦克坐標(biāo)Y減去一個固定的值。其他方向也一樣實現(xiàn)。3. 添加子彈繪制代碼在OnDraw函數(shù)里加顯示代碼:先看是否顯示子彈,如果顯示,那么就先創(chuàng)建DC,選入位圖,選入DC,最后顯示到屏幕上。因為子彈面積小,不需要應(yīng)用到“雙緩沖”來處理。 子彈越界判斷判斷子彈是否越界或者打到障礙物上:當(dāng)子彈在屏幕上移動的時候,應(yīng)該判斷子彈是否可以繼續(xù)往前移動,如果越界,如果前方有障礙,子彈都應(yīng)該停止前行。主要設(shè)計思路如下:用一個變量來控制子彈的顯示就行了,比如如果一個變量為1,那么讓他顯示子彈,為0就不顯示。這樣就實現(xiàn)了子彈顯示問題。1. 定義變量定義變量:定義兩個int變量,一個是是否顯示我方子彈如果等于1就顯示,如果等于0就不顯示,一個是是否顯示敵人子彈,如果等于1就顯示,如果等于0就不顯示。2. 在OnTimer函數(shù)里加判斷代碼在OnTimer函數(shù)里添加代碼:只要判斷前方是否有障礙,或者前方是邊緣,就分別可以修改變量的值等于0。3. 添加子彈繪制代碼在OnDraw中的顯示己方子彈,和方子彈的部分分別加入一條判斷語句:如果顯示子彈的變量等于1,那么就讓子彈顯示,否則不處理。 己方子彈打中敵人、敵人爆炸己方子彈打中敵人坦克、敵人爆炸:己方發(fā)子彈,當(dāng)子彈碰到的敵人坦克,那么顯示個爆炸圖片。主要設(shè)計思路如下:判斷己方子彈的坐標(biāo)和敵人坦克坐標(biāo)進(jìn)行對比,如果己方子彈和敵人坦克坐標(biāo)在一定范圍內(nèi),那么就讓該敵人坦克爆炸,爆炸就是先把該坦克隱藏,并在這個位置顯示一個爆炸圖片。1. 定義變量定義變量并初始化:定義1個int變量,用于判斷是否顯示敵方坦克,如果是1顯示,如果是0就不顯示。再定1一個int變量,用于判斷是否顯示爆炸圖片,如果是1,顯示爆炸圖片,如果是0,不顯示。2. 在OnTimer里加代碼在OnTimer里加代碼:先判斷是否符合爆炸的要求,這個也考慮四個方向,上下左右,這里用子彈朝“上”為例。判斷己方子彈的坐標(biāo)和敵人坦克坐標(biāo)進(jìn)行對比,如果己方子彈和敵人坦克坐標(biāo)在一定范圍內(nèi),那么就讓該敵人坦克爆炸,爆炸就是先把該坦克隱藏,隱藏就是把變量賦值為0,把爆炸判斷變量賦值為1,然后顯示爆炸圖片。3. 在OnDraw函數(shù)里加代碼在OnDraw函數(shù)里加代碼:先把敵人坦克隱藏了,判斷敵人顯示變量是否等于1,如果等于1就顯示敵人坦克,否則不顯示,這樣實現(xiàn)了坦克的爆炸消失,再顯示爆炸效果,爆炸也一樣,如果爆炸變量等于1,顯示爆炸圖片,顯示完了再把爆炸變量賦值為0,這樣爆炸圖片就消失了。 敵人坦克子彈打中我方坦克、我方坦克爆炸敵人坦克子彈打中我方坦克、我方坦克爆炸:當(dāng)敵人發(fā)出來的子彈打在了我方坦克上時候,讓我方坦克爆炸并消失。主要設(shè)計思路如下:1. 定義變量定義變量:定義一個變量用來判斷是否顯示我方坦克2. 在OnTimer函數(shù)里加判斷代碼在OnTimer里加代碼:先判斷是否符合爆炸的要求,這個也考慮四個方向,上下左右,這里用子彈朝“上”為例。如果判斷我方子彈的坐標(biāo)和敵人坦克坐標(biāo)進(jìn)行對比,如果己方子彈和敵人坦克坐標(biāo)在一定范圍內(nèi),那么就讓該我方坦克爆炸,爆炸就是先把該坦克隱藏,隱藏就是把變量賦值為0,把爆炸判斷變量賦值為1。3. 在OnDraw函數(shù)里加代碼在OnDraw函數(shù)里加代碼:當(dāng)條件滿足爆炸要求,那么就顯示爆炸效果,爆炸完以后,也同時在顯示我方坦克代碼上加一個判斷條件如果顯示我方坦克變量等于1,則我方坦克,這樣便實現(xiàn)了我方坦克的爆炸消失,最后把是否顯示爆炸圖片變量賦值為0,讓爆炸圖片從屏幕上消失。 我方坦克的重生我方坦克的重生:當(dāng)己方坦克被打中爆炸消失后,一段時間后,讓己方坦克重新出現(xiàn)在屏幕上。主要設(shè)計思路如下:當(dāng)我方坦克被打中時候,過一段時間,讓坦克繼續(xù)顯示出來,并且初始他的坐標(biāo)位置。1. 添加變量在敵方子彈打中我方子彈的代碼中加入一個變量死亡判斷變量;定義個計數(shù)變量。2. 在OnTimer函數(shù)里加代碼在OnTimer中寫如果死亡變量為真,讓計數(shù)變量自加。當(dāng)計數(shù)變量到一定程度的時候,則讓坦克復(fù)活顯示,并把他的位置重新賦值。再讓死亡變量賦值為假;防止己方坦克一直在那個坐標(biāo)“復(fù)活”。3. 繪制坦克復(fù)活在OnDraw函數(shù)里加上坦克復(fù)活代碼:其實代碼就是把坦克在屏幕上繪制一遍,原理跟前面的坦克繪制原理一樣,這里不重復(fù)。 敵人坦克的重生敵人坦克的重生:一次出來三個坦克,當(dāng)3個坦克都死了以后,一段時間后,再出來三個坦克。主要設(shè)計思路如下:1. 定義變量在敵方子彈打中我方子彈的代碼中加入一個變量死亡判斷變量;定義個計數(shù)變量。2. 在OnTimer函數(shù)里加代碼在OnTimer中判斷,如果屏幕上沒有坦克了,那么讓死亡變量為真,讓計數(shù)變量自加。當(dāng)計數(shù)變量到一定程度的時候,則讓敵人坦克復(fù)活顯示,并把他的位置重新賦值。再讓死亡變量賦值為假;防止敵人坦克一直在“復(fù)活”。3. 繪制敵人坦克讓其復(fù)活在OnDraw函數(shù)里加上坦克復(fù)活代碼:其實代碼就是把三個敵人坦克分別在屏幕上繪制一遍,原理跟前面的敵人坦克繪制原理一樣,這里不重復(fù)。 打分系統(tǒng)以及坦克數(shù)顯示打分系統(tǒng)以及坦克數(shù)顯示:打死一個敵方坦克加一定的分?jǐn)?shù),并顯示出來,以及敵人坦克和己方坦克數(shù)目顯示。主要設(shè)計思路如下:每打死一個坦克計100分,敵人坦克初始值為18,己方坦克初始值為3。1. 定義變量定義變量:三個int類型變量,分別是我方坦克數(shù)量、敵人坦克數(shù)量、分?jǐn)?shù),定義幾個CString變量并把坦克數(shù)量敵人坦克數(shù)量分?jǐn)?shù)等轉(zhuǎn)換為這個格式,用于顯示到屏幕上。2. 在屏幕上輸出文字 在OnDraw函數(shù)里:在屏幕上輸出字符。分別顯示得分,剩余坦克數(shù)顯示,己方坦克數(shù)顯示。3. 進(jìn)入下一關(guān)或者游戲結(jié)束如果己方坦克數(shù)為0,那么就提示游戲結(jié)束。如圖47所示。 圖47 游戲結(jié)束如果敵人坦克數(shù)為0,那么就進(jìn)入下一關(guān)。 為游戲添加聲音無聲的世界是乏味的,那么我們給游戲添加聲音,讓游戲變得更加有趣,讓游戲的可玩性更強。主要設(shè)計思路如下:1. 準(zhǔn)備素材聲音片段,可以用專業(yè)的聲音處理軟件截取,也可以在網(wǎng)
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1