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

正文內(nèi)容

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

2024-12-03 15:04本頁(yè)面

【導(dǎo)讀】俄羅斯方塊“游戲設(shè)計(jì)”

  

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