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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于stc12c5a60s2單片機(jī)的俄羅斯方塊游戲設(shè)計(jì)-閱讀頁(yè)

2024-12-23 19:16本頁(yè)面
  

【正文】 況,無(wú)論那種情況都要首先進(jìn)行合 法 性判斷。而一個(gè)小正方形的寬度,則對(duì)應(yīng)著 LCD12864 中的 4列。 (3) 平移算法的實(shí)現(xiàn) 在程序中,當(dāng)有任意一個(gè)平移按鍵被按下時(shí),系統(tǒng)接收到信號(hào),然后調(diào)用平移函數(shù)進(jìn)行判斷其合法性,得到該函數(shù)的返回值為 1 后,再進(jìn)行平移操作。 srand(unsigned int seed)產(chǎn)生一數(shù)據(jù)序列 開(kāi)始游戲 讀取 T0計(jì)數(shù)值作為 seed rand() 將返回值進(jìn)行處理后選擇相應(yīng)的方塊數(shù)組 賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 23 圖 311 平移算法流程圖 Fig 311 Translation algorithms flowchart 俄羅斯方塊 旋轉(zhuǎn) 的 實(shí)現(xiàn) 方法 (1) 俄羅斯方塊旋轉(zhuǎn)圖形概況 方塊旋轉(zhuǎn)是一個(gè)游戲?qū)崿F(xiàn)的關(guān)鍵問(wèn)題,實(shí)現(xiàn)旋轉(zhuǎn)的數(shù)學(xué)方法有多種,如矩陣變換法、枚舉法、索引法等。 游戲過(guò)程中,每一 種 基本方塊都要做旋轉(zhuǎn)控制,于是就產(chǎn)生了旋轉(zhuǎn)后的方塊形狀,本文將其稱為“旋轉(zhuǎn)型”。因此,基本型加上一種旋轉(zhuǎn)型,共有兩種形狀。 基本型中“ Z型”和“反 Z型”可以順時(shí)針旋轉(zhuǎn)一次 90 度,加上他們的基型分別有兩種形狀。 基本型中的“口型”方塊沒(méi)有旋轉(zhuǎn)型,在游戲中只有一種形狀。 本設(shè)計(jì) 實(shí)現(xiàn)旋轉(zhuǎn) 操作 的具體 方法 ,可分為兩類,一類是 I 型的旋轉(zhuǎn)策略; 另一類則是其余 17 種基本型的旋轉(zhuǎn)策略。本設(shè)計(jì)規(guī)定只要旋轉(zhuǎn)后到達(dá)的地方未被填允,方塊就可以進(jìn)行旋轉(zhuǎn)操作。其具體過(guò)程如圖 312 所示。 當(dāng)落下的圖塊是圖 ② 所示時(shí),其旋轉(zhuǎn)周期為 ② —— ③ —— ④ —— ① —— ② 。如果 在當(dāng)前位置直接按這 兩種圖塊 的坐標(biāo)數(shù)組進(jìn)行圖形切換 ,則無(wú)法實(shí)現(xiàn)順時(shí)針旋轉(zhuǎn)的視覺(jué)效果。 (4) 其余 17 種基本型的旋轉(zhuǎn)策略 除了 I 型的旋轉(zhuǎn)比較復(fù)雜外,其余 17 種類型的方塊只需按各自旋轉(zhuǎn)的順序在當(dāng)前位置 用 已經(jīng)編輯好的坐標(biāo)數(shù)組來(lái)實(shí)現(xiàn)旋轉(zhuǎn)即可。 ① ② ③ ④ 賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 25 圖 313 旋轉(zhuǎn)程序流程圖 Fig 313 Rotating program flowchart 俄羅斯方塊下移的實(shí)現(xiàn)方法 在整個(gè)游戲過(guò)程中,方塊是不斷向下運(yùn)行的,其下移特性為:方塊每次下移的格N Y Y Y N N Y N ?? 按下旋轉(zhuǎn)鍵 是否是 I 型、一型 判斷方塊經(jīng)過(guò)了幾次旋轉(zhuǎn) 判斷新位置是否可寫(xiě) 判斷是哪類圖塊 I 型及其旋轉(zhuǎn)型 其它 17 種類型 ?? 根據(jù)上述判斷的結(jié)果決定當(dāng)前位置行、列坐標(biāo)的增減 進(jìn)行旋轉(zhuǎn)變換 是否是 I 型、一型以外的其它類型 按照已經(jīng)排列好的變換順序取坐標(biāo)數(shù)據(jù) 恢復(fù)原先坐標(biāo) ?? 黃忠南 基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì) 26 數(shù)對(duì)應(yīng)著 LCD12864 屏幕中的一行。 圖 314 下移判斷程序流程圖 Fig 314 Moves down judgment program flowchart 滿行檢測(cè)及消行功能的實(shí)現(xiàn)方法 隨著方塊的不斷累積,方塊每次下落到不能再運(yùn)動(dòng)時(shí),系統(tǒng)就會(huì)檢測(cè)游戲 map 區(qū),當(dāng)檢測(cè)到 map 區(qū)中某一行堆積滿后,系統(tǒng)就消去此行,作為獎(jiǎng)勵(lì),其上方的方塊群則依次下落一行。若檢測(cè)到某行被填滿,則消去此行,并將其上 方的 圖塊往下移動(dòng)相應(yīng)的行數(shù)。 Y N Y N Y N 進(jìn)入下移判斷程序 讀取下移一行后每個(gè)小方塊的行列坐標(biāo) 判斷每個(gè)小方塊的行在LCD 顯示區(qū)中的哪一頁(yè) 上半頁(yè) 下半頁(yè) 是否可寫(xiě) 標(biāo)志加 1 標(biāo)志是否為 4 程序返回 1 是 否循環(huán)了 4次 程序返回 0 賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 27 圖 315 滿行檢測(cè)程序流程 Fig 315 Full line detection processes 游戲積分的計(jì)算 方法 在游戲系統(tǒng)中,積分體現(xiàn)了玩家在此次游戲中的操作情況。 單人模式下,玩家 每消去一行,就能獲得 1 個(gè)積 分,如果當(dāng)前游戲積分超過(guò)系統(tǒng)記錄的單人最高游戲積分,則系統(tǒng)將更新記錄,以便其他玩家挑戰(zhàn)。其中積分區(qū)分為兩個(gè)階段,第一階段每消去 1行進(jìn)度條向上走一格 ,共 8個(gè)進(jìn)度格 ;第二階段每 累計(jì) 消去 3行進(jìn)度 條才向上增加 一格 ,共 6個(gè)進(jìn)度格 。 當(dāng)一次性同時(shí)消去 3 行時(shí),則能獲得一個(gè)道具功能的使用權(quán)。 具體程序?qū)崿F(xiàn)流程如圖 316所示。對(duì)于這樣的應(yīng)用程序,一個(gè)實(shí)時(shí)操系統(tǒng) (RTOS)允許靈活的分配系統(tǒng)資源(中央處理器、存儲(chǔ)器等)給各個(gè)任務(wù)。 RTX51 可以簡(jiǎn)化那些復(fù)雜而且時(shí)間要嚴(yán)格的工程軟件設(shè)計(jì)工作。 二者的主要區(qū)別是前者是可以強(qiáng)占(或者說(shuō)可剝奪的)系統(tǒng)而后者是不可以強(qiáng)占的(不可剝奪的)。RTX51 Full 工作在與中斷功能相似的狀態(tài)下,信號(hào)和信息可以通過(guò)郵箱系統(tǒng)在任務(wù)之間互相傳遞。而本游戲系統(tǒng)采用的 RTX51 Tiny 是 RTX51 完整版的子集,它完全集成在 Keil C51 的集成開(kāi)發(fā)環(huán)境中。 RTX51 Tiny 僅支持時(shí)間片輪轉(zhuǎn)任務(wù)切換和使用信號(hào)進(jìn)行任務(wù)切換。 RTX51 Tiny 雖然比較簡(jiǎn)陋,但它還是具備了一些實(shí)時(shí)操作系統(tǒng)的基本要素,又因?yàn)樗耆稍?Keil C51 的集成開(kāi)發(fā)環(huán)境中,可以使用戶把更多的精力關(guān)注在應(yīng)用本身而無(wú)需考慮復(fù)雜的底層驅(qū)動(dòng),而且整個(gè)應(yīng)用軟件系統(tǒng)結(jié)構(gòu)清晰,維護(hù)方便,可節(jié)省大量的時(shí)間和人力。 RTX51 Tiny完全可以充當(dāng)我們進(jìn)入實(shí)時(shí)操作系統(tǒng)( RTOS)世界的領(lǐng)路者,更為重要的是,它是免費(fèi)的。 RTX51 Tiny 的內(nèi)核分析 該小節(jié)只介紹本設(shè)計(jì)中用到 RTX51 Tiny 系統(tǒng)的相關(guān)知識(shí)與配置方法。 (1) RTX51 Tiny 程序的編寫(xiě)方法 若要 使用 RTX51 Tiny 的內(nèi)核 , 只需包含文 件 即可 ??梢圆捎靡韵路绞桨? # include 當(dāng)使用 Rtx51 Tiny時(shí),要為每個(gè)任務(wù)建立獨(dú)立的任務(wù)函數(shù)。在典型的應(yīng)用中,任務(wù) 0 簡(jiǎn)單的建立所有其他的任務(wù)。 (3) RTX51 Tiny 的 任務(wù)狀態(tài) RTX51 Tiny 的用戶任務(wù)具有以下幾個(gè)狀態(tài): RUNNING: 任務(wù)處于運(yùn)行中,同一時(shí)間只有一個(gè)搶占 任務(wù)可以處于“ RUNNING”狀態(tài)。 WAITING: 任務(wù)由于時(shí)間片用完而處于“ TIME OUT”狀態(tài),并等待再次運(yùn)行。如圖 317 所示為任務(wù)狀態(tài)轉(zhuǎn)換圖 [8]。內(nèi)核用以下事件進(jìn)行任務(wù)間的通信和同步。如果一個(gè)任務(wù)調(diào)用os_wait 函數(shù)等待 SIGNAL 而 SIGNAL 未置位,則該任務(wù)被掛起直到 SIGNAL 置位,才返回到 READY 狀態(tài),并可被再次執(zhí)行。帶有 TIMEOUT 值調(diào)用 os_wait 函數(shù)的任務(wù)將被掛起,直到延時(shí)結(jié)束,才返回到 READY 狀態(tài),并可被再次執(zhí)行。帶信號(hào)或超時(shí)到來(lái) 等待信號(hào)或超時(shí) 時(shí)間片結(jié)束 時(shí)間片到來(lái) READY/TIMEOUT RUNNING WAITING 賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 31 有 INTERVAL 值調(diào)用 os_wait 函數(shù)的任務(wù)將被掛起,直到間隔時(shí)間結(jié)束,然后返回到READY 狀態(tài),并可被再次執(zhí)行。 (5) RTX51 TINY 的 任務(wù)切換 方式 任務(wù)切換是 RTX51 TINY 提供的基本服務(wù)。所以在一個(gè)任務(wù)被執(zhí)行時(shí)不能對(duì)其進(jìn)行中斷,除非該任務(wù)主動(dòng)放棄 CPU 的資源,中斷才可以打斷當(dāng)前的任務(wù),中斷完成后把CPU 的控制權(quán)再交還該被中斷的任務(wù)。 圖 318 任務(wù)切換流程圖 Fig 318 Task switching flowchart TASK SWITCHING SWITCHING NOW 寄存器組切換 當(dāng)前任務(wù)時(shí)間片到標(biāo)志置位 查找下一個(gè)“ READY”狀態(tài)的任務(wù) N 對(duì)任務(wù) N堆棧管理 重置任務(wù) N節(jié)拍數(shù) 任務(wù) N 因時(shí)間片到轉(zhuǎn)入就緒狀態(tài) 任務(wù) N 因等信號(hào)且信號(hào)到,轉(zhuǎn)入就緒狀態(tài) 任務(wù) N 因等超時(shí)且超時(shí)到,轉(zhuǎn)入就緒狀態(tài) 任務(wù) N 因其他原因轉(zhuǎn)入就緒狀態(tài) 清除時(shí)間片到標(biāo)志 清除等待信號(hào)及信號(hào)到標(biāo)志 清除等超時(shí)及超時(shí)標(biāo)志 恢復(fù)因 T0中斷保護(hù)的現(xiàn)場(chǎng) 返回任務(wù) N 執(zhí)行,任務(wù)N 成 為 當(dāng) 前 任 務(wù)( SWITCHING 出口) 返回任務(wù) N 執(zhí)行,任務(wù) N 成為當(dāng)前任務(wù) ( SWITCHING NOW 出口) 黃忠南 基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì) 32 任務(wù)切換方式 分為 兩種 : 循環(huán)任務(wù)切換 方式 和 協(xié)作任務(wù)切換方式 。 os_wait 函數(shù)掛起當(dāng)前的任務(wù)(使之變?yōu)榈?待態(tài))直到指定的事件發(fā)生(接著任務(wù)變?yōu)榫途w態(tài))。 具體 做法是 在每個(gè)任務(wù)里調(diào)用 os_wait 函數(shù) 或 os_switch_task 函數(shù) ,以通知RTX51 Tiny 切換到另一個(gè)任務(wù)。 游戲 開(kāi)發(fā)環(huán)境的 配置 (1) Keil 的配置 編譯和鏈接 RTX51 Tiny 應(yīng)用程序有 2種途徑,一種是使用集成開(kāi)發(fā)環(huán)境μ Vision 3 IDE,另一種是使用命令行工具 CommandLine Tools。 利用 Keil Software 公司提供的集成開(kāi)發(fā)環(huán)境 μ Vision 3 IDE,創(chuàng)建 RTX51 Tiny應(yīng)用程序的開(kāi)始的步驟如下: ① 運(yùn)行 Keil Software 公司的集成開(kāi)發(fā)環(huán)境 μ Vision 3 IDE。 ③ 從 Operating 下拉列表框中選擇 RTX51 Tiny。所有的配置設(shè)置都在 文件中,該文件位于 KEIL C51/RTXTINY2目錄下。 μ Vision 3 IDE 編譯 RTX51 Tiny 程序時(shí)已 將 文 件拷貝到工程目錄下并將其加入 到 工程中。 下面僅對(duì)本設(shè)計(jì)中所需做的系統(tǒng)配置進(jìn)行詳細(xì)介紹。在多任務(wù)實(shí)時(shí)系統(tǒng)下就會(huì)出現(xiàn)“資源沖 突”的問(wèn)題。 還有就是 多個(gè) 指針 型 數(shù)據(jù) 在 任務(wù)中使用的問(wèn)題。 RTX51 Tiny 對(duì)他們不進(jìn)行管理,所以在應(yīng)用中必須確保在改變數(shù)據(jù)指針時(shí)不會(huì)發(fā)生 roundrobin 切換。 Roundrobin 切換是默認(rèn)使能的,以下參數(shù)用來(lái)設(shè)定 Roundrobin 切換的時(shí)間或禁能 Roundrobin 切換 。當(dāng)這個(gè)值為 0時(shí)禁止 Roundrobin 切換。 如果禁止了 roundrobin 多任務(wù) 切換 ,必須設(shè)計(jì) 將應(yīng)用程序要執(zhí)行的 任務(wù)以Cooperative 任務(wù)切換 的 方式工作。這些函數(shù)告知 RTX51 Tiny 切換到另一任務(wù)。 雙人單機(jī)對(duì)戰(zhàn) 模式 的實(shí)現(xiàn) 流程 本系統(tǒng) 實(shí)現(xiàn) 的 雙人 游戲 模式是建立在單人 游戲 模式的基礎(chǔ)上的。 其中進(jìn)程 0和進(jìn)程 1的程序流程是大致相同的。 系統(tǒng)背景音樂(lè)的設(shè)計(jì) 音樂(lè)的設(shè)計(jì) 原理 對(duì)于單片機(jī)產(chǎn)生音樂(lè),關(guān)鍵是控制頻率的輸出。音樂(lè)中,有 8個(gè)基本音符: do、 re、 mi、 fa、 so、 la、 xi、 do,八個(gè)不同的音符對(duì)應(yīng)著不同的頻率。因此,本設(shè)計(jì)采用的是一種音名同節(jié)拍混排的一種方式來(lái)對(duì)曲譜進(jìn) 行的編碼。節(jié)拍是兩位,有四種狀態(tài),表示四種節(jié)拍;音高是兩位,有四種狀態(tài),表示三種不同的音高(低音、中音、高音);音符用四位表示,有黃忠南 基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì) 34 十六種狀態(tài),來(lái)表示每個(gè)調(diào)的十二種不同的音符。 在本設(shè)計(jì)中, RTX51 TINY 允許同時(shí) “ 準(zhǔn)并行 ” 地執(zhí)行多個(gè)任務(wù) , 各個(gè)任務(wù)是在預(yù)先設(shè)定 圖 319 雙人游戲程序流 程圖 Fig 319 Double game processes flowchart Y N Y Y Y N Y N Y N Y N Y N Y N Y N 游戲配置為雙人模式 啟動(dòng)游戲 進(jìn)程 0 進(jìn)程 1 使用協(xié)助方式進(jìn)行任務(wù)切換 速降信號(hào) 平移信號(hào) 平移信號(hào) 道具信號(hào) 速降信號(hào) 道具信號(hào) 執(zhí)行相關(guān)平移操作 執(zhí)行相關(guān)平移操作 執(zhí)行速降操作 執(zhí)行速降操作 下移操作 下移操作 執(zhí)行道具功能 執(zhí)行道具功能 積分統(tǒng)計(jì) 積分統(tǒng)計(jì) 使用協(xié)助方式進(jìn)行任務(wù)切換 積分到上限 積分到上限 停止游戲 停止游戲 賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 35 的時(shí)間片內(nèi)執(zhí)行 的 。 這個(gè)過(guò)程的實(shí)現(xiàn)是 RTX51 TINY 利用單片機(jī)內(nèi)部定時(shí)器 T0的中斷功能實(shí)現(xiàn) 的 。所以本設(shè)計(jì)通過(guò)控制內(nèi)部 PCA 模塊構(gòu)成的定時(shí)器產(chǎn)生不同頻率的脈沖,從而驅(qū)動(dòng)蜂鳴器發(fā)出相應(yīng)頻 率的聲音,而發(fā)音時(shí)間的長(zhǎng)短用定時(shí)器 T1來(lái)控制。通過(guò)對(duì)歌譜編碼, 程序可以 到 編碼數(shù)組中 取 出 音符 的頻率及節(jié)拍 數(shù)據(jù) ,然后將所取 的數(shù)據(jù)經(jīng)過(guò) 系統(tǒng)的 處理 后 ,將 音調(diào)定時(shí)時(shí)間和節(jié)拍定時(shí)時(shí)間 送入 相應(yīng)的 定時(shí)器。 (2) 讓 STC12C5A60S2 單片機(jī) 的內(nèi)部計(jì)時(shí)器 T1工作在計(jì)數(shù)模式 MODE1 下,改變計(jì)數(shù)值TH1 及 TL1 以產(chǎn)生不同的頻率。所以在每計(jì)數(shù) 956 次時(shí)將 I/O 反相,就要以得到中音 D0( 523Hz)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1