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

正文內(nèi)容

二d賽車游戲的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)-文庫(kù)吧在線文庫(kù)

  

【正文】 地址; sin_zero 是一個(gè)填充數(shù)。當(dāng)然,網(wǎng)絡(luò)經(jīng)常連接不同的計(jì)算機(jī),所以,這里所使用的端口號(hào)和地址在傳遞給 WinSock 之前必須用函數(shù)轉(zhuǎn)換為公共的網(wǎng)絡(luò)字節(jié)順序,所用的函數(shù)就是 htons()和 htonl(),他們分別用于短整型和長(zhǎng)整型從主機(jī)字節(jié)順序轉(zhuǎn)換成公共網(wǎng)絡(luò)字節(jié)順序。其中,第一個(gè)參數(shù) s是進(jìn)行監(jiān)聽(tīng)的 socket;第二個(gè)參數(shù) backlog 指應(yīng)用程序能夠接收多少個(gè)連接請(qǐng)求。 如果客戶端的連接請(qǐng)求被接受成功, accept()函數(shù)將返回一個(gè)新的 socket,這個(gè)新的 socket 將會(huì)用來(lái)處理客戶端與服務(wù)器端之間的連接和數(shù)據(jù)交換任務(wù)。 另外,必須要注意的是,調(diào)用 send()函數(shù)發(fā)送數(shù)據(jù)時(shí),要發(fā)送的數(shù)據(jù)長(zhǎng)度不應(yīng)當(dāng)超過(guò)底層網(wǎng)絡(luò)所支持的最大數(shù)據(jù)包的長(zhǎng)度。然后服務(wù)器端用 bind()綁定地址。最后兩個(gè)參數(shù)分別指定了接收數(shù)據(jù)報(bào)的 socket 的地址和它的地址大小。 如果向 recvfrom()傳遞的緩沖區(qū)的大小小于整個(gè)數(shù)據(jù)報(bào)的大 小,那么緩沖區(qū)只能接收能容納它自己大小的那部分?jǐn)?shù)據(jù)信息,剩余部分信息將會(huì)被遺棄。如果兩臺(tái)計(jì)算機(jī)一臺(tái)有合法 IP,一臺(tái)是內(nèi)網(wǎng) IP,則用內(nèi)網(wǎng) IP 計(jì)算機(jī)去主動(dòng)連接另一臺(tái)機(jī)器也可以。所以,在實(shí)際的應(yīng)用中, TCP 通常用來(lái)傳送那些比較關(guān)鍵的數(shù)據(jù),而高效率的 udp 一般是用來(lái)傳輸普通數(shù)據(jù)的。 ( 2) recvfrom() recvfrom()函數(shù)的形式如下: int recvfrom ( SOCKET s,char FAR* buf,int len,int flags,struct sockaddr FAR* from,int FAR* fromlen )。最后,要調(diào)用 closesocket()關(guān)閉套接字。 若 recv()函數(shù)調(diào)用成功,將返回讀入數(shù)據(jù)的字節(jié)數(shù),這 個(gè)字節(jié)數(shù)就是輸入隊(duì)列中的字節(jié)數(shù),它的大小與 send()函數(shù)的 len 中指定的一樣。所以, accept 可以產(chǎn)生多個(gè)不同的 socket,而這些 socket 里包含的宿 IP和宿端口是不變的,變化的僅僅是源 IP和源端口。 面向連接的客戶端程序可以在任何協(xié)議端口接收數(shù)據(jù)和發(fā)送數(shù)據(jù),所以在一般情況下,面向連接的客戶端不需要指明本地協(xié)議端口。如圖 41 所示是流式套接字的使用流程。這樣,套接字就可以計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書 26 向任何分配給本地計(jì)算機(jī)的 IP 地址發(fā)送或接受數(shù)據(jù)。 memset(amp。 ?協(xié)議:指出程序在網(wǎng)絡(luò)上傳輸數(shù)據(jù)時(shí)使用的協(xié)議。在面向連接的網(wǎng)絡(luò)通信中,數(shù)據(jù)的傳輸是以一個(gè)字節(jié)流串形式流動(dòng)。 由上述函數(shù)可以看出,調(diào)用此函數(shù)時(shí),必須傳入 3個(gè)參數(shù):協(xié)議族(如上 AF_INET)、socket 類型(如上 SOCK_STREAM)和協(xié)議(如上 IPPROTO_TCP)。 本章小結(jié) 本章介紹了本賽車游戲中所涉及到的碰撞檢測(cè)的相關(guān)技術(shù),主要有邊界 矩形盒算法和顏色識(shí)別算法兩種,這兩種算法是比較簡(jiǎn)單易懂并且應(yīng)用廣的碰撞檢測(cè)技術(shù)。 圖 34 16/24/32 位 RGB 像素編碼 因?yàn)楦鱾€(gè)模式下的 RGB 像素編碼的模式不同,所以,建立他們時(shí),也要用不同的算法,基本上可以通過(guò)簡(jiǎn)單的移位和掩碼操作來(lái)完成此算法,算法表示為如下的宏: // this builds a 16 bit color value in format (1bit alpha mode) define _RGB16BIT555(r,g,b) ((b amp。”,這里不將 x1 置為 screen_width 是有理由的,分辨率為 640 480,表示 水平方向含有像素?cái)?shù)為 640 個(gè),垂直方向像素?cái)?shù) 480個(gè) ,而在程序里,后備緩沖表面 back_buffer 的存儲(chǔ)是從 0 開(kāi)始的,所以,當(dāng) x1 為screen_width 時(shí),實(shí)際上已不在表面的工作區(qū)了,要它的最大邊界是 screen_width1,其他坐標(biāo)點(diǎn)類似。 int scan_lpitch,這個(gè)參數(shù)通常傳入的是 lPitch(或 back_lpitch,這兩個(gè)的只是一樣的),即你所在顯示模式的水平內(nèi)存間距。 } // end for x // move down a line scan_buffer+=scan_lpitch。 // scan the region scan_buffer +=y1*scan_lpitch。 顏色識(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。 圖 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。 // pute deltas int dx = abs(cx2 cx1)。下面是它的代碼: 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)。具體流程如圖 26 所示。 多人游戲服務(wù)器端邏輯 多人游戲服務(wù)器端流程如圖 24所示。// 下側(cè)位圖在數(shù)組的 y 位置 然后依據(jù)上述值,將所選中的位圖 blt 到后備緩沖表面。世界地形是存儲(chǔ)在一個(gè)二維字符數(shù)組里,此字符數(shù)組內(nèi)字符種類為 0~9 和‘ g’,0~9 代表各個(gè)種類的賽道,‘ g’代表草地,字符數(shù)組的存儲(chǔ)如下所示: char *world[5]= { 61117, 02g30, 0ggg0, 05g40, 91118, 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書 11 }。賽車是BOB 對(duì)象,本部分分別對(duì)各個(gè)對(duì)象進(jìn)行數(shù)據(jù)處理。 如果 game_state 為 GAME_STATE_INIT 為游戲初始狀態(tài),停止準(zhǔn)備音樂(lè),將game_state 置 GAME_STATE_MENU,并重置游戲數(shù)據(jù),進(jìn)入菜單選擇界面,讀取鍵盤鍵值,上、下移動(dòng)箭頭, Enter 為確認(rèn)選擇,若為單人游戲或多人游戲則將當(dāng)前狀態(tài)置為GAME_STATE_RUNNING,將游戲 種類置為當(dāng)前值,退出選項(xiàng)與 Escape 鍵為退出,當(dāng)為可計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書 9 識(shí)別鍵時(shí),播放按鍵音,然后將菜單選擇界面與箭頭繪制在后備緩沖表面,換頁(yè),并等待 100 毫秒,等待時(shí)間不宜太短,否則會(huì)出現(xiàn)連擊的現(xiàn)象。所列出的游戲引擎中的功能模塊是本畢業(yè)設(shè)計(jì)主要用到的,是實(shí)際編寫過(guò)程中必須要調(diào)用的部分。 游戲結(jié)構(gòu) 所有的 游戲本質(zhì)上是一個(gè)持續(xù)不斷的 while循環(huán),它執(zhí)行邏輯并在屏幕上不間斷的繪制更新圖像 , 通常以 30~60幀每秒速度不斷的繪制 ,本設(shè)計(jì)所實(shí)現(xiàn)的賽車游戲也是如此,但圖像是以 30幀每秒的速度繪制 。 ( 2)設(shè)置并獲取鍵盤、鼠標(biāo)、游戲桿。 DDraw_Attach_Clipper()給發(fā)送的表面關(guān)聯(lián)一個(gè)裁剪器等等。 游戲引擎 游戲引擎是游戲中與游戲具體實(shí)現(xiàn)無(wú)關(guān)的核心技術(shù)部分,可以說(shuō)是游戲的心臟,而游戲的部分就是場(chǎng)景模型、角色模型、動(dòng)畫、聲音等其他控制部分。 DirectPlay:可以通過(guò)因特網(wǎng)、調(diào)制解調(diào)器或直接連接來(lái)建立抽象的連接。這意味著只要是 DirectX 支持的硬件,都可以用程序訪問(wèn)到,而不用關(guān)心它的具體實(shí)現(xiàn)。主要步驟為: ( 1)設(shè)計(jì)并畫游戲的場(chǎng)景; ( 2)設(shè)計(jì)界面; ( 3)游戲邏輯的設(shè)計(jì)與實(shí)現(xiàn); ( 4)游戲功能模塊設(shè)計(jì)與實(shí)現(xiàn); ( 5)游戲測(cè)試; 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書 3 第二章 DirectX、游戲引擎和游戲結(jié) 構(gòu) DirectX 是 PC平臺(tái)上開(kāi)發(fā)游戲的事實(shí)上的標(biāo)準(zhǔn),而游戲引擎能使開(kāi)發(fā)游戲的工作量大大的減少,本畢業(yè)設(shè)計(jì)所使用的游戲引擎是在 上編寫的。它可以提高在 window平臺(tái)運(yùn)行的游戲或者 多媒體程序的運(yùn)行速度,有很強(qiáng)的 3D圖像處理能力,并且支持 2D/ 3D圖形加速。和歐美、日韓游戲產(chǎn)業(yè)發(fā)展比較成熟的國(guó)家相比,中國(guó)的 3D技術(shù)并不成熟,很多游戲公司的精力主要放在技術(shù)方面 的處理,想盡量模仿國(guó)外優(yōu)秀游戲的處理技術(shù),而且 3D游戲的投資比較大,只有一小部分大型公司有實(shí)力進(jìn)行開(kāi)發(fā)。能進(jìn)行賽車、賽道以及各種圖片的繪制,實(shí)現(xiàn)各種游戲音效,獲取鍵盤輸入,單人游戲時(shí),可與電腦控制的賽車競(jìng)速,多人游戲時(shí)可與其他玩家或電腦 AI 競(jìng)速。 與其他類似游戲相比,本 設(shè)計(jì)所采用的碰撞檢測(cè)算法,像邊界矩形盒算法和顏色識(shí)別算法,不僅速度快,而且檢測(cè)靈敏。與此相對(duì)的是,因?yàn)?2D游戲的技術(shù)處理難度比較低,游戲公司不僅可以將精力放在技術(shù)處理方面,還可以多花些精力在游戲策劃方面,以豐富游戲的內(nèi)容,它的整體開(kāi)發(fā)周期短,投入的資金少得多,這些優(yōu)點(diǎn)使得 2D 游戲非常適合在中國(guó)發(fā)展。使得開(kāi)發(fā)人員在創(chuàng)建 3D場(chǎng)景時(shí)不需要考慮硬件的類型,只需要通過(guò) Direct3D調(diào)用設(shè)備接口就可以操作圖形設(shè)備,簡(jiǎn)化了游戲開(kāi)發(fā)難度。下面是、游戲引擎的一些介紹。下面是它的主要組件和功能: DirectDraw: 主要負(fù)責(zé) 2D 圖像加速 ,所有圖像的繪制都要用到它,因此它是十分重要的。 DirectMusic:支持 MIDI。經(jīng)過(guò)幾十年不計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書 4 斷的發(fā)展,現(xiàn)在的游戲引擎已經(jīng)發(fā)展成一個(gè)由多個(gè)子系統(tǒng)共同構(gòu)成的復(fù)雜系統(tǒng)。 ( 2) 2D 多邊形函數(shù) 包含點(diǎn)、線、多邊形的繪制以及繪制 GDI 文字等。 ( 3)從輸入設(shè)備中讀取數(shù)據(jù)。播放加載的聲音文件。刪除聲音數(shù)據(jù)。停止正在播放的 MIDI 文件。 本設(shè)計(jì)所實(shí)現(xiàn)的賽車游戲流程如圖 21,下面是游戲的每個(gè)子流程的說(shuō)明。本設(shè)計(jì)的游WinMian() { CreateWindow()。 當(dāng) game_state 為 GAME_STATE_RUNNING 時(shí)為游戲進(jìn)行時(shí),之后判斷 game_type 的值, GAME_TYPE_SINGLEPLAYER 為單人模式, GAME_TYPE_MULTIPLAYER 為多人游戲,GAME_TYPE_WIN 為勝利狀態(tài),換頁(yè),并等待 30ms。 首先對(duì)按鍵所產(chǎn)生的信號(hào)和 AI 所產(chǎn)生的信號(hào)進(jìn)行處理,無(wú)論信號(hào)是來(lái)自接受來(lái)自輸入或 AI 算法,他們對(duì)賽車對(duì)象所產(chǎn)生的變化是同一種類型,所以處理時(shí),只要根據(jù)賽車對(duì)象的內(nèi) 部數(shù)據(jù)執(zhí)行相應(yīng)的改變,如果引擎打開(kāi),則提高當(dāng)前速度(不超過(guò)最大速度),并提高引擎發(fā)聲頻率,若引擎關(guān)閉,則減小引擎發(fā)聲頻率,方向向哪個(gè)方向變,則將相應(yīng)的加或減相應(yīng)的方向數(shù)值。 賽道在游戲世界里的排列如圖 23 所示。 ( 5)實(shí)行 AI算法 AI 算法是對(duì)所有非玩家控制的賽車進(jìn)行的,首先,當(dāng) gameready 信號(hào)為 3 時(shí),打開(kāi)引擎,之后對(duì)賽車左右兩邊 30 度距離賽車中心 60 像素的區(qū)域進(jìn)行顏色識(shí)別,若為綠色,那么將方向變化改為相反方向,最后進(jìn)行邊界檢測(cè)。 圖 24 多人游戲服務(wù)器端流程 各個(gè)模塊的功能如下 : 計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書 13 創(chuàng)建線程 創(chuàng)建一個(gè)主線程,用來(lái)對(duì) Socket 的設(shè)置,創(chuàng)建其他線程用來(lái)接收或發(fā)送數(shù)據(jù)。 圖 26 客戶端游戲運(yùn)行流程 顯示游戲勝利 當(dāng)游戲判斷結(jié)束時(shí),游戲?qū)?zhí)行這部分,此部分執(zhí)行時(shí),游戲畫面 將不動(dòng),并在畫面上打出信息。 int height1 = (h11) (h13)。 int dy = abs(cy2 cy1)。 這里必須注意,在這個(gè)矩形重疊判斷算法中,判斷方法并不是 本系統(tǒng) 所 使用 的方法 ,形式如下 。 else if (x1 0) x1=0。 for (int scan_y=y1。 } // end for y //a=scan_buffer[x2]。如圖 33 所示, lPitch 是該顯示模式中每行上的字?jǐn)?shù) ,也被稱為步幅( stride)或內(nèi)存
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1