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

正文內(nèi)容

俄羅斯方塊“游戲設(shè)計”畢業(yè)設(shè)計(參考版)

2024-12-07 15:04本頁面
  

【正文】 鼠標按鍵消息:不論是連續(xù)按鼠標鍵兩下、按下或者是松開,其鼠標消息處理函數(shù)的格式都是相同的, 現(xiàn)以 WM_LBUTTONDBLCLK 消息從處理函數(shù)OnButtonDblClk為例來說明,其函數(shù)原型如下: v。 處理鼠標輸入消息 與鍵盤消息一樣,在 MFC中定義了許多鼠標的輸入消息,而每一種鼠標消息都有其相對應(yīng)的處理函數(shù),這些鼠標消息如表 。其中人物上下左右的控制方式都相同 ,只是在窗口中貼上的圖案不同。 現(xiàn)在要實現(xiàn)這樣的功能非常簡單 ,可以利用蒙版圖來制作鏤空效果,并使用內(nèi)存 DC來防止重繪屏幕時產(chǎn)生閃爍現(xiàn)象。 表 常用按鍵的虛鍵 虛鍵 十六進制 說明 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鍵。 這三種消息的消息處理函數(shù)的格式都比較類似,這里以 WM_KEYDOWN 消息的處理函數(shù) OnKeyDown為例來進行說 明: void canvasFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { //判斷并處理按鍵消息的程序代碼 CFrameWnd::OnKeyDown (nChar, nRepCnt, nFlags)。 三種常用的鍵盤輸入消息如表 。雖然目前大多數(shù)游戲程序會以鼠標或者是搖桿來作為主要的輸入設(shè)備,使用鍵盤操縱游戲的方式仍然重要 ,有時候還是會使用鍵盤來設(shè)計一些快捷鍵的功能,如:跳過片頭動畫、結(jié)束游戲等等。在 MFC的類中有許多默認的消息處理函數(shù),以由 CFrameWnd 類 所生成的應(yīng)用程序窗口為例,執(zhí)行View|ClassWizard 命令,就可以在彈出的對話框中選擇要處理的窗口消息, Visual C++便會自動在程序中加入 相 對應(yīng)的消息處理函數(shù)。 限于篇幅,具體方法略。 取出車子圖所有象素點的顏色 取出目前車子圖所在位置區(qū)域中所有暗圖像點的顏色 檢查運算結(jié)果是否產(chǎn)生黑色,若出現(xiàn)黑色則表示發(fā)生碰撞 車子移動到下一個位置 電子游戲設(shè)計與實踐 第三章 動畫的制作 17 圖 物體碰撞示意圖 在上圖中,不論是兩顆球的行進方向,還是平面都加上了一個箭頭,這樣做 是將其表示為向量。 圖 判斷車子是否進入森林 方法 示意圖 通過行進路線檢測碰撞 通過行進路線來檢測是否發(fā)生碰撞的方法主要用來檢測兩個移動的物體 ,或者是移動物體與平面是否發(fā)生碰撞。 因為黑色與任何顏色 做 AND運算后結(jié)果還是黑色,所以以汽車的顏色來跟目前所在位置上的“暗圖”做 AND運算之后,就會有黑色的結(jié)果產(chǎn)生,這樣即表示汽車進入 了森林。當汽車與樹林發(fā)生了碰撞時,車頭的部分 就會 被“暗圖”中黑色部分遮蓋。 通過顏色檢測碰撞 通過顏色檢測碰撞的方式比較麻煩, 不過這種碰撞檢測方式卻可以很精確地判斷兩個非規(guī)則物體是否真的發(fā)生了碰撞 。在兩車真正碰撞之前,已檢測到兩輛車的矩形方框 相交了,如果這樣的誤差在允許的范圍內(nèi),就沒有關(guān)系,因為采用這樣的方法運算速度比較快,而且程序代碼簡單。 通過范圍檢測碰撞 通過范圍檢測碰撞的方法適用于可取得其范圍大小的規(guī)則幾何圖形,通過范圍電子游戲設(shè)計與實踐 第三章 動畫的制作 16 檢測碰撞的方法是最簡單、最快速的方法,在制作游戲程序時,使用到非規(guī)則形狀圖形的情況非常多,但如果是在允許的范圍內(nèi),還是希望能夠用這種方法來檢測物體是否碰撞,因為這將會省掉 許多用于計算的時 間,如果兩輛不規(guī)則的汽車在同樣的高度上開動時,要檢測兩車是否碰撞,只需要判斷這兩張汽車的圖片是否已產(chǎn)生相交。 物體間的碰撞 碰撞檢測在游戲中應(yīng)用得比較多 ,比如說人物走到了窗口的盡頭,或者碰撞到了其他的物體等等,這時都要進行碰撞檢測。 重力加速度就是物體因受到 重力的影響而產(chǎn)生的一種向下的加速度,這種會令物體加速往下掉的加速度是因為重力而產(chǎn)生的,所以在物理上稱這種加速度為“重力加速度”,它是一個常量。而為了表現(xiàn)出游戲的真實度,在這里加入重力的影響,其公式可以將它寫成: x= x+ Vx和 y= y+ M 其中M 為重力常量。一般而言,重力是一種垂直于地面的力,當物體要向上運動時,重力則會在物體的運動方向上再加上一個向下的力。由于地球質(zhì)量非常大,所以便會感覺到是被地球吸引在它的表明上,不會飄到 半空中,這里稱為重力。 根據(jù)動量守恒定律,如果兩個物體相撞,在 理想狀況下,其動量守恒公式如: M1V1= M2V2 其中 M1 是物體 1 的質(zhì)量, M2 是物體 2的質(zhì)量, V1 與 V2 是分別為物體的相對速度 [6]。在游戲中,可以定義物體具有任意的質(zhì)量單位,但如果想與現(xiàn)實生活中 的物體有一樣的動量反應(yīng),就可以為游戲中的物體定義出一系列的質(zhì)量單位。 動量=質(zhì)量速度。重量是 一種力的表現(xiàn),不過質(zhì)量卻不能代表重量,因為質(zhì)量可以對加速度產(chǎn)生作用,在游戲中,有些時候為了追求其物體運動的電子游戲設(shè)計與實踐 第三章 動畫的制作 15 真實感,這些物體就必須擁有某種虛擬的質(zhì)量單位,簡單的說,物體在進行運動的時候,它就必須要有一定的動量。產(chǎn)生加速度的原因是因為物體受到了外力的影響,而影響物體運動速度的外力可以說是千變?nèi)f化,如空氣阻力、摩擦力、重力等等。 若一個物體在 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軸上的初始坐標。 物體移動的時候,如果運動的速度與方向隨著時間而改變,那么該物體的運動便屬于變速運動。小球四周的白色部分是為了重新貼圖能覆蓋掉上一 次 的小球,這樣便可不用再多做一次清除上次貼圖的動作。 勻速移動時物體在每一個時刻的速度都是相同的,亦即 Vx 和 Vy 都保持不變 。 勻速和變速運動 物體會移動,那是因為物體具有“速度”,“速度”就是物體在各個方向上“速度分量”的總和。 只要蒙版 背景 人物 暫存 DC1 暫存 DC2 操作窗口 電子游戲設(shè)計與實踐 第三章 動畫的制作 14 一開始設(shè)定了人物出現(xiàn)的位置與透明度,并且運用定時器每隔一段時間,就重新計算人物出現(xiàn)的位置與透明度,并重復(fù)執(zhí)行前面的步驟,就會產(chǎn)生人物移動與漸漸小時的效果了。 4. 再次取出如步驟 1中背景圖的所有 RGB色彩值,并與步驟 3的數(shù)組做半透明 的計算機,最后產(chǎn)生半透明圖片的 RGB色彩值數(shù)組,依此數(shù)組設(shè)定位圖的 色彩。 2. 將人物與內(nèi)存 DC 中的背景圖做鏤空處理。 構(gòu)想一個程序,一開始在窗口右邊出現(xiàn)一個人物,接著人物往左邊移動,每次移動的時候就會漸漸變得透明,最后消失不見。假設(shè)要制作透明度為 30%的半透明圖,則大致的計算公式如下:半透明圖色彩=來源圖色彩 30%+背景圖色彩 70% 。 取出背景圖與位圖重疊部分的象素點,將各象素點的 RGB值乘以透明度百分比,然后再將其放入另一個內(nèi)存數(shù)組中。 要制作半透明效果,必須 先決定圖形所要顯示的透明度,例如透明度 100%就是完全透明,透明度 50%就是半透明。 電子游戲設(shè)計與實踐 第三章 動畫的制作 13 圖 用 DC 實現(xiàn)貼圖 照著圖中的步驟依次處理背景、蒙版與人物圖案,而所有貼圖與 Raster 運算的動作都是在內(nèi)存 DC 中執(zhí)行,直到最后才將結(jié)果 貼到 操作窗口中,這樣便可以解決鏤空動畫閃爍的問題 半透明動畫技巧 半透明效果在游戲中使用也相當頻繁,如透明的人物或者是一些畫面特效等。 上面所示的動畫會出現(xiàn)動畫閃爍的問題,這是因為直接在窗口中連續(xù)貼圖的緣故。 首先選擇背景圖,再 貼上背景圖,然后選擇人物圖案,根據(jù)奇數(shù)偶數(shù)判斷要貼上哪張圖;將蒙版圖與背景圖做 AND 運算,再將蒙版圖與背景圖做OR 運算 ,如果時間達到某個設(shè)定值,就停止計時器。接著再利用鏤空的技巧,并配合連續(xù)顯示圖片的方式,就可以產(chǎn)生鏤空動畫的效果了 。 簡單來講,鏤空動畫就類似于一個人在背景圖案上走動的樣子。要產(chǎn)生鏤空圖,只須使用 BitBlt 函數(shù)與 Raster 運算 。 特殊動畫效果 學會了定時器的使用,以及了解了在程序中利用連續(xù)顯示圖像來產(chǎn)出動畫的概念之后,將學習鏤空、半透明等技巧在動畫中的應(yīng)用。 回調(diào)函數(shù)通常運用在由多個定時器的情況下,分別用來設(shè)置各個定時器發(fā)出WM_TIMER消息時所要執(zhí)行的程序。顯示多個動畫有兩種方式: 在 OnTimer()函數(shù)中,根據(jù)發(fā)送WM_TIMER 消息的定時器編號決定要顯示哪個動畫。 還可以試著調(diào)整定時器的時間間隔,這樣電子游戲設(shè)計與實踐 第三章 動畫的制作 12 便可以控制范例中動畫的顯示速度了。 在程序中, 可以 利用 Visual C++的 Class Wizard 功能來加入OnPaint()、 OnCreate()以及 OnTimer()。其參數(shù)就是要停止的定時器編號。如果不使用回調(diào)函數(shù),這個參數(shù)就可以設(shè)為 NULL,并在窗口的 OnTimer()函數(shù)中定義所要執(zhí)行的程序代碼。也就是說,若將此參數(shù)設(shè)為 1000,則每隔 1 秒就會發(fā)出一個 WM_TIMER 消息。 程序說明:第二個參數(shù)是計數(shù)器的編號,這個編號是唯一的,在同一個窗口中可以設(shè)定多個編號不同的定時器。 建立定時器: CWnd::SetTimer()函數(shù)可以用來為窗口建立一個定時器組件,并且每隔一段時間就會自動發(fā)出一個 WM_TIMER消息。連續(xù)貼圖方式的成像技術(shù)可用來制作動畫的效果。 電子游戲設(shè)計與實踐 第三章 動畫的制作 11 第三章 動畫的制作 控制動畫顯示時間 一般而言,游戲中所顯示的動畫按其呈現(xiàn)的方式可分為兩種: 直接播放方式和連續(xù)貼圖方式。還有也要盡量避免使用太過于簡單的字眼,例如“唉! … ”“早!” 等太過于平凡的對話,因為 在玩家看來 , 顯得 過于草率,而且要盡量采用與目前游戲中情景有關(guān)的話題,以提升游戲的娛樂性與真實性。 在這里,要注意不要使對話對于單調(diào)和重復(fù)。在這類游戲中,對話的設(shè)計帶有情緒性和選擇性,玩家可以做出他想選擇的對話內(nèi)容。一般而言, 角色扮演游戲都會以特定的對話方式來表現(xiàn)游戲中的故事劇情發(fā)展,通常這種 游戲的故事劇情是以單線的方式來進行的, 其故事的交互性較低。 7. 游戲中的對話 游戲中故事劇情的主要表現(xiàn)方式就是對話,可以將游戲中的對話種類分成下列三種: (1)無劇情的游戲,如《德軍總部》游戲。 在游戲中,獎勵也可以包括 隱藏的因子在內(nèi),例如隱藏關(guān)卡、隱藏人物,甚至于隱藏的過關(guān)密碼等等。 如上所述,當注腳解決了世外高人的難題之后,世外高人對于主角的態(tài)度則一百八十度的大轉(zhuǎn)變,主角也因此而得到了室外高人高強的魔法,甚至還可從世外高人的口中得知進行游戲下一個任務(wù)的提示,這也就是游戲的交互性。主角為了幫助這個世外高人尋找到他所愛的人,與怪物進行了一場廝殺,最后雖然找到了世外高人所愛的人,但主角也因此受了重 傷。 ,舉個例子來說,當主角在一個洞穴中遇到一個世外高人,在游戲早期時,這個世外高人對主角的態(tài)度是不屑一顧,所以每次主角與他對話的時候,他總是愛理不理。通常出現(xiàn)這種情況的原因 是游戲設(shè)計者沒有做到游戲的全面性,而且沒有將游戲中所有可能的流程全部計算處理,這時如果玩家沒有按 照游戲設(shè)計者
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1