基于51單片機(jī)的俄羅斯方塊游戲畢業(yè)設(shè)計(jì)_第1頁
基于51單片機(jī)的俄羅斯方塊游戲畢業(yè)設(shè)計(jì)_第2頁
基于51單片機(jī)的俄羅斯方塊游戲畢業(yè)設(shè)計(jì)_第3頁
基于51單片機(jī)的俄羅斯方塊游戲畢業(yè)設(shè)計(jì)_第4頁
基于51單片機(jī)的俄羅斯方塊游戲畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2011203講師曾繁政物理與電子信息工程系07106171232007級電氣工程及其自動化基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì)基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì)基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì)獨(dú) 創(chuàng) 性 聲 明本人鄭重聲明:所呈交的畢業(yè)論文(設(shè)計(jì))是本人在指導(dǎo)老師指導(dǎo)下取得的研究成果。除了文中特別加以注釋和致謝的地方外,論文(設(shè)計(jì))中不包含其他人已經(jīng)發(fā)表或撰寫的研究成果。與本研究成果相關(guān)的所有人所做出的任何貢獻(xiàn)均已在論文(設(shè)計(jì))中作了明確的說明并表示了謝意。簽名: 年月日授權(quán)聲明本人完全理解賀州學(xué)院有關(guān)保留、使用本科生畢業(yè)論文(設(shè)計(jì))的規(guī)定,即:學(xué)院有權(quán)保留并向國家有關(guān)部門或機(jī)構(gòu)送交畢業(yè)論文(設(shè)計(jì))的復(fù)

2、印件和磁盤,允許畢業(yè)論文(設(shè)計(jì))被查閱和借閱。本人授權(quán)賀州學(xué)院可以將畢業(yè)論文(設(shè)計(jì))的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存、匯編論文(設(shè)計(jì))。本人論文(設(shè)計(jì))中有原創(chuàng)性數(shù)據(jù)需要保密的部分為(如沒有,請?zhí)顚憽盁o”):簽 名: 年月日指導(dǎo)教師簽名: 年月日基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì)摘 要俄羅斯方塊是一款風(fēng)靡全球的益智游戲。它規(guī)則簡單,容易上手,且游戲過程變化無窮,使用戶在游戲中得到樂趣。本文討論了一種基于增強(qiáng)型單片機(jī)硬件平臺和實(shí)時(shí)操作系統(tǒng)的智能俄羅斯方塊游戲的設(shè)計(jì)與實(shí)現(xiàn)。該設(shè)計(jì)選用的處理器型號為STC12C5A60S2的單片機(jī),實(shí)時(shí)操作系統(tǒng)采用適用于80

3、51處理器的RTX51 Tiny多任務(wù)實(shí)時(shí)操作系統(tǒng)。重點(diǎn)從軟件工程角度論述了俄羅斯方塊模型構(gòu)造,圖形旋轉(zhuǎn),坐標(biāo)變換,雙人游戲中多任務(wù)實(shí)時(shí)操作的設(shè)計(jì)法方,以及背景音樂的處理等技術(shù)。同時(shí),該設(shè)計(jì)的獨(dú)創(chuàng)性是在8051系列單片機(jī)中使用操作系統(tǒng)實(shí)現(xiàn)了雙人游戲和音效的添加。關(guān)鍵詞:單片機(jī);RTX51;LCD;俄羅斯方塊ABSTRACTTetris is a section became popular in the world of puzzles.The rules are simple, easy to operate and the game process changes.Users in the

4、 game to get fun.This paper discussed a method based on enhanece microcontroller hardware platform and real-time operating system of intelligent Tetris game of design and implementa- tion.This design multi-back STC12C5A60S2 single-chip processor regult and real-time operating system adopt suitable f

5、or the 8051 processor RTX51 of multi-tasking real- time operating system.This paper mainly discusses the from software engineering tetris model of structure,graphics rotation,coordinate transform,the double game multitasking real-time operating design,and the background music of the formation of tec

6、hnology.At the same time,the design originality in the 8051series micro- controller is used in the operating system realizing double game and sound add.Key words: singlechip;RTX51;LCD;Tetris目 錄 TOC o 1-3 f h z u HYPERLINK l _Toc289104877 摘 要 PAGEREF _Toc289104877 h I HYPERLINK l _Toc289104878 ABSTRA

7、CT PAGEREF _Toc289104878 h II HYPERLINK l _Toc289104879 1 緒 論 PAGEREF _Toc289104879 h 1 HYPERLINK l _Toc289104880 1.1 課題背景 PAGEREF _Toc289104880 h 1 HYPERLINK l _Toc289104881 1.2 課題的主要研究內(nèi)容 PAGEREF _Toc289104881 h 1 HYPERLINK l _Toc289104882 1.3 課題的研究現(xiàn)狀及意義 PAGEREF _Toc289104882 h 1 HYPERLINK l _Toc28

8、9104883 2 系統(tǒng)硬件平臺設(shè)計(jì) PAGEREF _Toc289104883 h 2 HYPERLINK l _Toc289104884 2.1 STC12C5A60S2單片機(jī)概述 PAGEREF _Toc289104884 h 2 HYPERLINK l _Toc289104885 2.2 STC12C5A60S2最小系統(tǒng) PAGEREF _Toc289104885 h 3 HYPERLINK l _Toc289104886 2.3 電源系統(tǒng) PAGEREF _Toc289104886 h 3 HYPERLINK l _Toc289104887 2.4 振蕩電路 PAGEREF _Toc

9、289104887 h 3 HYPERLINK l _Toc289104888 2.5 復(fù)位系統(tǒng) PAGEREF _Toc289104888 h 4 HYPERLINK l _Toc289104889 2.6 程序下載系統(tǒng) PAGEREF _Toc289104889 h 5 HYPERLINK l _Toc289104890 2.7 音樂播放系統(tǒng) PAGEREF _Toc289104890 h 6 HYPERLINK l _Toc289104891 2.8 LCD液晶顯示接口電路 PAGEREF _Toc289104891 h 6 HYPERLINK l _Toc289104892 2.9 操

10、作控制接口 PAGEREF _Toc289104892 h 7 HYPERLINK l _Toc289104893 3 系統(tǒng)軟件平臺構(gòu)建 PAGEREF _Toc289104893 h 8 HYPERLINK l _Toc289104894 3.1 Vision簡介 PAGEREF _Toc289104894 h 8 HYPERLINK l _Toc289104895 3.2 LCD12864液晶屏顯示原理 PAGEREF _Toc289104895 h 8 HYPERLINK l _Toc289104896 3.2.1 LCD模塊總線選擇及時(shí)序 PAGEREF _Toc289104896 h

11、 8 HYPERLINK l _Toc289104897 3.2.2 LCD顯示RAM區(qū)映射概況 PAGEREF _Toc289104897 h 9 HYPERLINK l _Toc289104898 3.2.3 LCD的驅(qū)動方法 PAGEREF _Toc289104898 h 10 HYPERLINK l _Toc289104899 3.2.4 LCD驅(qū)動程序架構(gòu) PAGEREF _Toc289104899 h 10 HYPERLINK l _Toc289104900 3.3 俄羅斯方塊游戲設(shè)計(jì) PAGEREF _Toc289104900 h 11 HYPERLINK l _Toc28910

12、4901 3.3.1 俄羅斯方塊游戲功能簡介 PAGEREF _Toc289104901 h 11 HYPERLINK l _Toc289104902 3.3.2 系統(tǒng)界面的設(shè)計(jì) PAGEREF _Toc289104902 h 12 HYPERLINK l _Toc289104903 3.3.3 游戲系統(tǒng)“枚舉算法”概述 PAGEREF _Toc289104903 h 14 HYPERLINK l _Toc289104904 3.3.4 俄羅斯方塊造型設(shè)計(jì)的方法 PAGEREF _Toc289104904 h 15 HYPERLINK l _Toc289104905 3.3.5 隨機(jī)產(chǎn)生俄羅斯

13、方塊的方法 PAGEREF _Toc289104905 h 15 HYPERLINK l _Toc289104906 3.3.6 俄羅斯方塊平移的實(shí)現(xiàn)方法 PAGEREF _Toc289104906 h 17 HYPERLINK l _Toc289104907 3.3.7 俄羅斯方塊旋轉(zhuǎn)的實(shí)現(xiàn)方法 PAGEREF _Toc289104907 h 18 HYPERLINK l _Toc289104908 3.3.8 俄羅斯方塊下移的實(shí)現(xiàn)方法 PAGEREF _Toc289104908 h 20 HYPERLINK l _Toc289104909 3.3.9 滿行檢測及消行功能的實(shí)現(xiàn)方法 PAGE

14、REF _Toc289104909 h 21 HYPERLINK l _Toc289104910 3.3.10 游戲積分的計(jì)算方法 PAGEREF _Toc289104910 h 22 HYPERLINK l _Toc289104911 3.4 雙人俄羅斯方塊游戲設(shè)計(jì) PAGEREF _Toc289104911 h 24 HYPERLINK l _Toc289104912 3.4.1 RTX51 Tiny簡介 PAGEREF _Toc289104912 h 24 HYPERLINK l _Toc289104913 3.4.2 RTX51 Tiny的內(nèi)核分析 PAGEREF _Toc289104

15、913 h 24 HYPERLINK l _Toc289104914 3.4.3 游戲開發(fā)環(huán)境的配置 PAGEREF _Toc289104914 h 27 HYPERLINK l _Toc289104915 3.4.4 雙人單機(jī)對戰(zhàn)模式的實(shí)現(xiàn)流程 PAGEREF _Toc289104915 h 28 HYPERLINK l _Toc289104916 3.5 系統(tǒng)背景音樂的設(shè)計(jì) PAGEREF _Toc289104916 h 28 HYPERLINK l _Toc289104917 音樂的設(shè)計(jì)原理 PAGEREF _Toc289104917 h 28 HYPERLINK l _Toc28910

16、4918 3.5.2 音樂播放的實(shí)現(xiàn)方法 PAGEREF _Toc289104918 h 30 HYPERLINK l _Toc289104919 3.5.3 音效程序流程 PAGEREF _Toc289104919 h 30 HYPERLINK l _Toc289104920 3.6 系統(tǒng)主程序流程圖 PAGEREF _Toc289104920 h 31 HYPERLINK l _Toc289104921 4 產(chǎn)品功能說明與系統(tǒng)性能測試 PAGEREF _Toc289104921 h 32 HYPERLINK l _Toc289104922 4.1 產(chǎn)品功能說明 PAGEREF _Toc28

17、9104922 h 32 HYPERLINK l _Toc289104923 4.2 系統(tǒng)性能測試 PAGEREF _Toc289104923 h 33 HYPERLINK l _Toc289104924 5 結(jié)束語 PAGEREF _Toc289104924 h 33 HYPERLINK l _Toc289104925 參考文獻(xiàn) PAGEREF _Toc289104925 h 35 HYPERLINK l _Toc289104926 致 謝1 緒 論1.1 課題背景如今,計(jì)算機(jī)系統(tǒng)的發(fā)展已明顯地朝三個(gè)方向發(fā)展,這三個(gè)方向就是:巨型化,單片化,網(wǎng)絡(luò)化。對于解決復(fù)雜計(jì)算和高速數(shù)據(jù)處理的問題仍然是

18、巨型機(jī)在起作用,因而,目前巨型機(jī)正在朝高速及高處理能力的方向發(fā)展。單片機(jī)在出現(xiàn)時(shí)Intel公司就給其單片機(jī)取名為嵌入式微控制器4。單片機(jī)的最明顯的優(yōu)勢,就是可以嵌入到各種儀器、設(shè)備中。這一點(diǎn)是巨型機(jī)和網(wǎng)絡(luò)不可能做到的。單片機(jī)在內(nèi)部已集成了趆來趆多的部件,這些部件包括一般常用的電路,例如:定時(shí)器,比較器,EEPROM,D/A轉(zhuǎn)換器,串行通信接口,Watchdog電路等。 同時(shí),俄羅斯方塊是一款風(fēng)靡全球的電視游戲機(jī)和掌上游戲機(jī)游戲,目前在網(wǎng)絡(luò)單機(jī)游戲和kele8等上都有它的身影。而它曾經(jīng)造成的轟動與經(jīng)濟(jì)價(jià)值可以說是游戲史上一件大事。因此,對它的研究,無論從技術(shù)上,還是社會意義上看都是很有價(jià)值的。單

19、片機(jī)在游戲上的應(yīng)用是具有非常大的潛力的,它能將游戲帶入到另一個(gè)階段。此次設(shè)計(jì)僅僅是為了舉一個(gè)單片機(jī)在游戲應(yīng)用方面的簡單例子,它可以很好的說明單片機(jī)功能的強(qiáng)大,體現(xiàn)其更高的可控性和高集成度的好處,因此它可以在電子游戲方面成為一個(gè)不可計(jì)量的明日之星。1.2 課題的主要研究內(nèi)容本課題研究和實(shí)現(xiàn)了基于8051+RTX51到Tiny平臺下的智能俄羅斯方塊游戲系統(tǒng)。主要研究內(nèi)容是實(shí)現(xiàn)智能俄羅斯方塊游戲系統(tǒng)軟硬件平臺的搭建;本系統(tǒng)以8051微處理器為核心來運(yùn)行RTX51 Tiny多任務(wù)實(shí)時(shí)操作系統(tǒng),利用KEIL C51開發(fā)工具進(jìn)行軟件開發(fā),通過LCD12864液晶屏顯示游戲界面。該設(shè)計(jì)能實(shí)現(xiàn)單人單機(jī)游、雙人

20、單機(jī)對戰(zhàn)游戲、游戲背景音樂的播放和單人最高積分存儲等功能。在俄羅斯方塊游戲系統(tǒng)開發(fā)過程中,本文作者首先進(jìn)行硬件平臺的搭建,包括單片機(jī)最小系統(tǒng)的搭建、電源系統(tǒng)的搭建、串口下載器的設(shè)計(jì)、游戲手柄的設(shè)計(jì)、音效播放模塊的設(shè)計(jì)以及LCD液晶顯示接口的設(shè)計(jì)。然后,作者才開展軟件平臺的構(gòu)建,這也是本設(shè)計(jì)的重要部分,主要包括對RTX51 Tiny操作系統(tǒng)的配置、俄羅斯方塊模型的設(shè)計(jì)、模型圖塊的旋轉(zhuǎn)及坐標(biāo)變換設(shè)計(jì)、雙人單機(jī)對戰(zhàn)游戲設(shè)計(jì)和音效系統(tǒng)設(shè)計(jì)等。最后,從硬件和軟件兩方面對完成的智能俄羅斯方塊游戲系統(tǒng)進(jìn)行調(diào)試及運(yùn)行試驗(yàn)。1.3 課題的研究現(xiàn)狀及意義現(xiàn)今國內(nèi)外的俄羅斯方塊游戲設(shè)計(jì)主要有基于PC機(jī)上Window

21、s平臺的俄羅斯方塊游戲、基于 平臺的智能俄羅斯方塊游戲以及基于單片機(jī)平臺的俄羅斯方塊游戲等。前兩種屬于高端游機(jī),性能優(yōu)越,但成本高,而且計(jì)算機(jī)編程已不是新命題,VB、VC、Delphi版本的俄羅斯方塊游戲都有發(fā)布9。從學(xué)術(shù)角度來看,針對俄羅斯方塊游戲的開發(fā),國內(nèi)外也有不少學(xué)者展開過研究,比如Niko將進(jìn)化算法引入到俄羅斯方塊中并驗(yàn)證了其有效性,Hoogeboom探討了俄羅斯方塊游戲的構(gòu)造問題,王宇等針對存在于俄羅斯方塊中的兩個(gè)數(shù)學(xué)問題提出解決方案,高凌琴探討游戲功能要求、數(shù)據(jù)結(jié)構(gòu)、圖形旋轉(zhuǎn)、坐標(biāo)變換等關(guān)鍵技術(shù),胡代弟在SPCE061A單片機(jī)實(shí)現(xiàn)了俄羅斯方塊游戲10。綜上,國內(nèi)外的研究多著重于游

22、戲數(shù)學(xué)原理的討論,也有部分文獻(xiàn)涉及游戲的具體實(shí)現(xiàn),但多是在Windows操作系統(tǒng)下實(shí)現(xiàn)的,在單片機(jī)平臺下的開發(fā)俄羅斯方塊游戲鮮少有文獻(xiàn)刊載。而單片機(jī)由于具有體積小、性能突出、價(jià)格低廉等特點(diǎn),應(yīng)用領(lǐng)域不斷擴(kuò)大,除了工業(yè)控制、智能化儀表、家用電器外,在智能化高檔電子玩具產(chǎn)品也大量采用單片機(jī)芯片作為核心控制部件。曾經(jīng)80年代非常流行的掌上游戲機(jī)便是單片機(jī)在電子玩具中的應(yīng)用之一,其中的俄羅斯方塊游戲現(xiàn)已被我們所熟知。本文探討基于8051單片機(jī)硬件平臺和RTX51 Tiny多任務(wù)實(shí)時(shí)操作系統(tǒng)的俄羅斯方塊游戲的設(shè)計(jì)與實(shí)現(xiàn),將理論與實(shí)踐相結(jié)合。其主要目標(biāo)是再現(xiàn)經(jīng)典的俄羅斯方塊游戲,并在此基礎(chǔ)上實(shí)現(xiàn)雙人單機(jī)對

23、戰(zhàn)游戲模式,以豐富產(chǎn)品功能,增強(qiáng)游戲的趣味性。2 系統(tǒng)硬件平臺設(shè)計(jì)2.1 STC12C5A60S2單片機(jī)概述STC12C5A60S2系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速、低功耗、超強(qiáng)抗干擾的新一代8051系列單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快812倍。用戶程序空間為60KB,片上集成1280字節(jié)RAM,具有EEPROM功能,能夠額外儲蓄1KB的數(shù)據(jù)。該單片機(jī)共有4個(gè)16位定時(shí)器,兩個(gè)與傳統(tǒng)8051兼容的定時(shí)器/計(jì)數(shù)器,即16位定時(shí)器T0和T1,沒有定時(shí)器2,但有獨(dú)立波特率發(fā)生器做串行通訊的波特率發(fā)生器,再加上2路PCA模塊可由T0的溢出在P3.4/T0

24、輸出時(shí)鐘,可由T1的溢出在P3.5/T1輸出時(shí)鐘,此兩路可編程計(jì)數(shù)器陣列(PCA)可用來再實(shí)現(xiàn)2個(gè)定時(shí)器。此外,STC12C5A60S2內(nèi)部還集成MAX810專用復(fù)位電路,2路PWM,8路高速度10位A/D轉(zhuǎn)換(250K/S),針對電機(jī)控制,強(qiáng)干擾場地合。綜上所述,STC12C5A605S2單片機(jī)具有許多強(qiáng)大的功能,能夠滿足大多數(shù)用戶對8位單片機(jī)的要求。2.2 STC12C5A60S2最小系統(tǒng)單片機(jī)最小系統(tǒng)主要由電源、振蕩、復(fù)位電路以及擴(kuò)展電路等部分組成。在本設(shè)計(jì)中,擴(kuò)展了液晶顯示接口。因此,本設(shè)計(jì)的最小系統(tǒng)如圖2-1所示。圖 2-1 STC12C5A60S2最小系統(tǒng)Fig 2-1 STC12

25、C5A60S2 Minimum System 電源系統(tǒng)本設(shè)計(jì)的電源系統(tǒng)比較簡單,直接由LM7805穩(wěn)壓芯片輸出的+5V電源供電。具體電路如圖2-2所示。圖片2-2 電源系統(tǒng)Fig 2-2 Power System2.4 振蕩電路單片機(jī)系統(tǒng)里都有振蕩電路,在單片機(jī)系統(tǒng)里晶振作用非常大,全稱叫晶體振蕩器,它結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生單片機(jī)所需的時(shí)鐘頻率,單片機(jī)晶振提供的時(shí)鐘頻率趆高,那么單片機(jī)運(yùn)行速度就趆快,單片機(jī)的一切指令執(zhí)行都是依靠單片機(jī)晶振提供的時(shí)鐘頻率。4晶振通常與鎖相環(huán)電路配合使用,以提供系統(tǒng)所需的時(shí)鐘頻率。本設(shè)計(jì)中STC12C5A60S2使用12MHz的晶體振蕩器作為振蕩源,由于單片機(jī)內(nèi)部

26、帶有振蕩電路,所以外部只要連接一個(gè)晶振和兩個(gè)電容即可,電容容量一般在15pF至50pF之間。如圖2-3所示即為本設(shè)計(jì)的振蕩電路。圖 2-3 振蕩電路Fig 2-3 oscillatory circuit 復(fù)位系統(tǒng) MCS51單片機(jī)通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式。通常因?yàn)橄到y(tǒng)運(yùn)行等需要,常常需要人工復(fù)位,本設(shè)計(jì)采用按鈕復(fù)位的方式,即按下開關(guān)一定時(shí)間就能使RTS引腳端為高電平,從而使單片機(jī)復(fù)位。同時(shí),簡單復(fù)位電路中,干擾信號易串入復(fù)位端,由此可能會引起內(nèi)部某些寄存器錯(cuò)誤復(fù)位,這時(shí)可在RST引腳上接去耦電容。在STC12C5A60S2單片機(jī)中有兩個(gè)復(fù)位端口,即RST/P4.7、RST2/P4

27、.6,當(dāng)晶振頻率小于或等于12MHz時(shí),使用RST端口。由于本設(shè)計(jì)使用外接12MHz的晶振作為振蕩時(shí)鐘,所以采用如圖2-4所示的復(fù)位系統(tǒng)。圖 2-4 復(fù)位系統(tǒng)Fig 2-4 Rest System 程序下載系統(tǒng)單片機(jī)系統(tǒng)的傳統(tǒng)編程方式是先將單片機(jī)從電路板上取下,放入專用的編程器進(jìn)行編程,再放入電路板進(jìn)行調(diào)試。其缺點(diǎn)是頻繁拔插器件容易損壞器件的引腳;如果頻繁的調(diào)試程序,必須重復(fù)拔插,大降低了開發(fā)效率。ISP(在線系統(tǒng)編程)技術(shù)是一種無需將存儲芯片從嵌入式設(shè)備上取出就能對其進(jìn)行編程的過程。其優(yōu)點(diǎn)是,即使器件焊接在電路板上,仍可對其進(jìn)行編程。在線系統(tǒng)可編程是Flash存儲器的固有特性(通常無需額外電

28、路),F(xiàn)lash幾乎都采用這種方式編程。ISP的實(shí)現(xiàn)相對要簡單一些,一般通用做法是內(nèi)部的存儲器可以由上位機(jī)的軟件通過串口來進(jìn)行改寫。對于8051系列單片機(jī)來講可通過SPI接口或其它的串行接口接收上位機(jī)傳來的數(shù)據(jù)并寫入存儲器中。而上位機(jī)PC機(jī)與下位機(jī)單片機(jī)通過RS-232串行接口總線進(jìn)行的串行通信。8051系列單片機(jī)帶有一個(gè)全雙工的串行接口,因此用RS-232串行接口總線非常方便。PC機(jī)配置RS-232標(biāo)準(zhǔn)接口,RS-232信號電平為負(fù)邏輯(邏輯“0”為+12V ;邏輯“1”為-12V),8051單片機(jī)輸入、輸出電平為TTL電平(邏輯“0”為小于等于0.5V;邏輯“1”為大于等于2.4V)。所以

29、8051單片機(jī)與PC機(jī)間點(diǎn)對點(diǎn)異步通信需加電平轉(zhuǎn)換電路,否則將燒壞TTL電路。MAX232是MAXIM公司生產(chǎn)的電平轉(zhuǎn)換器件,只需在外部接入相應(yīng)的電解電容即可。因此,本設(shè)計(jì)采用直連串口線進(jìn)行串口通信,其中STC12C5A60S2的P30/RXD和P31/TXD分別和下載器的第10管腳/T和第9管腳/R相連,串口線的第5管腳接地,2、3管腳和下載器的7、8管腳相連。具體電路如圖2-5所示。圖 2-5 程序下載系統(tǒng)Fig 2-5 Program Download System 音樂播放系統(tǒng)在本設(shè)計(jì)中,音樂播放系統(tǒng)是通過三極管驅(qū)動有源蜂鳴器發(fā)聲,而具體的音符聲調(diào)則由程序控制。因此,音樂播放系統(tǒng)的硬件

30、電路非常簡單。具體接法為有源蜂鳴器正極直接接+5V電源,負(fù)極與三極管8050的發(fā)射極相連,8050的集電極直接接地,其基極串一個(gè)1K的電阻連接到STC12C5A60S2單片機(jī)的P20端口。如圖2-6所示。圖片2-6 音樂播放系統(tǒng)Fig 2-6 Music Player System2.8 LCD液晶顯示接口電路 液晶顯示屏是整個(gè)系統(tǒng)硬件的重要組成部分,擔(dān)當(dāng)著人機(jī)交互的重要角色。本設(shè)計(jì)采用銘正同創(chuàng)公司生產(chǎn)的MzL02D-12864液晶點(diǎn)陣屏作為顯示器件。它是一塊128*64點(diǎn)陣的LCD顯示模組,模組上的LCM采用COG技術(shù)將控制(包括顯存)、驅(qū)動器集成在LCM的玻璃上,接口簡單、操作方便。其特點(diǎn)

31、為單電源供電,對比度編程可調(diào),可采用并行接口為6800/8080時(shí)序或者串行SPI的MPU接口方式,整塊液晶屏由3.3V的白色LED背光,美觀大方。其外部接口分為電源端口、數(shù)據(jù)端口和命令端口三部分組成。本設(shè)計(jì)中LCD的數(shù)據(jù)端口連接到STC12C5A60S2單片機(jī)的P0端口,LCD的命令端口連接到單片機(jī)的P2端口。具體硬件電路如圖2-7所示。圖 2-7 LCD液晶顯示接口電路Fig 2-7 Liquid Display Interface Circuit 操作控制接口操作控制模塊是智能俄羅斯方塊游戲系統(tǒng)的輸入器件。它包括主控制器和輔助控制器。主控制器包括七個(gè)按鍵,分別為:旋轉(zhuǎn)/確定、向左/返回上

32、級菜、向右/下一個(gè)、快速下降、使用道具、暫停、退出。副控制器則包括五個(gè)按鍵,分別為:旋轉(zhuǎn)/確定、向左/返回上級菜、向右/下一個(gè)、快速下降、使用道具。在硬件電路方面輔控制器比主控制器少兩個(gè)按鍵的連接。如圖2-8所示為主控制器的接線圖。與單片機(jī)的具體接口可根據(jù)實(shí)際設(shè)定。圖片2-8 控制模塊接口Fig 2-8 Control Interface 3 系統(tǒng)軟件平臺構(gòu)建 Vision簡介Vision是德國Keil公司開發(fā)的單片機(jī)IDE軟件,最初主要用于8051系列單片機(jī),目前也有支ARM系列單片機(jī)的專用版本MDK-ARM。本設(shè)計(jì)使用的是keil Vision3版本的開發(fā)軟件進(jìn)行程序開發(fā)。3.2 LCD1

33、2864液晶屏顯示原理.1 LCD模塊總線選擇及時(shí)序 MzL02D模塊提供了兩個(gè)LCM的引腳(C86和PS引腳)供用戶選擇模塊的接口類型,分別可以選擇6800并行總線、8080并行總線或者SPI串行接口。模塊默認(rèn)情況下PS為高電平、C86為高電平,此時(shí)為6800總線接口類型,本設(shè)計(jì)采用6800總線模式。在此種接口模式下,WR 線為讀寫控制信號線,當(dāng)WR 為高電平時(shí)為讀狀態(tài),WR為低電來時(shí)為寫入狀態(tài)。在6800總線接口模式下LCD的時(shí)序如圖3-1所示。圖 3-1 6800總線時(shí)序Fig 3-1 6800 Bus Timing.2 LCD顯示RAM區(qū)映射概況驅(qū)動控制芯片的顯示RAM區(qū)中,每個(gè)byt

34、e的數(shù)據(jù)對應(yīng)屏上的點(diǎn)的排列方式為:縱向排列,低位在上高位在下;如圖3-2所示。MzL02D-12864液晶顯示模組的顯示器上的顯示點(diǎn)與驅(qū)動控制芯片中的顯示緩存RAM是一一對應(yīng)的;共有65(8Page * 8bit + 1)*132個(gè)位的顯示RAM區(qū)。而顯示器的顯示點(diǎn)陣大小為64*128點(diǎn),所以實(shí)際上在液晶顯示模塊中有用的顯示RAM區(qū)為64*128個(gè)位;按byte為單位劃分,共分為8個(gè)Page,每個(gè)Page為8行,而每一行為128個(gè)位。(即128列)。圖 3-2 字節(jié)數(shù)據(jù)排列情況Fig 3-2 Byte data arrangementMzL02D-12864液晶顯示模塊的顯示屏上的每一個(gè)點(diǎn)都對

35、應(yīng)有控制器片內(nèi)的顯示緩存RAM中的一個(gè)bit,顯示屏上64*128個(gè)點(diǎn)分別對應(yīng)著顯示RAM的8個(gè)Page,每一個(gè)Page有128個(gè)byte的空間。因此可知顯示RAM區(qū)中的一個(gè)Page空間對應(yīng)8行的點(diǎn),而該P(yáng)age中的一個(gè)byte數(shù)據(jù)則對應(yīng)一列(8個(gè)點(diǎn))。用戶如要點(diǎn)亮LCD屏上的某一個(gè)點(diǎn)時(shí),實(shí)際上就是對該點(diǎn)所對應(yīng)的顯示RAM區(qū)中的某一個(gè)位進(jìn)行置1操作,所以就要確定該點(diǎn)所處的行地址、列地址。MzL02-12864液晶顯示模組的行地址實(shí)際上就是Page的信息,每一個(gè)Page應(yīng)有8行;而列地址則表示該點(diǎn)的橫坐標(biāo),在屏上為從左到右排列,Page中的一個(gè)Byte對應(yīng)的是一列(8行,即8個(gè)點(diǎn)),達(dá)128列。

36、可以根據(jù)這樣的關(guān)系在程序中控制LCD顯示屏的顯示。.3 LCD的驅(qū)動方法在很多資料以及書籍當(dāng)中,通常介紹有兩種 LCD模塊的連接方法:直接控制和間接控制;直接控制實(shí)際指的是 LCD模塊的總線接口直接與MCU端口連接,然后 MCU 通過程序控制端口來模擬 LCD的總線時(shí)序來完成對其的控制操作;而間接控制指的是MCU本身就有外部總線拉出,與LCD的總線接口對應(yīng)的連接上,程序中直接操作總線以控制LCD。目前有很多MCU 都把總線密封起來了,都沒有引出外部總線;所以通常在用MCU控制LCD模塊時(shí),時(shí)常會選擇直接控制的方式,即利用端口來模擬總線時(shí)序;當(dāng)然了,如果本身就有總線而且也與LCD模塊的總線配得上

37、的話,肯定會使用總線連接的間控方式。本設(shè)計(jì)采用直接控制的方式,將MzL02D-12864 LCD模塊的總配置為6800總線,這與絕大部分引出外部總線的MCU的時(shí)序是不一樣的。本設(shè)計(jì)的LCD12864模塊中,用戶程序?qū)ζ溥M(jìn)行顯示控制時(shí),無非就是通過對LCD模塊內(nèi)部的驅(qū)動控制器當(dāng)中的寄存器進(jìn)行設(shè)置操作;最常用的如LCD的顯示開/關(guān)、操作顯存地址(行與列地址)的設(shè)置等。這些寄存器一般都在LCD模塊的驅(qū)動控制器文檔中有詳細(xì)介紹。 LCD驅(qū)動程序架構(gòu)LCD12864驅(qū)動程序主要由LCD底層驅(qū)動和LCD功能函數(shù)兩部分組成。用戶在應(yīng)用層直接使用功能函數(shù)即可。具體框架如圖3-3所示。功能函數(shù)層字庫驅(qū)動層函數(shù)聲

38、明功能函數(shù)LCD配置驅(qū)動層傳輸模式及IO端口配置數(shù)據(jù)傳輸驅(qū)動應(yīng)用層用戶應(yīng)用程序功能函數(shù)聲明圖 3-3 LCD驅(qū)動程序架構(gòu)Fig 3-3 LCD Driver architectures 俄羅斯方塊游戲設(shè)計(jì)3. 俄羅斯方塊游戲功能簡介俄羅斯方塊游戲的規(guī)則很簡單,當(dāng)方塊從屏幕上方落下來時(shí),玩家控制方塊的位置以及旋轉(zhuǎn)方塊,巧妙地安排布置達(dá)到充分利用屏幕空間的目的。每當(dāng)屏幕的一整行被方塊排滿時(shí),作為獎(jiǎng)賞,整行從屏幕上消失,剩余的方塊依次往下降一行。當(dāng)方塊堆積達(dá)到無法再落下方塊的時(shí)候,游戲結(jié)束。本設(shè)計(jì)中游戲主要的功能點(diǎn)包括:(1) 每4個(gè)小方塊可以組合成一組方塊群,游戲共有7種方塊群,每次隨機(jī)產(chǎn)生一種;

39、玩家使用向左、向右、快速向下這些按鍵控制方塊的位置,旋轉(zhuǎn)按鍵控制方塊順時(shí)針旋轉(zhuǎn)。在主控制手柄上還有退出、暫停按鈕,可以實(shí)現(xiàn)隨時(shí)切換到啟動時(shí)的狀態(tài)和暫停游戲的功能。(2) 在本設(shè)計(jì)中,系統(tǒng)為玩家提供了背景音樂,玩家可以根據(jù)個(gè)人喜好開啟或關(guān)閉音效。(3) 單人模式下,玩家使用主控制器進(jìn)行操作。每消去一行,系統(tǒng)就給玩家加1分。在單人模式下,如果積分超過系統(tǒng)記錄的最高積分,系統(tǒng)將更新最高積分。(4) 本設(shè)計(jì)的亮點(diǎn)是實(shí)現(xiàn)雙人對戰(zhàn)游戲,通過主控制器在菜單選項(xiàng)中選擇雙人模式,第二玩家可以通過副控制器對第二游戲界面進(jìn)行操作。本游戲系統(tǒng)規(guī)定,雙人對戰(zhàn)游戲中積分可分為兩個(gè)階段。第一階段是普通積分階段,即雙方玩家每

40、消去一行,其相應(yīng)積分表加1分;第二階段是多積分階段,即每消去三行才獲得1個(gè)積分。雙方先達(dá)到第二階段末尾者,即可取勝。同時(shí),該設(shè)計(jì)中還為雙方玩家增加了道具功能,即當(dāng)使用該功能時(shí),可令對手當(dāng)前移動圖塊消失,隨機(jī)出下一個(gè)圖塊。當(dāng)玩家一次性消去三行,就能獲得一次道具功能,最多一次性累積2個(gè)道具。系統(tǒng)默認(rèn)為每個(gè)玩家提供1個(gè)道具。這樣不僅豐富了俄羅斯方塊游戲的功能,而且使其更具趣味性。3. 系統(tǒng)界面的設(shè)計(jì)(1) 菜單選項(xiàng)界面當(dāng)玩家將本設(shè)計(jì)的作品上電啟動后,系統(tǒng)首先在LCD顯示器件上呈現(xiàn)一個(gè)動態(tài)的開機(jī)動畫。然后,系統(tǒng)提供三個(gè)功能選項(xiàng),即最高積分、游戲設(shè)置、開始游戲。其中,“游戲設(shè)置”選項(xiàng)包含了兩級子菜單。一

41、級菜單包括“模式選擇”和“音效選擇”。在這兩個(gè)選項(xiàng)后面給出單字提示,以說明當(dāng)前相應(yīng)設(shè)置選項(xiàng)的狀態(tài)。“模式選擇”菜單包含的二級子菜單有“單人模式”和“雙人模式”?!耙粜нx擇”菜單包含的二級子菜單有“開音效”和“關(guān)音效”通過控制按鍵即可設(shè)置成相應(yīng)狀態(tài)?!白罡叻e分”菜單選項(xiàng)為玩家提供單人模式下系統(tǒng)記憶的最高積分。如果選擇了“開始游戲”菜單選項(xiàng),則系統(tǒng)根據(jù)“游戲設(shè)置”選項(xiàng)中的設(shè)置啟動相應(yīng)的游戲界面。菜單選項(xiàng)界面框架如圖3-4所示。菜單功能界面框架最高積分游戲設(shè)置開始游戲模式選擇音效選擇單人模式雙人模式開音效關(guān)音效圖 3-4 菜單選項(xiàng)界面框架Fig 3-4 The menu option interfa

42、ce framework(2) 游戲操作界面首先,我們先來介紹單人模式下游戲界面的一些情況。在啟動單人模式后,LCD12864顯示屏分成兩屏,左半屏為俄羅斯方塊游戲地圖map區(qū),右半屏為俄羅斯方塊圖形預(yù)覽區(qū)和實(shí)時(shí)積分顯示區(qū)。其結(jié)構(gòu)框架如圖3-5所示。啟動單人模式左半屏圖形預(yù)覽游戲map區(qū)右半屏積分顯示圖 3-5 單人模式界面結(jié)構(gòu)框架Fig 3-5 The single-player game interface architecture其次,如果玩家啟動的是雙人模式,LCD12864顯示屏也分為兩屏,左屏由主控器操作,稱為map1區(qū),右屏由副控制器操作,稱為map2區(qū)。在兩屏中間是雙方積分顯示

43、區(qū)和各自的道具數(shù)量顯示區(qū)。其結(jié)構(gòu)框架如圖3-6所示。雙人模式雙方積分進(jìn)度條雙方道具使用情況積分和道具區(qū)Map2區(qū)map1區(qū)圖 3-6 雙人模式界面結(jié)構(gòu)框架Fig 3-6 Double mode interface architecture系統(tǒng)界面整體程序流程圖如圖3-7所示。NYYNNYYNY單人模式音效選擇模式選擇游戲設(shè)置雙人模式音效關(guān)音效開清模式標(biāo)志置模式標(biāo)志返回上一級清音效標(biāo)志置音效標(biāo)志返回上一級開機(jī)啟動動畫進(jìn)入主菜單顯示單人最高積分返回按鍵最高積分開始游戲進(jìn)入游戲游戲設(shè)置模式選擇音效選擇圖 3-7 開機(jī)界面功能框架Fig 3-7 Boot interface function fram

44、e 游戲系統(tǒng)“枚舉算法”概述本文繞開了澀難懂、比較復(fù)雜的“矩陣算法”,提出了另一種“枚舉算法”來實(shí)現(xiàn)這個(gè)經(jīng)典游戲。“枚舉算法”沒有復(fù)雜的數(shù)學(xué)理論、避免了在程序中大量使用矩陣運(yùn)算公式,設(shè)計(jì)思路清晰、明了,非常適合游戲設(shè)計(jì)的初學(xué)者理解和實(shí)現(xiàn)。所謂枚舉算法,就是直接枚舉出游戲中各圖塊的基本形狀和它們的旋轉(zhuǎn)形狀,然后控制每一種不同形狀的方塊在游戲戲中的產(chǎn)生、移動、旋轉(zhuǎn)、落下、填滿和清除等游戲過程。 俄羅斯方塊造型設(shè)計(jì)的方法眾所周知,俄羅斯方塊一般有七種基本形狀,每個(gè)基本形狀都由4個(gè)正方形的小方塊構(gòu)成。利用小方塊不同的擺放位置,可產(chǎn)生19種旋轉(zhuǎn)型圖塊。這七種圖形分別是“I型”、“L型”、“反L型”、“Z

45、型”、“反Z型”、“口型”、“T型”。如圖3-8所示。I型L型反L型T型Z型反Z型口型圖 3-8 方塊模型Fig 3-8 Square model本系統(tǒng)在構(gòu)造19個(gè)方塊模型時(shí)的思路是:定義一個(gè)數(shù)組,用以存儲各個(gè)模型中4個(gè)小方塊的頂點(diǎn)坐標(biāo)。比如L型,其數(shù)據(jù)結(jié)構(gòu)為0,0,0,4,0,8,4,8。其中,每兩個(gè)數(shù)據(jù)為一個(gè)小正方形的列、行坐標(biāo),如圖 3-9所示。由圖可知,整個(gè)界面的坐標(biāo)原點(diǎn)在左上角,分別向右、向下作為橫軸的正方向和縱軸的正方向。圖中每一格代表了LCD12864中的連續(xù)四行,第1格的坐標(biāo)是(0,0);第2格的坐標(biāo)是(0,4);第3格的坐標(biāo)是(0,8);第4格的坐標(biāo)是(4,8);其它圖塊也按

46、此方法編輯數(shù)組內(nèi)容。2341圖 3-9 L型Fig 3-9 L Shape 隨機(jī)產(chǎn)生俄羅斯方塊的方法(1) 產(chǎn)生隨機(jī)數(shù)的理論依據(jù)為了實(shí)現(xiàn)隨機(jī)落下各類方塊圖形,游戲過程序中必須抽取隨機(jī)數(shù)來確定方塊的類型。隨機(jī)數(shù)是一個(gè)既簡單又復(fù)雜的問題。本設(shè)計(jì)采用眾所周知的線性疊加法,雖然沒有完美的方法產(chǎn)生隨機(jī)數(shù),不過線性疊加法是一個(gè)合適的方法,它徹底解決了8位機(jī)隨機(jī)數(shù)的問題。如果從一個(gè)足夠長的數(shù)字序列中的某一個(gè)點(diǎn)取出一邊串的數(shù)字,那么這些數(shù)字就看似隨機(jī)。這個(gè)開始的點(diǎn)(數(shù)字)叫做種子。如果從相同的點(diǎn)(種子)開始,將會得到相同的數(shù)字,這是因?yàn)槲覀兪菑墓潭ǖ男蛄兄腥?shù)字(所以叫偽隨機(jī))。但這卻是一個(gè)有用的特性,我們可

47、以每次從不同的點(diǎn)取數(shù),即改變種子,從而可以實(shí)現(xiàn)真正的隨機(jī)。(2) “線性疊加法”的概況“線性疊加法”其實(shí)只涉及二個(gè)內(nèi)容即:乘法和加法。只需三個(gè)步驟即:第一,為了取得新的種子,舊的種子與一個(gè)常數(shù)A相乘;第二,所得的結(jié)果和第二個(gè)常數(shù)C相加;第三,新的種子就是第二步結(jié)果的低32位。保留低32位很重要,用來獲得下一個(gè)種子。計(jì)算公式為: 種子 = A * 種子 + C (3-1)此公式在幾何圖中表示為一條直線,而且新種子由舊種子反復(fù)相加得來,所以叫線性疊加。隨機(jī)函數(shù)的關(guān)鍵在于選擇優(yōu)秀的“常數(shù)A”(也叫乘數(shù)A),其實(shí)也就是選擇了一個(gè)固定的數(shù)字序列?!俺?shù)C”,不像乘數(shù)A那樣重要,但是一定是個(gè)奇數(shù)。事實(shí)上,

48、C可選1。因?yàn)槠鏀?shù)(舊的種子)乘奇數(shù)(乘數(shù)A)是奇數(shù),再加奇數(shù)(常數(shù)C)將會是一個(gè)偶數(shù)學(xué)偶數(shù)(舊的種子)乘奇數(shù)(乘數(shù)A),加奇數(shù)(常數(shù)C)將會是一個(gè)奇數(shù)。如此種子會在奇數(shù)和偶數(shù)之間轉(zhuǎn)變。因?yàn)榉N了的變化足夠隨機(jī),所以種子的值可以作為8位或16位隨機(jī)數(shù)。(3) Keil C51中“線性疊加法”的實(shí)現(xiàn)方法在Keil C51中生成偽隨機(jī)數(shù)需要用到兩個(gè)函數(shù),一個(gè)是srand(unsigned int seed),一個(gè)是rand()。首先給srand(unsigned int seed)提供一個(gè)種子,該種子為unsigned int類型,其取值范圍從0到65536,srand(unsigned int s

49、eed)根據(jù)這個(gè)種子會由上述特定的公式生成一個(gè)隨機(jī)數(shù)序列;然后調(diào)用rand(),它會依次從這個(gè)序列中返回一個(gè)數(shù),其值在0 到32767之間。因隨機(jī)數(shù)函數(shù)rand()函數(shù)實(shí)際上是線性隨機(jī)的,如果在不指定srand(unsigned int seed)的種子的情況下,它每次都使用默認(rèn)的種子,因此生成的序列會是同一個(gè),所以會取到相同的數(shù)字序列。這可能會導(dǎo)致每次重新運(yùn)行游戲時(shí)其隨機(jī)數(shù)結(jié)果都是一樣的。為了解決該問題,本設(shè)計(jì)在玩家進(jìn)入游戲時(shí)讀取按鍵按下瞬間定時(shí)器T0的計(jì)數(shù)值,作為srand(unsigned int seed)的種子。從而實(shí)現(xiàn)真正的隨機(jī)。(4) 隨機(jī)數(shù)程序流程圖如圖3-10為隨機(jī)數(shù)程序流程

50、圖。srand(unsigned int seed)產(chǎn)生一數(shù)據(jù)序列開始游戲讀取T0計(jì)數(shù)值作為seedrand()將返回值進(jìn)行處理后選擇相應(yīng)的方塊數(shù)組圖 3-10 隨機(jī)數(shù)程序流程圖Fig 3-10 Ramdom process flow program diagram3.3.6 俄羅斯方塊平移的實(shí)現(xiàn)方法 方塊產(chǎn)生后,需要用全局變量來保存方塊在游戲map區(qū)中的行坐標(biāo)和列坐標(biāo)。方塊的平移包括左移和右移兩種情況,無論那種情況都要首先進(jìn)行合法性判斷。(1) 俄羅斯方塊平移特性在本設(shè)計(jì)中規(guī)定當(dāng)按下一次左移或右移按鍵時(shí),map區(qū)中的當(dāng)前圖塊就左移或右移一個(gè)正方形的寬度。而一個(gè)小正方形的寬度,則對應(yīng)著LCD1

51、2864中的4列。(2) 平移合法性判斷 平移的合法性判斷經(jīng)較簡單,只需判斷它旁邊相鄰位置是否被填充即可。(3) 平移算法的實(shí)現(xiàn)在程序中,當(dāng)有任意一個(gè)平移按鍵被按下時(shí),系統(tǒng)接收到信號,然后調(diào)用平移函數(shù)進(jìn)行判斷其合法性,得到該函數(shù)的返回值為1后,再進(jìn)行平移操作。其程序流程如圖3-11所示。返回1返回1返回0YYNN左移按鍵被按下right_left_judge函數(shù)列變量f_x減4行不變右移按鍵被按下列變量f_x加4行不變r(jià)ight_left_judge函數(shù)將圖塊左移一格將圖塊右移一格圖 3-11 平移算法流程圖Fig 3-11 Translation algorithms flowchart3.

52、3.7 俄羅斯方塊旋轉(zhuǎn)的實(shí)現(xiàn)方法(1) 俄羅斯方塊旋轉(zhuǎn)圖形概況方塊旋轉(zhuǎn)是一個(gè)游戲?qū)崿F(xiàn)的關(guān)鍵問題,實(shí)現(xiàn)旋轉(zhuǎn)的數(shù)學(xué)方法有多種,如矩陣變換法、枚舉法、索引法等。本文前面已經(jīng)論述了此次設(shè)計(jì)采用枚舉的方法,對19種俄羅斯方塊造型進(jìn)行構(gòu)造。游戲過程中,每一種基本方塊都要做旋轉(zhuǎn)控制,于是就產(chǎn)生了旋轉(zhuǎn)后的方塊形狀,本文將其稱為“旋轉(zhuǎn)型”?;拘椭械摹癐型”,只有一種旋轉(zhuǎn)型,即由豎直旋轉(zhuǎn)90度后成為水平。因此,基本型加上一種旋轉(zhuǎn)型,共有兩種形狀?;拘椭械摹癓型”和“反L型”有三種旋轉(zhuǎn)型,將它按順時(shí)針每旋轉(zhuǎn)一個(gè)90度就產(chǎn)生一種旋轉(zhuǎn)型,可以旋轉(zhuǎn)三次,得到三種不同的旋轉(zhuǎn)型,因此,它的三種旋轉(zhuǎn)型加上其基本型,“L型”

53、和“反L型”方塊分別有四種形狀?;拘椭小癦型”和“反Z型”可以順時(shí)針旋轉(zhuǎn)一次90度,加上他們的基型分別有兩種形狀。基本型中的“T型”有三種旋轉(zhuǎn)型,將他按順時(shí)針旋轉(zhuǎn)一個(gè)90度就產(chǎn)生一種旋轉(zhuǎn)型,它可以旋轉(zhuǎn)三次,得到三種不同的旋轉(zhuǎn)型,因此,它的三種旋轉(zhuǎn)型加上其基本型,“T型”方塊共有四種形狀?;拘椭械摹翱谛汀狈綁K沒有旋轉(zhuǎn)型,在游戲中只有一種形狀。綜上所述,七種基本型方塊,因旋轉(zhuǎn)產(chǎn)生了不同的旋轉(zhuǎn)型,這些旋轉(zhuǎn)型加上他們的基本型,整個(gè)游戲中,共有19種不同的方塊形狀。本設(shè)計(jì)實(shí)現(xiàn)旋轉(zhuǎn)操作的具體方法,可分為兩類,一類是I型的旋轉(zhuǎn)策略;另一類則是其余17種基本型的旋轉(zhuǎn)策略。(2) 旋轉(zhuǎn)合法性判斷方塊做順時(shí)針

54、旋轉(zhuǎn),每次旋轉(zhuǎn)90度。本設(shè)計(jì)規(guī)定只要旋轉(zhuǎn)后到達(dá)的地方未被填允,方塊就可以進(jìn)行旋轉(zhuǎn)操作。(3) I型的旋轉(zhuǎn)策略為了在視覺上實(shí)現(xiàn)I型的順時(shí)針旋轉(zhuǎn),本設(shè)計(jì)采用位置錯(cuò)落的方式來實(shí)現(xiàn)。其具體過程如圖3-12所示。 圖 3-12 I型的旋轉(zhuǎn)方法Fig 3-12 The rotation method of I shape當(dāng)落下的圖塊是圖所示時(shí),其旋轉(zhuǎn)周期為 。當(dāng)落下的圖塊是圖所示時(shí),其旋轉(zhuǎn)周期為 。 之所以把I型的旋轉(zhuǎn)變換單獨(dú)拿出來討論,是因?yàn)镮型只有基本型和旋轉(zhuǎn)型共兩種圖塊。如果在當(dāng)前位置直接按這兩種圖塊的坐標(biāo)數(shù)組進(jìn)行圖形切換,則無法實(shí)現(xiàn)順時(shí)針旋轉(zhuǎn)的視覺效果。所以,在旋轉(zhuǎn)處理程序中,當(dāng)要旋轉(zhuǎn)的當(dāng)前圖塊為

55、I型及其旋轉(zhuǎn)型時(shí),就要改變當(dāng)前列、行這兩個(gè)全局變量的值。(4) 其余17種基本型的旋轉(zhuǎn)策略除了I型的旋轉(zhuǎn)比較復(fù)雜外,其余17種類型的方塊只需按各自旋轉(zhuǎn)的順序在當(dāng)前位置用已經(jīng)編輯好的坐標(biāo)數(shù)組來實(shí)現(xiàn)旋轉(zhuǎn)即可。具體程序流程如圖3-13所示。NYYYNNYN按下旋轉(zhuǎn)鍵是否是I型、一型判斷方塊經(jīng)過了幾次旋轉(zhuǎn)判斷新位置是否可寫判斷是哪類圖塊I型及其旋轉(zhuǎn)型其它17種類型根據(jù)上述判斷的結(jié)果決定當(dāng)前位置行、列坐標(biāo)的增減進(jìn)行旋轉(zhuǎn)變換是否是I型、一型以外的其它類型按照已經(jīng)排列好的變換順序取坐標(biāo)數(shù)據(jù)恢復(fù)原先坐標(biāo)圖 3-13 旋轉(zhuǎn)程序流程圖Fig 3-13 Rotating program flowchart 俄羅斯方

56、塊下移的實(shí)現(xiàn)方法 在整個(gè)游戲過程中,方塊是不斷向下運(yùn)行的,其下移特性為:方塊每次下移的格數(shù)對應(yīng)著LCD12864屏幕中的一行。具體程序?qū)崿F(xiàn)流程如圖3-14所示。YNYNYN進(jìn)入下移判斷程序讀取下移一行后每個(gè)小方塊的行列坐標(biāo)判斷每個(gè)小方塊的行在LCD顯示區(qū)中的哪一頁上半頁下半頁是否可寫標(biāo)志加1標(biāo)志是否為4程序返回1是否循環(huán)了4次程序返回0圖 3-14 下移判斷程序流程圖Fig 3-14 Moves down judgment program flowchart 滿行檢測及消行功能的實(shí)現(xiàn)方法 隨著方塊的不斷累積,方塊每次下落到不能再運(yùn)動時(shí),系統(tǒng)就會檢測游戲map區(qū),當(dāng)檢測到map區(qū)中某一行堆積滿后

57、,系統(tǒng)就消去此行,作為獎(jiǎng)勵(lì),其上方的方塊群則依次下落一行。系統(tǒng)滿行檢測和消行功能是通過“滿行檢測及消行”函數(shù)實(shí)現(xiàn)的,即在每個(gè)圖塊落定和下一個(gè)圖塊未出來之前,按頁掃描游戲map區(qū),每半頁算一行。若檢測到某行被填滿,則消去此行,并將其上方的圖塊往下移動相應(yīng)的行數(shù)。具體程序?qū)崿F(xiàn)流程如圖3-15所示。YNYNYN某一方塊已落定進(jìn)入滿行檢測程序,頁標(biāo)志n=7從第n頁開始檢測檢測當(dāng)前頁的下半頁是否滿行消除此行,其上方塊依次下落一行檢測當(dāng)前頁的上半頁是否滿行消除此行,其上方塊依次下落一行n減1是否是第0頁退出圖 3-15 滿行檢測程序流程Fig 3-15 Full line detection proces

58、ses3.3.10 游戲積分的計(jì)算方法在游戲系統(tǒng)中,積分體現(xiàn)了玩家在此次游戲中的操作情況。本游戲系統(tǒng)分單人模式和雙人模式兩種積分計(jì)算方式。單人模式下,玩家每消去一行,就能獲得1個(gè)積分,如果當(dāng)前游戲積分超過系統(tǒng)記錄的單人最高游戲積分,則系統(tǒng)將更新記錄,以便其他玩家挑戰(zhàn)。雙人模式下,雙方的積分制度是一樣的,以進(jìn)度條的方式展示在積分與道具區(qū)。其中積分區(qū)分為兩個(gè)階段,第一階段每消去1行進(jìn)度條向上走一格,共8個(gè)進(jìn)度格;第二階段每累計(jì)消去3行進(jìn)度條才向上增加一格,共6個(gè)進(jìn)度格。雙方誰先到達(dá)進(jìn)度條的頂端就算勝利。當(dāng)一次性同時(shí)消去3行時(shí),則能獲得一個(gè)道具功能的使用權(quán)。最多能累積兩個(gè)道具。具體程序?qū)崿F(xiàn)流程如圖3

59、-16所示。NYYNYNYNYN消去一行當(dāng)前積分加1是否大于最高紀(jì)錄存儲當(dāng)前積分退出單人模式下雙人模式下增加n分,消去n行消去n行?n0n=3?增加1道具道具是否小于2個(gè)?增加1道具進(jìn)度是否到頂?結(jié)束所有進(jìn)程返回游戲圖 3-16 積分系統(tǒng)程序流程圖Fig 3-16 Score system program flowchart3.4 雙人俄羅斯方塊游戲設(shè)計(jì) RTX51 Tiny簡介許多微處理器應(yīng)用程序要求同時(shí)執(zhí)行多個(gè)任務(wù)。對于這樣的應(yīng)用程序,一個(gè)實(shí)時(shí)操系統(tǒng)(RTOS)允許靈活的分配系統(tǒng)資源(中央處理器、存儲器等)給各個(gè)任務(wù)。RTX51它可以運(yùn)行于所有的8051派生機(jī)型,是一個(gè)很好使用的強(qiáng)大的準(zhǔn)并

60、行實(shí)時(shí)操作系統(tǒng)。RTX51可以簡化那些復(fù)雜而且時(shí)間要嚴(yán)格的工程軟件設(shè)計(jì)工作。有兩個(gè)不同的RTX51版本可以利用:RTX51 Full和RTX51 Tiny。二者的主要區(qū)別是前者是可以強(qiáng)占(或者說可剝奪的)系統(tǒng)而后者是不可以強(qiáng)占的(不可剝奪的)。RTX51 Full版本是完整版,它使用四個(gè)任務(wù)優(yōu)先級來完成,同時(shí)存在時(shí)間片輪轉(zhuǎn)調(diào)度和搶先的任務(wù)切換。RTX51 Full工作在與中斷功能相似的狀態(tài)下,信號和信息可以通過郵箱系統(tǒng)在任務(wù)之間互相傳遞。程序員可以從一存儲池中分配和釋放內(nèi)存,也可以強(qiáng)迫一個(gè)任務(wù)等待中斷、超時(shí)或者是從另一個(gè)任務(wù)或中斷發(fā)出的信號或信息。而本游戲系統(tǒng)采用的RTX51 Tiny是RTX

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論