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

下載本文檔

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

文檔簡介

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

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

3、51處理器的rtx51 tiny多任務實時操作系統(tǒng)。重點從軟件工程角度論述了俄羅斯方塊模型構(gòu)造,圖形旋轉(zhuǎn),坐標變換,雙人游戲中多任務實時操作的設計法方,以及背景音樂的處理等技術(shù)。同時,該設計的獨創(chuàng)性是在8051系列單片機中使用操作系統(tǒng)實現(xiàn)了雙人游戲和音效的添加。關鍵詞:單片機;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目 錄摘 要iabstractii1 緒 論11.1 課題背景11.2 課題的主要研究內(nèi)容11.3 課題的研究現(xiàn)狀及意義12 系統(tǒng)硬件平臺設計22.1 stc12c5a60s2單片機概述22.2 stc12c5a60s2

7、最小系統(tǒng)32.3 電源系統(tǒng)32.4 振蕩電路32.5 復位系統(tǒng)42.6 程序下載系統(tǒng)52.7 音樂播放系統(tǒng)62.8 lcd液晶顯示接口電路62.9 操作控制接口73 系統(tǒng)軟件平臺構(gòu)建83.1 vision簡介83.2 lcd12864液晶屏顯示原理83.2.1 lcd模塊總線選擇及時序83.2.2 lcd顯示ram區(qū)映射概況93.2.3 lcd的驅(qū)動方法103.2.4 lcd驅(qū)動程序架構(gòu)103.3 俄羅斯方塊游戲設計113.3.1 俄羅斯方塊游戲功能簡介113.3.2 系統(tǒng)界面的設計123.3.3 游戲系統(tǒng)“枚舉算法”概述143.3.4 俄羅斯方塊造型設計的方法153.3.5 隨機產(chǎn)生俄羅斯方

8、塊的方法153.3.6 俄羅斯方塊平移的實現(xiàn)方法173.3.7 俄羅斯方塊旋轉(zhuǎn)的實現(xiàn)方法183.3.8 俄羅斯方塊下移的實現(xiàn)方法203.3.9 滿行檢測及消行功能的實現(xiàn)方法213.3.10 游戲積分的計算方法223.4 雙人俄羅斯方塊游戲設計243.4.1 rtx51 tiny簡介243.4.2 rtx51 tiny的內(nèi)核分析243.4.3 游戲開發(fā)環(huán)境的配置273.4.4 雙人單機對戰(zhàn)模式的實現(xiàn)流程283.5 系統(tǒng)背景音樂的設計283.5.1音樂的設計原理283.5.2 音樂播放的實現(xiàn)方法303.5.3 音效程序流程303.6 系統(tǒng)主程序流程圖314 產(chǎn)品功能說明與系統(tǒng)性能測試324.1 產(chǎn)

9、品功能說明324.2 系統(tǒng)性能測試335 結(jié)束語33參考文獻35致 謝1 緒 論1.1 課題背景如今,計算機系統(tǒng)的發(fā)展已明顯地朝三個方向發(fā)展,這三個方向就是:巨型化,單片化,網(wǎng)絡化。對于解決復雜計算和高速數(shù)據(jù)處理的問題仍然是巨型機在起作用,因而,目前巨型機正在朝高速及高處理能力的方向發(fā)展。單片機在出現(xiàn)時intel公司就給其單片機取名為嵌入式微控制器4。單片機的最明顯的優(yōu)勢,就是可以嵌入到各種儀器、設備中。這一點是巨型機和網(wǎng)絡不可能做到的。單片機在內(nèi)部已集成了趆來趆多的部件,這些部件包括一般常用的電路,例如:定時器,比較器,eeprom,d/a轉(zhuǎn)換器,串行通信接口,watchdog電路等。 同時

10、,俄羅斯方塊是一款風靡全球的電視游戲機和掌上游戲機游戲,目前在網(wǎng)絡單機游戲和kele8等上都有它的身影。而它曾經(jīng)造成的轟動與經(jīng)濟價值可以說是游戲史上一件大事。因此,對它的研究,無論從技術(shù)上,還是社會意義上看都是很有價值的。單片機在游戲上的應用是具有非常大的潛力的,它能將游戲帶入到另一個階段。此次設計僅僅是為了舉一個單片機在游戲應用方面的簡單例子,它可以很好的說明單片機功能的強大,體現(xiàn)其更高的可控性和高集成度的好處,因此它可以在電子游戲方面成為一個不可計量的明日之星。1.2 課題的主要研究內(nèi)容本課題研究和實現(xiàn)了基于8051+rtx51到tiny平臺下的智能俄羅斯方塊游戲系統(tǒng)。主要研究內(nèi)容是實現(xiàn)智

11、能俄羅斯方塊游戲系統(tǒng)軟硬件平臺的搭建;本系統(tǒng)以8051微處理器為核心來運行rtx51 tiny多任務實時操作系統(tǒng),利用keil c51開發(fā)工具進行軟件開發(fā),通過lcd12864液晶屏顯示游戲界面。該設計能實現(xiàn)單人單機游、雙人單機對戰(zhàn)游戲、游戲背景音樂的播放和單人最高積分存儲等功能。在俄羅斯方塊游戲系統(tǒng)開發(fā)過程中,本文作者首先進行硬件平臺的搭建,包括單片機最小系統(tǒng)的搭建、電源系統(tǒng)的搭建、串口下載器的設計、游戲手柄的設計、音效播放模塊的設計以及l(fā)cd液晶顯示接口的設計。然后,作者才開展軟件平臺的構(gòu)建,這也是本設計的重要部分,主要包括對rtx51 tiny操作系統(tǒng)的配置、俄羅斯方塊模型的設計、模型圖

12、塊的旋轉(zhuǎn)及坐標變換設計、雙人單機對戰(zhàn)游戲設計和音效系統(tǒng)設計等。最后,從硬件和軟件兩方面對完成的智能俄羅斯方塊游戲系統(tǒng)進行調(diào)試及運行試驗。1.3 課題的研究現(xiàn)狀及意義現(xiàn)今國內(nèi)外的俄羅斯方塊游戲設計主要有基于pc機上windows平臺的俄羅斯方塊游戲、基于手機平臺的智能俄羅斯方塊游戲以及基于單片機平臺的俄羅斯方塊游戲等。前兩種屬于高端游機,性能優(yōu)越,但成本高,而且計算機編程已不是新命題,vb、vc、delphi版本的俄羅斯方塊游戲都有發(fā)布9。從學術(shù)角度來看,針對俄羅斯方塊游戲的開發(fā),國內(nèi)外也有不少學者展開過研究,比如niko將進化算法引入到俄羅斯方塊中并驗證了其有效性,hoogeboom探討了俄羅

13、斯方塊游戲的構(gòu)造問題,王宇等針對存在于俄羅斯方塊中的兩個數(shù)學問題提出解決方案,高凌琴探討游戲功能要求、數(shù)據(jù)結(jié)構(gòu)、圖形旋轉(zhuǎn)、坐標變換等關鍵技術(shù),胡代弟在spce061a單片機實現(xiàn)了俄羅斯方塊游戲10。綜上,國內(nèi)外的研究多著重于游戲數(shù)學原理的討論,也有部分文獻涉及游戲的具體實現(xiàn),但多是在windows操作系統(tǒng)下實現(xiàn)的,在單片機平臺下的開發(fā)俄羅斯方塊游戲鮮少有文獻刊載。而單片機由于具有體積小、性能突出、價格低廉等特點,應用領域不斷擴大,除了工業(yè)控制、智能化儀表、家用電器外,在智能化高檔電子玩具產(chǎn)品也大量采用單片機芯片作為核心控制部件。曾經(jīng)80年代非常流行的掌上游戲機便是單片機在電子玩具中的應用之一,

14、其中的俄羅斯方塊游戲現(xiàn)已被我們所熟知。本文探討基于8051單片機硬件平臺和rtx51 tiny多任務實時操作系統(tǒng)的俄羅斯方塊游戲的設計與實現(xiàn),將理論與實踐相結(jié)合。其主要目標是再現(xiàn)經(jīng)典的俄羅斯方塊游戲,并在此基礎上實現(xiàn)雙人單機對戰(zhàn)游戲模式,以豐富產(chǎn)品功能,增強游戲的趣味性。2 系統(tǒng)硬件平臺設計2.1 stc12c5a60s2單片機概述stc12c5a60s2系列單片機是宏晶科技生產(chǎn)的單時鐘/機器周期(1t)的單片機,是高速、低功耗、超強抗干擾的新一代8051系列單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快812倍。用戶程序空間為60kb,片上集成1280字節(jié)ram,具有eeprom功能,能夠額

15、外儲蓄1kb的數(shù)據(jù)。該單片機共有4個16位定時器,兩個與傳統(tǒng)8051兼容的定時器/計數(shù)器,即16位定時器t0和t1,沒有定時器2,但有獨立波特率發(fā)生器做串行通訊的波特率發(fā)生器,再加上2路pca模塊可由t0的溢出在p3.4/t0輸出時鐘,可由t1的溢出在p3.5/t1輸出時鐘,此兩路可編程計數(shù)器陣列(pca)可用來再實現(xiàn)2個定時器。此外,stc12c5a60s2內(nèi)部還集成max810專用復位電路,2路pwm,8路高速度10位a/d轉(zhuǎn)換(250k/s),針對電機控制,強干擾場地合。綜上所述,stc12c5a605s2單片機具有許多強大的功能,能夠滿足大多數(shù)用戶對8位單片機的要求。2.2 stc12

16、c5a60s2最小系統(tǒng)單片機最小系統(tǒng)主要由電源、振蕩、復位電路以及擴展電路等部分組成。在本設計中,擴展了液晶顯示接口。因此,本設計的最小系統(tǒng)如圖2-1所示。圖 2-1 stc12c5a60s2最小系統(tǒng)fig 2-1 stc12c5a60s2 minimum system2.3 電源系統(tǒng)本設計的電源系統(tǒng)比較簡單,直接由lm7805穩(wěn)壓芯片輸出的+5v電源供電。具體電路如圖2-2所示。圖片2-2 電源系統(tǒng)fig 2-2 power system2.4 振蕩電路單片機系統(tǒng)里都有振蕩電路,在單片機系統(tǒng)里晶振作用非常大,全稱叫晶體振蕩器,它結(jié)合單片機內(nèi)部電路產(chǎn)生單片機所需的時鐘頻率,單片機晶振提供的時鐘

17、頻率趆高,那么單片機運行速度就趆快,單片機的一切指令執(zhí)行都是依靠單片機晶振提供的時鐘頻率。4晶振通常與鎖相環(huán)電路配合使用,以提供系統(tǒng)所需的時鐘頻率。本設計中stc12c5a60s2使用12mhz的晶體振蕩器作為振蕩源,由于單片機內(nèi)部帶有振蕩電路,所以外部只要連接一個晶振和兩個電容即可,電容容量一般在15pf至50pf之間。如圖2-3所示即為本設計的振蕩電路。圖 2-3 振蕩電路fig 2-3 oscillatory circuit2.5 復位系統(tǒng) mcs51單片機通常采用上電自動復位和按鈕復位兩種方式。通常因為系統(tǒng)運行等需要,常常需要人工復位,本設計采用按鈕復位的方式,即按下開關一定時間就能使

18、rts引腳端為高電平,從而使單片機復位。同時,簡單復位電路中,干擾信號易串入復位端,由此可能會引起內(nèi)部某些寄存器錯誤復位,這時可在rst引腳上接去耦電容。在stc12c5a60s2單片機中有兩個復位端口,即rst/p4.7、rst2/p4.6,當晶振頻率小于或等于12mhz時,使用rst端口。由于本設計使用外接12mhz的晶振作為振蕩時鐘,所以采用如圖2-4所示的復位系統(tǒng)。圖 2-4 復位系統(tǒng)fig 2-4 rest system2.6 程序下載系統(tǒng)單片機系統(tǒng)的傳統(tǒng)編程方式是先將單片機從電路板上取下,放入專用的編程器進行編程,再放入電路板進行調(diào)試。其缺點是頻繁拔插器件容易損壞器件的引腳;如果頻

19、繁的調(diào)試程序,必須重復拔插,大降低了開發(fā)效率。isp(在線系統(tǒng)編程)技術(shù)是一種無需將存儲芯片從嵌入式設備上取出就能對其進行編程的過程。其優(yōu)點是,即使器件焊接在電路板上,仍可對其進行編程。在線系統(tǒng)可編程是flash存儲器的固有特性(通常無需額外電路),flash幾乎都采用這種方式編程。isp的實現(xiàn)相對要簡單一些,一般通用做法是內(nèi)部的存儲器可以由上位機的軟件通過串口來進行改寫。對于8051系列單片機來講可通過spi接口或其它的串行接口接收上位機傳來的數(shù)據(jù)并寫入存儲器中。而上位機pc機與下位機單片機通過rs-232串行接口總線進行的串行通信。8051系列單片機帶有一個全雙工的串行接口,因此用rs-2

20、32串行接口總線非常方便。pc機配置rs-232標準接口,rs-232信號電平為負邏輯(邏輯“0”為+12v ;邏輯“1”為-12v),8051單片機輸入、輸出電平為ttl電平(邏輯“0”為小于等于0.5v;邏輯“1”為大于等于2.4v)。所以8051單片機與pc機間點對點異步通信需加電平轉(zhuǎn)換電路,否則將燒壞ttl電路。max232是maxim公司生產(chǎn)的電平轉(zhuǎn)換器件,只需在外部接入相應的電解電容即可。因此,本設計采用直連串口線進行串口通信,其中stc12c5a60s2的p30/rxd和p31/txd分別和下載器的第10管腳/t和第9管腳/r相連,串口線的第5管腳接地,2、3管腳和下載器的7、8

21、管腳相連。具體電路如圖2-5所示。圖 2-5 程序下載系統(tǒng)fig 2-5 program download system2.7 音樂播放系統(tǒng)在本設計中,音樂播放系統(tǒng)是通過三極管驅(qū)動有源蜂鳴器發(fā)聲,而具體的音符聲調(diào)則由程序控制。因此,音樂播放系統(tǒng)的硬件電路非常簡單。具體接法為有源蜂鳴器正極直接接+5v電源,負極與三極管8050的發(fā)射極相連,8050的集電極直接接地,其基極串一個1k的電阻連接到stc12c5a60s2單片機的p20端口。如圖2-6所示。圖片2-6 音樂播放系統(tǒng)fig 2-6 music player system2.8 lcd液晶顯示接口電路 液晶顯示屏是整個系統(tǒng)硬件的重要組成部

22、分,擔當著人機交互的重要角色。本設計采用銘正同創(chuàng)公司生產(chǎn)的mzl02d-12864液晶點陣屏作為顯示器件。它是一塊128*64點陣的lcd顯示模組,模組上的lcm采用cog技術(shù)將控制(包括顯存)、驅(qū)動器集成在lcm的玻璃上,接口簡單、操作方便。其特點為單電源供電,對比度編程可調(diào),可采用并行接口為6800/8080時序或者串行spi的mpu接口方式,整塊液晶屏由3.3v的白色led背光,美觀大方。其外部接口分為電源端口、數(shù)據(jù)端口和命令端口三部分組成。本設計中l(wèi)cd的數(shù)據(jù)端口連接到stc12c5a60s2單片機的p0端口,lcd的命令端口連接到單片機的p2端口。具體硬件電路如圖2-7所示。圖 2-

23、7 lcd液晶顯示接口電路fig 2-7 liquid display interface circuit2.9 操作控制接口操作控制模塊是智能俄羅斯方塊游戲系統(tǒng)的輸入器件。它包括主控制器和輔助控制器。主控制器包括七個按鍵,分別為:旋轉(zhuǎn)/確定、向左/返回上級菜、向右/下一個、快速下降、使用道具、暫停、退出。副控制器則包括五個按鍵,分別為:旋轉(zhuǎn)/確定、向左/返回上級菜、向右/下一個、快速下降、使用道具。在硬件電路方面輔控制器比主控制器少兩個按鍵的連接。如圖2-8所示為主控制器的接線圖。與單片機的具體接口可根據(jù)實際設定。圖片2-8 控制模塊接口fig 2-8 control interface 3

24、 系統(tǒng)軟件平臺構(gòu)建3.1 vision簡介vision是德國keil公司開發(fā)的單片機ide軟件,最初主要用于8051系列單片機,目前也有支arm系列單片機的專用版本mdk-arm。本設計使用的是keil vision3版本的開發(fā)軟件進行程序開發(fā)。3.2 lcd12864液晶屏顯示原理3.2.1 lcd模塊總線選擇及時序 mzl02d模塊提供了兩個lcm的引腳(c86和ps引腳)供用戶選擇模塊的接口類型,分別可以選擇6800并行總線、8080并行總線或者spi串行接口。模塊默認情況下ps為高電平、c86為高電平,此時為6800總線接口類型,本設計采用6800總線模式。在此種接口模式下,wr 線為

25、讀寫控制信號線,當wr 為高電平時為讀狀態(tài),wr為低電來時為寫入狀態(tài)。在6800總線接口模式下lcd的時序如圖3-1所示。圖 3-1 6800總線時序fig 3-1 6800 bus timing3.2.2 lcd顯示ram區(qū)映射概況驅(qū)動控制芯片的顯示ram區(qū)中,每個byte的數(shù)據(jù)對應屏上的點的排列方式為:縱向排列,低位在上高位在下;如圖3-2所示。mzl02d-12864液晶顯示模組的顯示器上的顯示點與驅(qū)動控制芯片中的顯示緩存ram是一一對應的;共有65(8page * 8bit + 1)*132個位的顯示ram區(qū)。而顯示器的顯示點陣大小為64*128點,所以實際上在液晶顯示模塊中有用的顯示

26、ram區(qū)為64*128個位;按byte為單位劃分,共分為8個page,每個page為8行,而每一行為128個位。(即128列)。圖 3-2 字節(jié)數(shù)據(jù)排列情況fig 3-2 byte data arrangementmzl02d-12864液晶顯示模塊的顯示屏上的每一個點都對應有控制器片內(nèi)的顯示緩存ram中的一個bit,顯示屏上64*128個點分別對應著顯示ram的8個page,每一個page有128個byte的空間。因此可知顯示ram區(qū)中的一個page空間對應8行的點,而該page中的一個byte數(shù)據(jù)則對應一列(8個點)。用戶如要點亮lcd屏上的某一個點時,實際上就是對該點所對應的顯示ram區(qū)

27、中的某一個位進行置1操作,所以就要確定該點所處的行地址、列地址。mzl02-12864液晶顯示模組的行地址實際上就是page的信息,每一個page應有8行;而列地址則表示該點的橫坐標,在屏上為從左到右排列,page中的一個byte對應的是一列(8行,即8個點),達128列??梢愿鶕?jù)這樣的關系在程序中控制lcd顯示屏的顯示。3.2.3 lcd的驅(qū)動方法在很多資料以及書籍當中,通常介紹有兩種 lcd模塊的連接方法:直接控制和間接控制;直接控制實際指的是 lcd模塊的總線接口直接與mcu端口連接,然后 mcu 通過程序控制端口來模擬 lcd的總線時序來完成對其的控制操作;而間接控制指的是mcu本身就

28、有外部總線拉出,與lcd的總線接口對應的連接上,程序中直接操作總線以控制lcd。目前有很多mcu 都把總線密封起來了,都沒有引出外部總線;所以通常在用mcu控制lcd模塊時,時常會選擇直接控制的方式,即利用端口來模擬總線時序;當然了,如果本身就有總線而且也與lcd模塊的總線配得上的話,肯定會使用總線連接的間控方式。本設計采用直接控制的方式,將mzl02d-12864 lcd模塊的總配置為6800總線,這與絕大部分引出外部總線的mcu的時序是不一樣的。本設計的lcd12864模塊中,用戶程序?qū)ζ溥M行顯示控制時,無非就是通過對lcd模塊內(nèi)部的驅(qū)動控制器當中的寄存器進行設置操作;最常用的如lcd的顯

29、示開/關、操作顯存地址(行與列地址)的設置等。這些寄存器一般都在lcd模塊的驅(qū)動控制器文檔中有詳細介紹。3.2.4 lcd驅(qū)動程序架構(gòu)lcd12864驅(qū)動程序主要由lcd底層驅(qū)動和lcd功能函數(shù)兩部分組成。用戶在應用層直接使用功能函數(shù)即可。具體框架如圖3-3所示。功能函數(shù)層字庫驅(qū)動層函數(shù)聲明功能函數(shù)lcd配置驅(qū)動層傳輸模式及io端口配置數(shù)據(jù)傳輸驅(qū)動應用層用戶應用程序功能函數(shù)聲明圖 3-3 lcd驅(qū)動程序架構(gòu)fig 3-3 lcd driver architectures3.3 俄羅斯方塊游戲設計3.3.1 俄羅斯方塊游戲功能簡介俄羅斯方塊游戲的規(guī)則很簡單,當方塊從屏幕上方落下來時,玩家控制方塊

30、的位置以及旋轉(zhuǎn)方塊,巧妙地安排布置達到充分利用屏幕空間的目的。每當屏幕的一整行被方塊排滿時,作為獎賞,整行從屏幕上消失,剩余的方塊依次往下降一行。當方塊堆積達到無法再落下方塊的時候,游戲結(jié)束。本設計中游戲主要的功能點包括:(1) 每4個小方塊可以組合成一組方塊群,游戲共有7種方塊群,每次隨機產(chǎn)生一種;玩家使用向左、向右、快速向下這些按鍵控制方塊的位置,旋轉(zhuǎn)按鍵控制方塊順時針旋轉(zhuǎn)。在主控制手柄上還有退出、暫停按鈕,可以實現(xiàn)隨時切換到啟動時的狀態(tài)和暫停游戲的功能。(2) 在本設計中,系統(tǒng)為玩家提供了背景音樂,玩家可以根據(jù)個人喜好開啟或關閉音效。(3) 單人模式下,玩家使用主控制器進行操作。每消去一

31、行,系統(tǒng)就給玩家加1分。在單人模式下,如果積分超過系統(tǒng)記錄的最高積分,系統(tǒng)將更新最高積分。(4) 本設計的亮點是實現(xiàn)雙人對戰(zhàn)游戲,通過主控制器在菜單選項中選擇雙人模式,第二玩家可以通過副控制器對第二游戲界面進行操作。本游戲系統(tǒng)規(guī)定,雙人對戰(zhàn)游戲中積分可分為兩個階段。第一階段是普通積分階段,即雙方玩家每消去一行,其相應積分表加1分;第二階段是多積分階段,即每消去三行才獲得1個積分。雙方先達到第二階段末尾者,即可取勝。同時,該設計中還為雙方玩家增加了道具功能,即當使用該功能時,可令對手當前移動圖塊消失,隨機出下一個圖塊。當玩家一次性消去三行,就能獲得一次道具功能,最多一次性累積2個道具。系統(tǒng)默認為

32、每個玩家提供1個道具。這樣不僅豐富了俄羅斯方塊游戲的功能,而且使其更具趣味性。3.3.2 系統(tǒng)界面的設計(1) 菜單選項界面當玩家將本設計的作品上電啟動后,系統(tǒng)首先在lcd顯示器件上呈現(xiàn)一個動態(tài)的開機動畫。然后,系統(tǒng)提供三個功能選項,即最高積分、游戲設置、開始游戲。其中,“游戲設置”選項包含了兩級子菜單。一級菜單包括“模式選擇”和“音效選擇”。在這兩個選項后面給出單字提示,以說明當前相應設置選項的狀態(tài)?!澳J竭x擇”菜單包含的二級子菜單有“單人模式”和“雙人模式”。“音效選擇”菜單包含的二級子菜單有“開音效”和“關音效”通過控制按鍵即可設置成相應狀態(tài)?!白罡叻e分”菜單選項為玩家提供單人模式下系統(tǒng)

33、記憶的最高積分。如果選擇了“開始游戲”菜單選項,則系統(tǒng)根據(jù)“游戲設置”選項中的設置啟動相應的游戲界面。菜單選項界面框架如圖3-4所示。菜單功能界面框架最高積分游戲設置開始游戲模式選擇音效選擇單人模式雙人模式開音效關音效圖 3-4 菜單選項界面框架fig 3-4 the menu option interface framework(2) 游戲操作界面首先,我們先來介紹單人模式下游戲界面的一些情況。在啟動單人模式后,lcd12864顯示屏分成兩屏,左半屏為俄羅斯方塊游戲地圖map區(qū),右半屏為俄羅斯方塊圖形預覽區(qū)和實時積分顯示區(qū)。其結(jié)構(gòu)框架如圖3-5所示。啟動單人模式左半屏圖形預覽游戲map區(qū)右半

34、屏積分顯示圖 3-5 單人模式界面結(jié)構(gòu)框架fig 3-5 the single-player game interface architecture其次,如果玩家啟動的是雙人模式,lcd12864顯示屏也分為兩屏,左屏由主控器操作,稱為map1區(qū),右屏由副控制器操作,稱為map2區(qū)。在兩屏中間是雙方積分顯示區(qū)和各自的道具數(shù)量顯示區(qū)。其結(jié)構(gòu)框架如圖3-6所示。雙人模式雙方積分進度條雙方道具使用情況積分和道具區(qū)map2區(qū)map1區(qū)圖 3-6 雙人模式界面結(jié)構(gòu)框架fig 3-6 double mode interface architecture系統(tǒng)界面整體程序流程圖如圖3-7所示。nyynnyyn

35、y單人模式音效選擇模式選擇游戲設置雙人模式音效關音效開清模式標志置模式標志返回上一級清音效標志置音效標志返回上一級開機啟動動畫進入主菜單顯示單人最高積分返回按鍵最高積分開始游戲進入游戲游戲設置模式選擇音效選擇圖 3-7 開機界面功能框架fig 3-7 boot interface function frame3.3.3 游戲系統(tǒng)“枚舉算法”概述本文繞開了澀難懂、比較復雜的“矩陣算法”,提出了另一種“枚舉算法”來實現(xiàn)這個經(jīng)典游戲?!懊杜e算法”沒有復雜的數(shù)學理論、避免了在程序中大量使用矩陣運算公式,設計思路清晰、明了,非常適合游戲設計的初學者理解和實現(xiàn)。所謂枚舉算法,就是直接枚舉出游戲中各圖塊的基

36、本形狀和它們的旋轉(zhuǎn)形狀,然后控制每一種不同形狀的方塊在游戲戲中的產(chǎn)生、移動、旋轉(zhuǎn)、落下、填滿和清除等游戲過程。3.3.4 俄羅斯方塊造型設計的方法眾所周知,俄羅斯方塊一般有七種基本形狀,每個基本形狀都由4個正方形的小方塊構(gòu)成。利用小方塊不同的擺放位置,可產(chǎn)生19種旋轉(zhuǎn)型圖塊。這七種圖形分別是“i型”、“l(fā)型”、“反l型”、“z型”、“反z型”、“口型”、“t型”。如圖3-8所示。i型l型反l型t型z型反z型口型圖 3-8 方塊模型fig 3-8 square model本系統(tǒng)在構(gòu)造19個方塊模型時的思路是:定義一個數(shù)組,用以存儲各個模型中4個小方塊的頂點坐標。比如l型,其數(shù)據(jù)結(jié)構(gòu)為0,0,0,

37、4,0,8,4,8。其中,每兩個數(shù)據(jù)為一個小正方形的列、行坐標,如圖 3-9所示。由圖可知,整個界面的坐標原點在左上角,分別向右、向下作為橫軸的正方向和縱軸的正方向。圖中每一格代表了lcd12864中的連續(xù)四行,第1格的坐標是(0,0);第2格的坐標是(0,4);第3格的坐標是(0,8);第4格的坐標是(4,8);其它圖塊也按此方法編輯數(shù)組內(nèi)容。2341圖 3-9 l型fig 3-9 l shape3.3.5 隨機產(chǎn)生俄羅斯方塊的方法(1) 產(chǎn)生隨機數(shù)的理論依據(jù)為了實現(xiàn)隨機落下各類方塊圖形,游戲過程序中必須抽取隨機數(shù)來確定方塊的類型。隨機數(shù)是一個既簡單又復雜的問題。本設計采用眾所周知的線性疊加

38、法,雖然沒有完美的方法產(chǎn)生隨機數(shù),不過線性疊加法是一個合適的方法,它徹底解決了8位機隨機數(shù)的問題。如果從一個足夠長的數(shù)字序列中的某一個點取出一邊串的數(shù)字,那么這些數(shù)字就看似隨機。這個開始的點(數(shù)字)叫做種子。如果從相同的點(種子)開始,將會得到相同的數(shù)字,這是因為我們是從固定的序列中取數(shù)字(所以叫偽隨機)。但這卻是一個有用的特性,我們可以每次從不同的點取數(shù),即改變種子,從而可以實現(xiàn)真正的隨機。(2) “線性疊加法”的概況“線性疊加法”其實只涉及二個內(nèi)容即:乘法和加法。只需三個步驟即:第一,為了取得新的種子,舊的種子與一個常數(shù)a相乘;第二,所得的結(jié)果和第二個常數(shù)c相加;第三,新的種子就是第二步結(jié)

39、果的低32位。保留低32位很重要,用來獲得下一個種子。計算公式為: 種子 = a * 種子 + c (3-1)此公式在幾何圖中表示為一條直線,而且新種子由舊種子反復相加得來,所以叫線性疊加。隨機函數(shù)的關鍵在于選擇優(yōu)秀的“常數(shù)a”(也叫乘數(shù)a),其實也就是選擇了一個固定的數(shù)字序列?!俺?shù)c”,不像乘數(shù)a那樣重要,但是一定是個奇數(shù)。事實上,c可選1。因為奇數(shù)(舊的種子)乘奇數(shù)(乘數(shù)a)是奇數(shù),再加奇數(shù)(常數(shù)c)將會是一個偶數(shù)學偶數(shù)(舊的種子)乘奇數(shù)(乘數(shù)a),加奇數(shù)(常數(shù)c)將會是一個奇數(shù)。如此種子會在奇數(shù)和偶數(shù)之間轉(zhuǎn)變。因為種了的變化足夠隨機,所以種子的值可以作為8位或16位隨機數(shù)。(3) ke

40、il c51中“線性疊加法”的實現(xiàn)方法在keil c51中生成偽隨機數(shù)需要用到兩個函數(shù),一個是srand(unsigned int seed),一個是rand()。首先給srand(unsigned int seed)提供一個種子,該種子為unsigned int類型,其取值范圍從0到65536,srand(unsigned int seed)根據(jù)這個種子會由上述特定的公式生成一個隨機數(shù)序列;然后調(diào)用rand(),它會依次從這個序列中返回一個數(shù),其值在0 到32767之間。因隨機數(shù)函數(shù)rand()函數(shù)實際上是線性隨機的,如果在不指定srand(unsigned int seed)的種子的情況下

41、,它每次都使用默認的種子,因此生成的序列會是同一個,所以會取到相同的數(shù)字序列。這可能會導致每次重新運行游戲時其隨機數(shù)結(jié)果都是一樣的。為了解決該問題,本設計在玩家進入游戲時讀取按鍵按下瞬間定時器t0的計數(shù)值,作為srand(unsigned int seed)的種子。從而實現(xiàn)真正的隨機。(4) 隨機數(shù)程序流程圖如圖3-10為隨機數(shù)程序流程圖。srand(unsigned int seed)產(chǎn)生一數(shù)據(jù)序列開始游戲讀取t0計數(shù)值作為seedrand()將返回值進行處理后選擇相應的方塊數(shù)組圖 3-10 隨機數(shù)程序流程圖fig 3-10 ramdom process flow program diagr

42、am3.3.6 俄羅斯方塊平移的實現(xiàn)方法 方塊產(chǎn)生后,需要用全局變量來保存方塊在游戲map區(qū)中的行坐標和列坐標。方塊的平移包括左移和右移兩種情況,無論那種情況都要首先進行合法性判斷。(1) 俄羅斯方塊平移特性在本設計中規(guī)定當按下一次左移或右移按鍵時,map區(qū)中的當前圖塊就左移或右移一個正方形的寬度。而一個小正方形的寬度,則對應著lcd12864中的4列。(2) 平移合法性判斷 平移的合法性判斷經(jīng)較簡單,只需判斷它旁邊相鄰位置是否被填充即可。(3) 平移算法的實現(xiàn)在程序中,當有任意一個平移按鍵被按下時,系統(tǒng)接收到信號,然后調(diào)用平移函數(shù)進行判斷其合法性,得到該函數(shù)的返回值為1后,再進行平移操作。其

43、程序流程如圖3-11所示。返回1返回1返回0yynn左移按鍵被按下right_left_judge函數(shù)列變量f_x減4行不變右移按鍵被按下列變量f_x加4行不變right_left_judge函數(shù)將圖塊左移一格將圖塊右移一格圖 3-11 平移算法流程圖fig 3-11 translation algorithms flowchart3.3.7 俄羅斯方塊旋轉(zhuǎn)的實現(xiàn)方法(1) 俄羅斯方塊旋轉(zhuǎn)圖形概況方塊旋轉(zhuǎn)是一個游戲?qū)崿F(xiàn)的關鍵問題,實現(xiàn)旋轉(zhuǎn)的數(shù)學方法有多種,如矩陣變換法、枚舉法、索引法等。本文前面已經(jīng)論述了此次設計采用枚舉的方法,對19種俄羅斯方塊造型進行構(gòu)造。游戲過程中,每一種基本方塊都要做旋

44、轉(zhuǎn)控制,于是就產(chǎn)生了旋轉(zhuǎn)后的方塊形狀,本文將其稱為“旋轉(zhuǎn)型”?;拘椭械摹癷型”,只有一種旋轉(zhuǎn)型,即由豎直旋轉(zhuǎn)90度后成為水平。因此,基本型加上一種旋轉(zhuǎn)型,共有兩種形狀?;拘椭械摹發(fā)型”和“反l型”有三種旋轉(zhuǎn)型,將它按順時針每旋轉(zhuǎn)一個90度就產(chǎn)生一種旋轉(zhuǎn)型,可以旋轉(zhuǎn)三次,得到三種不同的旋轉(zhuǎn)型,因此,它的三種旋轉(zhuǎn)型加上其基本型,“l(fā)型”和“反l型”方塊分別有四種形狀。基本型中“z型”和“反z型”可以順時針旋轉(zhuǎn)一次90度,加上他們的基型分別有兩種形狀?;拘椭械摹皌型”有三種旋轉(zhuǎn)型,將他按順時針旋轉(zhuǎn)一個90度就產(chǎn)生一種旋轉(zhuǎn)型,它可以旋轉(zhuǎn)三次,得到三種不同的旋轉(zhuǎn)型,因此,它的三種旋轉(zhuǎn)型加上其基本型

45、,“t型”方塊共有四種形狀?;拘椭械摹翱谛汀狈綁K沒有旋轉(zhuǎn)型,在游戲中只有一種形狀。綜上所述,七種基本型方塊,因旋轉(zhuǎn)產(chǎn)生了不同的旋轉(zhuǎn)型,這些旋轉(zhuǎn)型加上他們的基本型,整個游戲中,共有19種不同的方塊形狀。本設計實現(xiàn)旋轉(zhuǎn)操作的具體方法,可分為兩類,一類是i型的旋轉(zhuǎn)策略;另一類則是其余17種基本型的旋轉(zhuǎn)策略。(2) 旋轉(zhuǎn)合法性判斷方塊做順時針旋轉(zhuǎn),每次旋轉(zhuǎn)90度。本設計規(guī)定只要旋轉(zhuǎn)后到達的地方未被填允,方塊就可以進行旋轉(zhuǎn)操作。(3) i型的旋轉(zhuǎn)策略為了在視覺上實現(xiàn)i型的順時針旋轉(zhuǎn),本設計采用位置錯落的方式來實現(xiàn)。其具體過程如圖3-12所示。 圖 3-12 i型的旋轉(zhuǎn)方法fig 3-12 the ro

46、tation method of i shape當落下的圖塊是圖所示時,其旋轉(zhuǎn)周期為 。當落下的圖塊是圖所示時,其旋轉(zhuǎn)周期為 。 之所以把i型的旋轉(zhuǎn)變換單獨拿出來討論,是因為i型只有基本型和旋轉(zhuǎn)型共兩種圖塊。如果在當前位置直接按這兩種圖塊的坐標數(shù)組進行圖形切換,則無法實現(xiàn)順時針旋轉(zhuǎn)的視覺效果。所以,在旋轉(zhuǎn)處理程序中,當要旋轉(zhuǎn)的當前圖塊為i型及其旋轉(zhuǎn)型時,就要改變當前列、行這兩個全局變量的值。(4) 其余17種基本型的旋轉(zhuǎn)策略除了i型的旋轉(zhuǎn)比較復雜外,其余17種類型的方塊只需按各自旋轉(zhuǎn)的順序在當前位置用已經(jīng)編輯好的坐標數(shù)組來實現(xiàn)旋轉(zhuǎn)即可。具體程序流程如圖3-13所示。nyyynnyn按下旋轉(zhuǎn)鍵是

47、否是i型、一型判斷方塊經(jīng)過了幾次旋轉(zhuǎn)判斷新位置是否可寫判斷是哪類圖塊i型及其旋轉(zhuǎn)型其它17種類型根據(jù)上述判斷的結(jié)果決定當前位置行、列坐標的增減進行旋轉(zhuǎn)變換是否是i型、一型以外的其它類型按照已經(jīng)排列好的變換順序取坐標數(shù)據(jù)恢復原先坐標圖 3-13 旋轉(zhuǎn)程序流程圖fig 3-13 rotating program flowchart3.3.8 俄羅斯方塊下移的實現(xiàn)方法 在整個游戲過程中,方塊是不斷向下運行的,其下移特性為:方塊每次下移的格數(shù)對應著lcd12864屏幕中的一行。具體程序?qū)崿F(xiàn)流程如圖3-14所示。ynynyn進入下移判斷程序讀取下移一行后每個小方塊的行列坐標判斷每個小方塊的行在lcd顯示

48、區(qū)中的哪一頁上半頁下半頁是否可寫標志加1標志是否為4程序返回1是否循環(huán)了4次程序返回0圖 3-14 下移判斷程序流程圖fig 3-14 moves down judgment program flowchart3.3.9 滿行檢測及消行功能的實現(xiàn)方法 隨著方塊的不斷累積,方塊每次下落到不能再運動時,系統(tǒng)就會檢測游戲map區(qū),當檢測到map區(qū)中某一行堆積滿后,系統(tǒng)就消去此行,作為獎勵,其上方的方塊群則依次下落一行。系統(tǒng)滿行檢測和消行功能是通過“滿行檢測及消行”函數(shù)實現(xiàn)的,即在每個圖塊落定和下一個圖塊未出來之前,按頁掃描游戲map區(qū),每半頁算一行。若檢測到某行被填滿,則消去此行,并將其上方的圖塊往

49、下移動相應的行數(shù)。具體程序?qū)崿F(xiàn)流程如圖3-15所示。ynynyn某一方塊已落定進入滿行檢測程序,頁標志n=7從第n頁開始檢測檢測當前頁的下半頁是否滿行消除此行,其上方塊依次下落一行檢測當前頁的上半頁是否滿行消除此行,其上方塊依次下落一行n減1是否是第0頁退出圖 3-15 滿行檢測程序流程fig 3-15 full line detection processes3.3.10 游戲積分的計算方法在游戲系統(tǒng)中,積分體現(xiàn)了玩家在此次游戲中的操作情況。本游戲系統(tǒng)分單人模式和雙人模式兩種積分計算方式。單人模式下,玩家每消去一行,就能獲得1個積分,如果當前游戲積分超過系統(tǒng)記錄的單人最高游戲積分,則系統(tǒng)將更

50、新記錄,以便其他玩家挑戰(zhàn)。雙人模式下,雙方的積分制度是一樣的,以進度條的方式展示在積分與道具區(qū)。其中積分區(qū)分為兩個階段,第一階段每消去1行進度條向上走一格,共8個進度格;第二階段每累計消去3行進度條才向上增加一格,共6個進度格。雙方誰先到達進度條的頂端就算勝利。當一次性同時消去3行時,則能獲得一個道具功能的使用權(quán)。最多能累積兩個道具。具體程序?qū)崿F(xiàn)流程如圖3-16所示。nyynynynyn消去一行當前積分加1是否大于最高紀錄存儲當前積分退出單人模式下雙人模式下增加n分,消去n行消去n行?n0n=3?增加1道具道具是否小于2個?增加1道具進度是否到頂?結(jié)束所有進程返回游戲圖 3-16 積分系統(tǒng)程序

51、流程圖fig 3-16 score system program flowchart3.4 雙人俄羅斯方塊游戲設計3.4.1 rtx51 tiny簡介許多微處理器應用程序要求同時執(zhí)行多個任務。對于這樣的應用程序,一個實時操系統(tǒng)(rtos)允許靈活的分配系統(tǒng)資源(中央處理器、存儲器等)給各個任務。rtx51它可以運行于所有的8051派生機型,是一個很好使用的強大的準并行實時操作系統(tǒng)。rtx51可以簡化那些復雜而且時間要嚴格的工程軟件設計工作。有兩個不同的rtx51版本可以利用:rtx51 full和rtx51 tiny。二者的主要區(qū)別是前者是可以強占(或者說可剝奪的)系統(tǒng)而后者是不可以強占的(不

52、可剝奪的)。rtx51 full版本是完整版,它使用四個任務優(yōu)先級來完成,同時存在時間片輪轉(zhuǎn)調(diào)度和搶先的任務切換。rtx51 full工作在與中斷功能相似的狀態(tài)下,信號和信息可以通過郵箱系統(tǒng)在任務之間互相傳遞。程序員可以從一存儲池中分配和釋放內(nèi)存,也可以強迫一個任務等待中斷、超時或者是從另一個任務或中斷發(fā)出的信號或信息。而本游戲系統(tǒng)采用的rtx51 tiny是rtx51完整版的子集,它完全集成在keil c51的集成開發(fā)環(huán)境中。自身僅占用900字節(jié)左右的程序存儲空間。rtx51 tiny僅支持時間片輪轉(zhuǎn)任務切換和使用信號進行任務切換。不支持搶先式的任務切換,不包括消息歷程,沒有存儲器池分配程序

53、。rtx51 tiny雖然比較簡陋,但它還是具備了一些實時操作系統(tǒng)的基本要素,又因為它完全集成在keil c51的集成開發(fā)環(huán)境中,可以使用戶把更多的精力關注在應用本身而無需考慮復雜的底層驅(qū)動,而且整個應用軟件系統(tǒng)結(jié)構(gòu)清晰,維護方便,可節(jié)省大量的時間和人力。當程序比較復雜時,它的優(yōu)點就體現(xiàn)得更明顯。rtx51 tiny完全可以充當我們進入實時操作系統(tǒng)(rtos)世界的領路者,更為重要的是,它是免費的。無論如何,rtx51 tiny仍然是在8位單片機中應用操作系統(tǒng)的首選。3.4.2 rtx51 tiny的內(nèi)核分析該小節(jié)只介紹本設計中用到rtx51 tiny系統(tǒng)的相關知識與配置方法。讀者若想更全面了

54、解rtx51 tiny多任務實時操作系統(tǒng),請閱讀rtx51 tiny的幫助文件或其它相關文件。(1) rtx51 tiny程序的編寫方法若要使用rtx51 tiny的內(nèi)核,只需包含文件rtx51tny.h即可。所有的運行時庫常量都在這個頭文件中定義??梢圆捎靡韵路绞桨篿nclude 當使用rtx51 tiny時,要為每個任務建立獨立的任務函數(shù)。同時,rtx51 tiny任務必須是用_task_聲明的c函數(shù),返回值和參數(shù)都必須是void類型的, rtx51 tiny程序不需要用戶自已定義main函數(shù),取而代之的是,rtx51 tiny從任務0開始執(zhí)行。在典型的應用中,任務0簡單的建立所有其

55、他的任務。 (2) 系統(tǒng)調(diào)用函數(shù)簡介rtx51 tiny內(nèi)核完全集成在keil c51編譯器中,以系統(tǒng)函數(shù)調(diào)用的方式運行,因此可以很容易地使用keil c51語言編寫和編譯一個多任務程序,并嵌入到實際應用系統(tǒng)中,內(nèi)核提供多組函數(shù)供應用程序引用。 (3) rtx51 tiny的任務狀態(tài)rtx51 tiny 的用戶任務具有以下幾個狀態(tài):running: 任務處于運行中,同一時間只有一個搶占任務可以處于“running”狀態(tài)。ready :任務正在等待運行,在當前運行的任務時間片完成之后,rtx51 tiny運行下一個處于“ready”狀態(tài)的任務。waiting: 任務由于時間片用完而處于“time out”狀態(tài),并等待再次運行。該狀態(tài)與“ready”狀態(tài)相似,但由于是內(nèi)部操作過程使一個循環(huán)任務被切換而被冠以標記。如圖3-17所示為任務狀態(tài)轉(zhuǎn)換圖8。信號

溫馨提示

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

最新文檔

評論

0/150

提交評論