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

正文內(nèi)容

俄羅斯方塊“游戲設計”畢業(yè)設計-資料下載頁

2024-12-03 15:04本頁面

【導讀】俄羅斯方塊“游戲設計”

  

【正文】 ,而在程序中要制作這些物理動作的效果,就要應用一些物理公式與數(shù)學計算方法了。 勻速和變速運動 物體會移動,那是因為物體具有“速度”,“速度”就是物體在各個方向上“速度分量”的總和。如果一個 2D 平面上移動的物體,它的移動速度 V便是 X 軸上的移動速度 Vx 加上 Y軸方向移動 Vy 的速度 [6]。 勻速移動時物體在每一個時刻的速度都是相同的,亦即 Vx 和 Vy 都保持不變 。如有一個小球, 小球為黑色,四周為白色, 為了產(chǎn)生小球勻速運動的效果。小球四周的白色部分是為了重新貼圖能覆蓋掉上一 次 的小球,這樣便可不用再多做一次清除上次貼圖的動作。不過如果所設置的移動速度 超出了留白部分所能遮蓋的范圍,如 Vx或 Vy 大 于 設定值 ,則要多做一次清除上次貼圖的動作,或者加大小球四周留白的范圍,不然會在屏幕上出現(xiàn)殘留的小球。 物體移動的時候,如果運動的速度與方向隨著時間而改變,那么該物體的運動便屬于變速運動。加速度與速度的關(guān)系是: V= Vo+ at 其中 V為加入加速度后的速度; Vo 為原來的速度; a為加速度,即每一時刻速度的改變值; t是時間,通常亦程序中的時間間隔為單位。 若一個物體在 2D平面上運動,那么其前一時刻與下一時刻在 X、 Y軸上運動的速度分別為: Vx= Vxo+ ax和 Vy= Vyo+ ay 其中 Vxo與 Vyo為物體原來在 X、 Y軸 上的運動速度; ax與 ay則為在 X、 Y軸上的加速度 Sx與 Sy為 X、 Y軸上的坐標; Sxo、 Syo為 X、 Y軸上的初始坐標。這樣便可在推算出加速度后物體下一刻的位置: Sx= Sxo+ Vx 和 Sy= Syo+ Vy 只要物體的速度改變,都可以說該物體在做變速運動。產(chǎn)生加速度的原因是因為物體受到了外力的影響,而影響物體運動速度的外力可以說是千變?nèi)f化,如空氣阻力、摩擦力、重力等等。 動量、 重力與重力加速度 在計算機游戲中,玩家可能會運用不同的物體,例如汽車、飛機甚至于火車等等,這些物體都具有一定的質(zhì)量。重量是 一種力的表現(xiàn),不過質(zhì)量卻不能代表重量,因為質(zhì)量可以對加速度產(chǎn)生作用,在游戲中,有些時候為了追求其物體運動的電子游戲設計與實踐 第三章 動畫的制作 15 真實感,這些物體就必須擁有某種虛擬的質(zhì)量單位,簡單的說,物體在進行運動的時候,它就必須要有一定的動量。 動量就是讓運功的物體停下來的難易程度的度量,是正在運動的物體的一種能力屬性,而這種屬性會 與物體的質(zhì)量和 速度有關(guān)。 動量=質(zhì)量速度。 動量會因為物體的質(zhì)量與速度而變化,而質(zhì)量是因為物體所構(gòu)成的物質(zhì)來斷定的,它的值是固定的,與物體的密度及體積相關(guān)。在游戲中,可以定義物體具有任意的質(zhì)量單位,但如果想與現(xiàn)實生活中 的物體有一樣的動量反應,就可以為游戲中的物體定義出一系列的質(zhì)量單位。 又由動量守恒定律,物體在不受外力的作用或受外力和為零時,它的動量保持不變。 根據(jù)動量守恒定律,如果兩個物體相撞,在 理想狀況下,其動量守恒公式如: M1V1= M2V2 其中 M1 是物體 1 的質(zhì)量, M2 是物體 2的質(zhì)量, V1 與 V2 是分別為物體的相對速度 [6]。 在現(xiàn)實生活中,重力是一直存在的力,它是地球和周圍物體之間的一種相互吸引的力量。由于地球質(zhì)量非常大,所以便會感覺到是被地球吸引在它的表明上,不會飄到 半空中,這里稱為重力。在游戲的虛擬世界里,為了得 到與現(xiàn)實生活類似的真實感,就要為游戲里的所有物體加上重力的影響。一般而言,重力是一種垂直于地面的力,當物體要向上運動時,重力則會在物體的運動方向上再加上一個向下的力。 在無重力的情況下,球的運動路線的方程可以寫成: x= x+ Vx 和 y= y+Vy 其中 x、 y為地面單位; Vx、 Vy 為 X和 Y方向上的速度常量。而為了表現(xiàn)出游戲的真實度,在這里加入重力的影響,其公式可以將它寫成: x= x+ Vx和 y= y+ M 其中M 為重力常量。 這樣便可以在游戲中表現(xiàn)出與現(xiàn)實生活一樣的物體受到重力影響的物理現(xiàn)象了。 重力加速度就是物體因受到 重力的影響而產(chǎn)生的一種向下的加速度,這種會令物體加速往下掉的加速度是因為重力而產(chǎn)生的,所以在物理上稱這種加速度為“重力加速度”,它是一個常量。如同前面所說的一樣,物體在運動時,要為其加上一個重力加速度常量: x= x+ Vx 、 Vy= Vy+ Vm和 y= y+ Vy 其中 Vx 為 X方向速度常量; Vy 為 Y方向速度常量; Vm為 Vy 的加速度常量。 物體間的碰撞 碰撞檢測在游戲中應用得比較多 ,比如說人物走到了窗口的盡頭,或者碰撞到了其他的物體等等,這時都要進行碰撞檢測。而事實上,檢測碰撞的方法不只一種,有的碰撞檢測是通過范圍來檢測碰撞,有的碰撞檢測是通過顏色檢測碰撞,有的碰撞檢測是通過行進路線是否交叉來檢測碰撞。 通過范圍檢測碰撞 通過范圍檢測碰撞的方法適用于可取得其范圍大小的規(guī)則幾何圖形,通過范圍電子游戲設計與實踐 第三章 動畫的制作 16 檢測碰撞的方法是最簡單、最快速的方法,在制作游戲程序時,使用到非規(guī)則形狀圖形的情況非常多,但如果是在允許的范圍內(nèi),還是希望能夠用這種方法來檢測物體是否碰撞,因為這將會省掉 許多用于計算的時 間,如果兩輛不規(guī)則的汽車在同樣的高度上開動時,要檢測兩車是否碰撞,只需要判斷這兩張汽車的圖片是否已產(chǎn)生相交。 如果兩車在不同高度上開動,那么就必須利用圖片矩形的寬和高來檢測是否碰撞,但是這種檢測碰撞的方式會產(chǎn)生一些誤差。在兩車真正碰撞之前,已檢測到兩輛車的矩形方框 相交了,如果這樣的誤差在允許的范圍內(nèi),就沒有關(guān)系,因為采用這樣的方法運算速度比較快,而且程序代碼簡單。不過如果想要更精確地判斷非規(guī)則形狀的物體是否碰撞,最常用的方法還是利用顏色來判斷。 通過顏色檢測碰撞 通過顏色檢測碰撞的方式比較麻煩, 不過這種碰撞檢測方式卻可以很精確地判斷兩個非規(guī)則物體是否真的發(fā)生了碰撞 。要判斷一輛汽車是否進入森林, 就必須 把森林設置成與汽車不同的顏色 ,這樣就可以把森林當作是一張“暗圖”,以便利用顏色來判斷是否發(fā)生了碰撞。當汽車與樹林發(fā)生了碰撞時,車頭的部分 就會 被“暗圖”中黑色部分遮蓋。所以要判斷是否碰撞的要點就在于黑色部分與汽車是否會產(chǎn)生交集 。 因為黑色與任何顏色 做 AND運算后結(jié)果還是黑色,所以以汽車的顏色來跟目前所在位置上的“暗圖”做 AND運算之后,就會有黑色的結(jié)果產(chǎn)生,這樣即表示汽車進入 了森林。 如果 。 圖 判斷車子是否進入森林 方法 示意圖 通過行進路線檢測碰撞 通過行進路線來檢測是否發(fā)生碰撞的方法主要用來檢測兩個移動的物體 ,或者是移動物體與平面是否發(fā)生碰撞。 如圖 。 取出車子圖所有象素點的顏色 取出目前車子圖所在位置區(qū)域中所有暗圖像點的顏色 檢查運算結(jié)果是否產(chǎn)生黑色,若出現(xiàn)黑色則表示發(fā)生碰撞 車子移動到下一個位置 電子游戲設計與實踐 第三章 動畫的制作 17 圖 物體碰撞示意圖 在上圖中,不論是兩顆球的行進方向,還是平面都加上了一個箭頭,這樣做 是將其表示為向量。 可以通過向量來判斷一個具有速度值的小球是否與斜面發(fā)生碰撞 ,而且可以 計算出 碰撞后的速度。 限于篇幅,具體方法略。 兩球行進路線交叉則有可能產(chǎn)生碰撞 球行進路線與平面交叉則 有可能產(chǎn)生碰撞 電子游戲設計與實踐 第四章 消息管理和 人工智能 18 第四章 消息管理和人工智能 鍵盤消息 本次設計 主要使用 MFC的架構(gòu)來設計游戲程序。在 MFC的類中有許多默認的消息處理函數(shù),以由 CFrameWnd 類 所生成的應用程序窗口為例,執(zhí)行View|ClassWizard 命令,就可以在彈出的對話框中選擇要處理的窗口消息, Visual C++便會自動在程序中加入 相 對應的消息處理函數(shù)。 如圖 圖 添加消息處理函數(shù)示意圖 處理鍵盤輸入消息 鍵盤是計算機的標準設備之一,因此以鍵盤作為程序的主要輸入設備是最常用的。雖然目前大多數(shù)游戲程序會以鼠標或者是搖桿來作為主要的輸入設備,使用鍵盤操縱游戲的方式仍然重要 ,有時候還是會使用鍵盤來設計一些快捷鍵的功能,如:跳過片頭動畫、結(jié)束游戲等等。下面介紹 MFC中鍵盤輸入消息的處理方式。 三種常用的鍵盤輸入消息如表 。 表 三個常用鍵盤輸入消息 消息 說明 WM_KEYDOWN 按下鍵盤 按鍵所發(fā)出的消息 WM_KEYUP 松開按鍵所發(fā)出的消息 WM_CHAR 按下鍵盤按鍵所發(fā)出的消息,并轉(zhuǎn)換為對應的字符 在 MFC 中,其消息是以一組虛鍵 (Virtual Key)來判斷按下或者是松開鍵盤上的按鍵動作,而上表所列的三種消息中, WM_KEYDOWN 與 WM_KEYUP 并不會分雙擊鼠標左鍵 函數(shù)自動加入 電子游戲設計與實踐 第四章 消息管理和 人工智能 19 辨輸入按鍵字符的大小寫,而 WM_CHAR則會將使用者按下按鍵的虛鍵轉(zhuǎn)換 成字符,且具有分辨字母大小寫的功用。 這三種消息的消息處理函數(shù)的格式都比較類似,這里以 WM_KEYDOWN 消息的處理函數(shù) OnKeyDown為例來進行說 明: void canvasFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { //判斷并處理按鍵消息的程序代碼 CFrameWnd::OnKeyDown (nChar, nRepCnt, nFlags)。 } OnKeyDown 函數(shù)所傳入的第一個參數(shù) nCha 是按鍵的虛鍵,這些虛鍵都是以VK_開頭,幾個常用按鍵的虛鍵 如表 。 表 常用按鍵的虛鍵 虛鍵 十六進制 說明 VK_ESCAPE 0x1b Esc鍵 VK_LEFT 0x25 左鍵 VK_UP 0x26 上鍵 VK_RIGHT 0x27 右鍵 VK_DOWN 0x28 下鍵 VK_DELETE 0x2e Delete鍵 VK_INSERT 0x2d Insert鍵 VK_SHIFT 0x10 Shift鍵 VK_CONTROL 0x11 Ctrl鍵 VK_BACK 0x08 Backspace鍵 VK_TAB 0x09 Tab鍵 VK_SPACE 0x20 空格鍵 除了上表所列的虛鍵外, VK_A~ VK_Z代表鍵盤 上的 A~Z鍵, VK_ 0~VK_9代表著鍵盤上的 0~9鍵, VK_F1~ VK_F12代表著鍵盤上的 F1~F12鍵。 使用鍵盤控制人物移動 玩 RPG游戲時,一般都要使用鍵盤的上、下、左、右鍵來控制人物在背景上 走動。 現(xiàn)在要實現(xiàn)這樣的功能非常簡單 ,可以利用蒙版圖來制作鏤空效果,并使用內(nèi)存 DC來防止重繪屏幕時產(chǎn)生閃爍現(xiàn)象。 在 OnKeyDown函數(shù)中,可以設置 5個當使用者按下時會改變程序執(zhí)行狀態(tài)的按鍵,按下上 (VK_UP)、下 (VK_DOWN)、左 (VK_LEFT)、右 (VK_RIGHT)鍵可以控制人物 的移動, Esc(VK_ESCAPE)組會結(jié)束程序 [6]。其中人物上下左右的控制方式都相同 ,只是在窗口中貼上的圖案不同。 電子游戲設計與實踐 第四章 消息管理和 人工智能 20 鼠標消息 比起使用鍵盤作為游戲的輸入設備,使用鼠標顯得更加方便。 處理鼠標輸入消息 與鍵盤消息一樣,在 MFC中定義了許多鼠標的輸入消息,而每一種鼠標消息都有其相對應的處理函數(shù),這些鼠標消息如表 。 表 鼠標消息說明 消息 說明 WM_LBUTTONDBLCLK 雙擊按鼠標左鍵消息 WM_LBUTTONDOWN 按下鼠標左鍵消息 WM_LBUTTONUP 松開鼠標左鍵消息 WM_RBUTTONDBLCLK 雙擊按鼠標右鍵兩下消息 WM_RBUTTONDOWN 按下鼠標右鍵消息 WM_RBUTTONUP 松開鼠標右鍵消息 WM_MOUSEMOVE 鼠標移動消息 WM_MOUSEWHEEL 鼠標滾輪轉(zhuǎn)動消息 下面舉例對各消息的默認處理函數(shù)進行說明。 鼠標按鍵消息:不論是連續(xù)按鼠標鍵兩下、按下或者是松開,其鼠標消息處理函數(shù)的格式都是相同的, 現(xiàn)以 WM_LBUTTONDBLCLK 消息從處理函數(shù)OnButtonDblClk為例來說明,其函數(shù)原型如下:
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1