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

正文內(nèi)容

二d賽車(chē)游戲的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-08-23 15:01 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 移變化得出當(dāng)前的位置坐標(biāo),并進(jìn)行越界檢測(cè),若賽車(chē)超出世界范圍,則強(qiáng)制將賽車(chē)位置約束在范圍之內(nèi)。 ( 3)移動(dòng)窗口位置 這一部分的功能是為保證主視角以玩家控制的賽車(chē)為中心,但不超過(guò)世界范圍1000 1000。窗口在世界中有它的坐標(biāo),窗口坐標(biāo)在 360 520 范圍之內(nèi),不可超出此范圍,當(dāng)賽車(chē)超出窗口中心時(shí),窗口坐標(biāo)則移動(dòng)以確保賽車(chē)在中心處,中心范圍為 x坐標(biāo)在 200 到 240, y 坐標(biāo)在 160 到 320。 ( 4)繪制賽道 賽道的繪制一定要在顏色識(shí)別之前進(jìn)行,不然,顏色識(shí)別將無(wú)法進(jìn)行。本游戲的賽道種類(lèi)共有 10 種,外加一個(gè)草 地,形成游戲的地形,每個(gè)位圖大小為 200 200 大小。世界地形是存儲(chǔ)在一個(gè)二維字符數(shù)組里,此字符數(shù)組內(nèi)字符種類(lèi)為 0~9 和‘ g’,0~9 代表各個(gè)種類(lèi)的賽道,‘ g’代表草地,字符數(shù)組的存儲(chǔ)如下所示: char *world[5]= { 61117, 02g30, 0ggg0, 05g40, 91118, 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 11 }。 賽道在游戲世界里的排列如圖 23 所示。 圖 23 賽道顯示圖 由圖中可以看到有些位圖完全在窗口內(nèi),有些完全在窗口外,有些部分在窗口內(nèi),有兩種方法可以將位圖繪制在后備緩沖表面,下面是 兩種方法: 第一種方法:可以將所有位圖直接繪制在后備緩沖表面,賽道對(duì)象為 road,這是一個(gè) BOB 對(duì)象,其中存儲(chǔ)了 10 張賽道位圖,可遍歷字符數(shù)組,因?yàn)槊繌垐D在世界中的坐標(biāo)可以算出,都為 200 的倍數(shù),在由世界坐標(biāo)算出他在窗口的坐標(biāo),之后,調(diào)用Draw_BOB( amp。road,lpddsback),將位圖繪制進(jìn)后備緩沖表面,在這里,將重復(fù)調(diào)用 road和 grass 對(duì)象進(jìn)行繪制,因?yàn)?Draw_BOB 的繪制是采用 DirectDraw 中的 blt()函數(shù),它支持硬件加速,所以,即使繪制的位圖看不見(jiàn)或數(shù)量多一點(diǎn),也不會(huì)影響速度。 第二種方法:因?yàn)橹灰粓D在窗口內(nèi)就要進(jìn)行繪制,所以將窗口坐標(biāo)對(duì) 200 進(jìn)行整除就能得到對(duì)應(yīng)的數(shù)組位置,代碼如下: x_l=view_x/200。//左側(cè)位圖在數(shù)組的 x 位置 x_r=(view_x+639)/200。// 右側(cè)位圖在數(shù)組的 x 位置 y_t=view_y/200。// 上側(cè)位圖在數(shù)組的 y 位置 y_b=(view_y+479)/200。// 下側(cè)位圖在數(shù)組的 y 位置 然后依據(jù)上述值,將所選中的位圖 blt 到后備緩沖表面。 ( 5)實(shí)行 AI算法 AI 算法是對(duì)所有非玩家控制的賽車(chē)進(jìn)行的,首先,當(dāng) gameready 信號(hào)為 3 時(shí),打開(kāi)引擎,之后對(duì)賽車(chē)左右兩邊 30 度距離賽車(chē)中心 60 像素的區(qū)域進(jìn)行顏色識(shí)別,若為綠色,那么將方向變化改為相反方向,最后進(jìn)行邊界檢測(cè)。 ( 6)檢測(cè)摩擦力 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 12 路面摩擦力為 ,草地摩擦力為 ,并且,當(dāng)賽車(chē)在草地行駛時(shí),摩擦力會(huì)達(dá)到 ,所以在路面行駛的加速度會(huì)比草地的加速度大,而且,路面速度的最大值比草地的最大值要大,實(shí)際行駛時(shí),在路面行如風(fēng),而在草地則非常慢,這是為了不讓玩家從草地走。 ( 7)繪制各種物體以及賽車(chē) 這一部分十分簡(jiǎn)單,就是調(diào)用 Draw_BOB 將地圖上的各個(gè)物體繪制上去, 包括終點(diǎn)、賽車(chē)、紅綠燈,這些物體都要先計(jì)算在窗口的位置,之后繪制。 ( 8)判斷勝負(fù) 本游戲的勝負(fù)判斷一定要依次通過(guò)地圖上的 6個(gè)區(qū)域,這是為了讓玩家走完全程 ,因?yàn)榇速愜?chē)游戲的賽道是一個(gè)環(huán)狀賽道,所以,終點(diǎn)也是起點(diǎn),勝負(fù)判斷也是判斷誰(shuí)先走完一圈,其中,終點(diǎn)與起點(diǎn)的判別是一樣的,而其余四種則是判斷是否走過(guò)賽道的四個(gè)角落,這四種的判別十分容易,這里不做說(shuō)明,由于賽車(chē)可以繞過(guò)起點(diǎn)線(xiàn),在草地上行駛,所以要判斷賽車(chē)是向上穿過(guò)終點(diǎn)或起點(diǎn),判斷穿過(guò)只需判斷賽車(chē)中心進(jìn)入終點(diǎn),而要確保賽車(chē)向上穿過(guò)可以同時(shí)判斷賽車(chē)此時(shí)的方向是否向 上。當(dāng)賽車(chē)依次通過(guò)這 6 個(gè)區(qū)域,就將當(dāng)時(shí)賽車(chē)的排名記錄下來(lái),保存在此時(shí)的賽車(chē)對(duì)象里,當(dāng)有三輛賽車(chē)經(jīng)過(guò)終點(diǎn),則將 game_type 賦值 GAME_TYPE_WIN,進(jìn)入游戲勝利模塊。 多人游戲邏輯 多人游戲的實(shí)現(xiàn)是靠 Socket 網(wǎng)絡(luò)編程實(shí)現(xiàn)的,它分為服務(wù)器端和客戶(hù)端,這兩個(gè)的游戲邏輯不一樣。主要的游戲數(shù)據(jù)處理都在服務(wù)器端進(jìn)行,并且進(jìn)行發(fā)送數(shù)據(jù)和顯示等操作,而客戶(hù)端則接收數(shù)據(jù)并發(fā)送用戶(hù)所控制的賽車(chē)的引擎狀態(tài)和方向變化等信息。 多人游戲服務(wù)器端邏輯 多人游戲服務(wù)器端流程如圖 24所示。 圖 24 多人游戲服務(wù)器端流程 各個(gè)模塊的功能如下 : 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 13 創(chuàng)建線(xiàn)程 創(chuàng)建一個(gè)主線(xiàn)程,用來(lái)對(duì) Socket 的設(shè)置,創(chuàng)建其他線(xiàn)程用來(lái)接收或發(fā)送數(shù)據(jù)。 鏈接界面 這部分是顯示當(dāng)前鏈接上的玩家,在屏幕上顯示 player x in,并不斷地發(fā)送給相應(yīng)玩家對(duì)應(yīng)的賽車(chē)號(hào)碼,若檢測(cè)到有玩家鏈接,則將下一個(gè)賽車(chē)控制權(quán)轉(zhuǎn)交到新連接的玩家手中,直到服務(wù)器端玩家按下回車(chē)鍵,之后向所有玩家發(fā)出游戲開(kāi)始信號(hào),客戶(hù)端接收到信號(hào)后開(kāi)始游戲。 游戲進(jìn)行 此部分與單人游戲相似,詳情可以參照?qǐng)D 25,不同之處在兩處,下面是不同之處: ( 1)在檢測(cè)摩 擦力之后進(jìn)行的是發(fā)送數(shù)據(jù),將各個(gè)玩家控制的賽車(chē)數(shù)據(jù)發(fā)給相應(yīng)玩家,如賽車(chē)的車(chē)號(hào)、坐標(biāo)、引擎狀態(tài)、方向。 ( 2)在判斷勝負(fù)部分里,當(dāng)有賽車(chē)走完一圈時(shí),向所有玩家發(fā)送這輛賽車(chē)的車(chē)號(hào)以及名次,當(dāng)有三輛賽車(chē)到達(dá)終點(diǎn)時(shí),向所有玩家發(fā)送游戲結(jié)束信號(hào)。 圖 25 服務(wù)器端游戲運(yùn)行流程 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 14 多人游戲客戶(hù)端邏輯 客戶(hù)端的游戲流程與服務(wù)器端類(lèi)似,可參見(jiàn)圖 24,但具體實(shí)現(xiàn)上有很大差別,下面是客戶(hù)端各個(gè)模塊的功能: 創(chuàng)建線(xiàn)程 創(chuàng)建一個(gè)主線(xiàn)程,用來(lái)對(duì) Socket 的設(shè)置,用來(lái)接收或發(fā)送數(shù)據(jù)。 鏈接界面 這部分是顯示當(dāng) 前鏈接上的玩家的狀態(tài),如果連接上在屏幕上顯示 player x in,如果沒(méi)有鏈接上,就不顯示。 游戲進(jìn)行 這一部分只依次進(jìn)行判斷準(zhǔn)備、接收輸入信號(hào)、賽車(chē)數(shù)據(jù)處理、移動(dòng)窗口、發(fā)送數(shù)據(jù)和繪圖,其中移動(dòng)窗口是以當(dāng)前玩家所控制的賽車(chē)為主視角,賽車(chē)數(shù)據(jù)處理只進(jìn)行賽車(chē)聲音以及方向的處理,勝負(fù)判斷是依據(jù)服務(wù)器發(fā)送過(guò)來(lái)的信號(hào)進(jìn)行的。具體流程如圖 26 所示。 圖 26 客戶(hù)端游戲運(yùn)行流程 顯示游戲勝利 當(dāng)游戲判斷結(jié)束時(shí),游戲?qū)?zhí)行這部分,此部分執(zhí)行時(shí),游戲畫(huà)面 將不動(dòng),并在畫(huà)面上打出信息。第一行根據(jù)不同的名次打出不同的信息,如果是第一名將顯示 Y O U 判斷準(zhǔn)備 賽車(chē)數(shù)據(jù)處理 移動(dòng)窗口位置 繪制賽道 繪制各種物體以及賽車(chē) 判斷勝負(fù) 發(fā)送數(shù)據(jù) 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 15 W I N字樣,而第 3 名顯示具體的名次,如“ N U M 2”,如果是第四名則顯示“ Y O U f A I L”字樣。第二行打出“ PRESS ESCAPE”,按下 Escape 鍵,則進(jìn)入菜單選擇界面,并將游戲數(shù)據(jù)初始化。 本章小結(jié) 本章主要介紹了賽車(chē)游戲的游戲邏輯,其中包含好幾個(gè)部分,如單人游戲邏輯和多人游戲邏輯,游戲邏輯至關(guān)重要,因?yàn)樗鼘⒕唧w實(shí)現(xiàn)游戲各個(gè)方面的內(nèi)容,如具體的圖 片繪制以及繪制順序、勝負(fù)判別等等,游戲邏輯是運(yùn)用游戲引擎提供的一些方法并將其有序的組織起來(lái)來(lái)具體實(shí)現(xiàn)游戲的。 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 16 第四章 賽車(chē)碰撞檢測(cè)技術(shù) 碰撞檢測(cè)是賽車(chē)游戲設(shè)計(jì)中最關(guān)鍵的一項(xiàng)技術(shù),一個(gè)好的碰撞檢測(cè)往往會(huì)使游戲變得更真實(shí),而粗略的碰撞算法會(huì)出現(xiàn)許多 bug 使玩家無(wú)法玩下去。在此畢業(yè)設(shè)計(jì)所實(shí)現(xiàn)的賽車(chē)游戲中,涉及到的碰撞檢測(cè)共有兩種,第一種是邊界矩形盒方法,第二種是顏色識(shí)別算法,下面將分別介紹。 邊界矩形盒方法 邊界矩形盒方法是檢測(cè)兩個(gè)矩形是否重疊的方法,矩形可以代表任何東西,在這里代表賽車(chē),你必須給出他們的 左上角坐標(biāo)以及高度和寬度,如果有重疊,則返回 TRUE,否則返回 FALSE。下面是它的代碼: int Collision_Test(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2) { // this function tests if the two rects overlap // get the radi of each rect int width1 = (w11) (w13)。 int height1 = (h11) (h13)。 int width2 = (w21) (w23)。 int height2 = (h21) (h23)。 // pute center of each rect int cx1 = x1 + width1。 int cy1 = y1 + height1。 int cx2 = x2 + width2。 int cy2 = y2 + height2。 // pute deltas int dx = abs(cx2 cx1)。 int dy = abs(cy2 cy1)。// abs()是取絕對(duì)值 // test if rects overlap if (dx (width1+width2) amp。amp。 dy (height1+height2)) return(1)。 else // else no collision return(0)。 } // end Collision_Test 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 17 這個(gè)函數(shù)實(shí)現(xiàn)的基本思想是分別計(jì)算兩個(gè)矩形的中心坐標(biāo),然后根據(jù)中心坐標(biāo)的 x和 y 軸的距離判斷兩個(gè)矩形是否重疊。如果兩個(gè)矩形相交,如圖 31 所示。 圖 31 兩矩形相交 設(shè)這兩個(gè)矩形的各個(gè)數(shù)據(jù)和函數(shù)的參數(shù)一樣,頂點(diǎn)坐標(biāo)為( x1,y1)和 (x2,y2),矩形 1 的寬為 w1,高為 h1,矩形 2 的寬為 w2,高為 h2,那么兩矩形的中點(diǎn)坐標(biāo)為(x1+w1/2,y1+h1/2),(x2+w2/2,y2+h2/2),因?yàn)檫@兩個(gè)矩形相交,所以,他們的中點(diǎn)坐標(biāo)必有如下關(guān)系: |x1+w1/2(x2+w2/2)|(w1+w2)/2 并且 |y1+h1/2(y2+h2/2)|(h1+h2)/2。 這里必須注意,在這個(gè)矩形重疊判斷算法中,判斷方法并不是 本系統(tǒng) 所 使用 的方法 ,形式如下 。 int width1 = (w11) (w13)。 int height1 = (h11) (h13)。 int width2 = (w21) (w23)。 int height2 = (h21) (h23)。 其中, width1 為八分之三 w1,并不是本系統(tǒng) 所用的二分之一,這是因?yàn)榇撕瘮?shù)通常用于位圖的碰撞檢測(cè),而位圖是以長(zhǎng)方形載入的,且物體的圖像通常在長(zhǎng)方形的中央,但不會(huì)占滿(mǎn)整個(gè)長(zhǎng)方形,如圖 32 所示, X Y 矩 形1 矩形 2 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 18 圖 32 賽車(chē)位圖資源 賽車(chē)實(shí)體與 矩形是有區(qū)別的,雖然 本系統(tǒng)所列的判別方法可以準(zhǔn)確判斷矩形重疊,但當(dāng) 判斷重疊時(shí),屏幕上所顯示的物體并沒(méi)有發(fā)生碰撞,而上述函數(shù)所用的方法雖然不準(zhǔn)確(實(shí)際矩形重疊但檢測(cè)不出來(lái)),但在游戲運(yùn)行時(shí),實(shí)際看上去效果會(huì)好很多,也更加真實(shí),所以用八分之三比用二分之一要好。 還有一點(diǎn)“ (w11) (w13)”就是 w1*3/8,但為什么要這么麻煩呢?這主要是考慮到執(zhí)行速度,位移與加減法比做乘除法要快的多,游戲要考慮到速率,所以,盡量用快速的方法。 顏色識(shí)別算法 顏色識(shí)別算法在此游戲中被頻繁用到,這是一個(gè)非常好 用的算法,它沒(méi)有非常復(fù)雜的原理,只是讀出顏色值,然后進(jìn)行判別,它的速度也很快,對(duì)在窗口內(nèi)的碰撞檢測(cè)十分有效,下面是它的具體實(shí)現(xiàn): int Color_Scan(int x1, int y1, int x2, int y2, UCHAR scan_start, UCHAR scan_end, UCHAR *scan_buffer, int scan_lpitch) { // this function implements a crude collision technique // based on scanning for a range of colors within a rectangle if (x1 = screen_width) x1=screen_width1。 else if (x1 0) x1=0。 if (x2 = screen_width) x2=screen_width1。 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 19 else if (x2 0) x2=0。 // now ycoords if (y1 = screen_height) y1=screen_height1。 else if
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1