VC+(MFC)俄羅斯方塊課程設(shè)計(jì)_第1頁(yè)
VC+(MFC)俄羅斯方塊課程設(shè)計(jì)_第2頁(yè)
VC+(MFC)俄羅斯方塊課程設(shè)計(jì)_第3頁(yè)
VC+(MFC)俄羅斯方塊課程設(shè)計(jì)_第4頁(yè)
VC+(MFC)俄羅斯方塊課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+課程設(shè)計(jì)俄羅斯方塊游戲姓名:龍瀟 班級(jí):學(xué)號(hào):31目 錄一、課程設(shè)計(jì)的目的與要求31.1課程設(shè)計(jì)的目的31.2課程設(shè)計(jì)的要求3二、設(shè)計(jì)正文32.1需求分析32.1.1 游戲需求32.2.2游戲界面需求:32.1.3游戲形狀(方塊)需求:32.2算法分析42.2.1程序流程圖42.2.2定義方塊的數(shù)據(jù)結(jié)構(gòu)62.2.3 游戲設(shè)計(jì)分析7三 系統(tǒng)設(shè)計(jì)83.1創(chuàng)建界面的主框架83.2正常流程的設(shè)計(jì)83.2.1定時(shí)制機(jī)制83.2.2定時(shí)處理94.1底部到達(dá)的判斷與銷行的實(shí)現(xiàn)104.2中斷操作流程的實(shí)現(xiàn)134.3變形的實(shí)現(xiàn)144.4 游戲區(qū)域繪圖的實(shí)現(xiàn)154.5 功能的完善154.6 游戲演示164.7

2、主程序源程序清單17六、參考文獻(xiàn)32用VC+實(shí)現(xiàn)俄羅斯方塊的程序設(shè)計(jì)一、課程設(shè)計(jì)的目的與要求1.1課程設(shè)計(jì)的目的綜合運(yùn)用所學(xué)知識(shí),熟練掌握VC+程序設(shè)計(jì)的編碼與MFC框架結(jié)構(gòu) 。1.2課程設(shè)計(jì)的要求要求用設(shè)計(jì)與實(shí)現(xiàn)俄羅斯方塊游戲。要求包括系統(tǒng)的需求分析;系統(tǒng)總框圖及每個(gè)模塊的設(shè)計(jì)分析;MFC應(yīng)用程序架構(gòu);框架的擴(kuò)展;算法的設(shè)計(jì)與實(shí)現(xiàn);游戲的內(nèi)部實(shí)現(xiàn);游戲區(qū)域繪圖的實(shí)現(xiàn);系統(tǒng)存在的問(wèn)題及錯(cuò)誤處理;列出所有定義的函數(shù)及說(shuō)明;附上程序源代碼。二、設(shè)計(jì)正文2.1需求分析2.1.1 游戲需求 隨機(jī)給出不同的形狀(長(zhǎng)條形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充給定的區(qū)域,若填滿一條便消掉

3、,記分,當(dāng)達(dá)到一定的分?jǐn)?shù)時(shí),過(guò)關(guān),設(shè)置六關(guān),每關(guān)方塊下落的速度不同,若在游戲中各形狀填滿了給定區(qū)域,為輸者。游戲功能要求如下:2.2.2游戲界面需求:良好的用戶界面,有關(guān)數(shù)顯示和分?jǐn)?shù)顯示。讓方塊在一定的區(qū)域內(nèi)運(yùn)動(dòng)和變形,該區(qū)域用一種顏色表明,既用一種顏色作為背景,最好設(shè)為黑色。還需用另一種顏色把黑色圍起來(lái),寬度適中,要實(shí)現(xiàn)美感。2.1.3游戲形狀(方塊)需求:良好的方塊形狀設(shè)計(jì),繪制七種常見的基本圖形(長(zhǎng)條形、Z字形、反Z形、田字形、7字形、反7形、T字型),各個(gè)方塊要能實(shí)現(xiàn)它的變形,可設(shè)為順時(shí)針或逆 時(shí)針變形,一般為逆時(shí)針。2.2算法分析2.2.1程序流程圖 到達(dá)底部部到達(dá)底部,游戲結(jié)束到達(dá)

4、底部部結(jié)束銷行操作生成下一個(gè)下墜物將新生的下墜物代替舊的“下一個(gè)下墜物“將舊的“下一個(gè)下墜物”用作當(dāng)前 下墜物銷行操作游戲結(jié)束處理下降一個(gè)單位開始刷新游戲結(jié)束重新游戲下一個(gè)圖行達(dá)到指定位置達(dá)到指定位置顯示屏幕信息按向上鍵游戲開始否按鍵7.OnTimer()10.IsBottom()12.RectChange()9.OnDraw()6.invalidatecurrent()8.GamePaush()5.RectDown()11.KeyDown()13.GameEnd()1.Main()2.Rectview()3.Gamestart()4.DrawGame ()圖2.2.3 程序運(yùn)行調(diào)用圖2.2.

5、2定義方塊的數(shù)據(jù)結(jié)構(gòu)對(duì)于方塊在某一瞬間的位置標(biāo)識(shí),我們采用一個(gè)42的小數(shù)組標(biāo)識(shí)出來(lái),即用4個(gè)存儲(chǔ)單位空間存儲(chǔ)當(dāng)前下墜物的每一子塊的位置,也就是說(shuō),用4個(gè)存儲(chǔ)單位空間存儲(chǔ)當(dāng)前下墜物的每一子塊的位置來(lái)對(duì)整個(gè)下墜物件的位置進(jìn)行標(biāo)識(shí),而每個(gè)存儲(chǔ)空間的大小就是一個(gè)典的坐標(biāo)值(x,y),而每個(gè)方塊按照從左到右的方式進(jìn)行編號(hào),并且在編號(hào)過(guò)程中對(duì)于同一列的方塊實(shí)行從上到下進(jìn)行編號(hào) 2 。0123(x0,y0)(x1,y1)(x2,y2)(x3,y3)2301(x0,y0)(x1,y1)(x2,y2)(x3,y3) 圖3.1 方塊編號(hào)ActiveStatus00和ActiveStatus01則是第0號(hào)方塊的橫坐

6、標(biāo)x和縱坐標(biāo)y ;ActiveStatus20和ActiveStatus21則是第2號(hào)方塊的橫坐標(biāo)x和縱坐標(biāo)y。2.2.3 游戲設(shè)計(jì)分析有前面的功能描述可知,我先虛擬出俄羅斯方塊游戲的類對(duì)象,并抽象出核心的數(shù)據(jù)屬性和操作方法等,然后再作細(xì)化,最后將整個(gè)虛擬類的外殼脫掉,再移植到視圖類中去,其實(shí)現(xiàn)如下:CRectGameView : public CView/內(nèi)部存取數(shù)據(jù)結(jié)構(gòu)int m_stateMapMAX_ROWMAX_COL;/初始化操作GameInitnal(); /游戲的初始化/用于判斷數(shù)據(jù)相關(guān)狀態(tài)的操作IsLeftLimit(); /下墜物件是否可向左移動(dòng)IsRightLitmit(

7、); /IsBottom(); /是否已經(jīng)到達(dá)了底部IsGameEnd(); /是否游戲已經(jīng)結(jié)束/方塊物件下墜過(guò)程中的操作RectChange(); /下墜物件變形RectDown(); /下墜物件正常下落RectArrow(); /下墜物件方向移動(dòng)(左,右,下加速) /狀態(tài)控制操作GameStart(); /游戲開始GamePause(); /游戲暫停GameEnd(); /游戲結(jié)束通過(guò)上面的代碼可以看出,在虛擬類中抽象出了核心的內(nèi)部數(shù)據(jù)和一些基本的操作函數(shù)。對(duì)于操作函數(shù),可以把它們分為內(nèi)部實(shí)現(xiàn)的基本核心操作(如判斷操作)以及明顯提供給外部使用的整體模塊外部操作(如狀態(tài)控制操作)。而內(nèi)部的基

8、本操作又可以分為判斷操作和執(zhí)行操作這樣兩種類型3。三 系統(tǒng)設(shè)計(jì)3.1創(chuàng)建界面的主框架 首先建立一個(gè)項(xiàng)目工程,名為skyblue_Rect,并在AppWizard的架構(gòu)選擇過(guò)程中選擇單文檔方式,其他保持默認(rèn)選項(xiàng)。其項(xiàng)目的架構(gòu)類視圖信息如圖所示: 在構(gòu)架類視圖中是MFC基本架構(gòu)組合:App(應(yīng)用程序)類、Document(文檔)類、View(視圖)類、Frame(框架)類和用于提示關(guān)于作者的對(duì)話框CAboutDlg類,至于COptionDlg類是用作俄羅斯方塊參數(shù)選擇的對(duì)話框類對(duì)象。 3.2正常流程的設(shè)計(jì) 3.2.1定時(shí)制機(jī)制 從分析游戲的特性可以知道,定時(shí)器的產(chǎn)生與生效應(yīng)該在游戲開始的時(shí)候,而在

9、游戲暫停或者游戲結(jié)束時(shí)則將已經(jīng)設(shè)定的定時(shí)器失效/銷亡(對(duì)于暫停的情況,使它銷亡,當(dāng)游戲從暫停狀態(tài)又進(jìn)入游戲狀態(tài)時(shí)候,則重新創(chuàng)建一個(gè)定時(shí)器并激活它的運(yùn)作),所以分別在游戲的開始函數(shù)、暫停函數(shù)已經(jīng)結(jié)束函數(shù)中實(shí)現(xiàn)定時(shí)器的激活與去激活工作。這里,先在資源編輯器菜單資源里面添加三個(gè)菜單選項(xiàng),分別是游戲的“開始”、“暫?!?、和“結(jié)束”,然后利用ClassWizard直接在視圖類對(duì)象Cskyblue_RectView中為它們添加空白的處理函數(shù),具體如表2所示。3.2.1菜單選項(xiàng)功能對(duì)應(yīng)表菜單選項(xiàng)名稱快捷鍵資源ID響應(yīng)處理函數(shù)開始游戲&SID_GAME_STATOnGameStart()暫停游戲&PID_GA

10、ME_PAISHOnGamePaush()結(jié)束游戲&EID_GAME_ENDOnGameEnd()3.2.2定時(shí)處理 經(jīng)過(guò)定時(shí)器的設(shè)置后,這里通過(guò)利用ClassWizard跳到定時(shí)器到時(shí)候的處理函數(shù)OnTimer()去實(shí)現(xiàn),當(dāng)固定時(shí)間片間隔到達(dá)后,先檢測(cè)當(dāng)前下墜物是否已經(jīng)到達(dá)了底部,不是則進(jìn)行RectDown()下墜物向下移動(dòng)一個(gè)單位的操作,是則到底后產(chǎn)生一個(gè)新的“下一個(gè)下墜物”,并代替舊的,將原先舊的“下一個(gè)下墜物”用作當(dāng)前激活狀態(tài)下正在使用的下墜物,并對(duì)使用后的一些狀態(tài)進(jìn)行檢測(cè):是否馬上到達(dá)底部,使則進(jìn)行銷行操作;是否在到達(dá)底部的同時(shí)到達(dá)游戲區(qū)域的頂部,從而判定游戲是否因違規(guī)而結(jié)束。是否7

11、654321隨機(jī)抽取一個(gè)數(shù)隨機(jī)數(shù)一字形Z字形反Z形7字形反7形倒T形田字型游戲是否結(jié)束保存當(dāng)前方塊坐標(biāo)顯示方塊于屏幕上游戲結(jié)束調(diào)GameEnd()關(guān)數(shù)初始化返回開始界面圖 3.2.2裝載方塊 視圖類創(chuàng)建了m_icurrentStatus和m_inextStatus兩個(gè)成員變量來(lái)記錄下墜物的類型,共有七種形狀,并從7種方塊中隨機(jī)抽取圖形。而m_currentRect除了記錄下墜物的類型外,還需記錄其當(dāng)前的變形狀態(tài),最多用兩位表示,第1位用作類型標(biāo)識(shí)(17),第2位用作同種類型的不同表現(xiàn)方式,最多有4種狀態(tài)(14)。在產(chǎn)生新的下一個(gè)下墜物前,需要先將當(dāng)前狀態(tài)物的記錄和舊的下一個(gè)下墜物保存下來(lái),然后

12、用隨機(jī)函數(shù)Random()產(chǎn)生一個(gè)最大值不大于指定值的隨機(jī)正整數(shù),將這個(gè)新生成的正整數(shù)用作新的“下一個(gè)下墜物”的形狀值。四、系統(tǒng)實(shí)施4.1底部到達(dá)的判斷與銷行的實(shí)現(xiàn)是否堆積方塊,判斷接觸面狀態(tài)及是否得分2.統(tǒng)計(jì)分?jǐn)?shù)判斷是否過(guò)關(guān)關(guān)數(shù)增加,游戲速度將變快。調(diào)用游戲初始化GameStart()開始新的一關(guān)視圖重繪(InvalidateView())1.判斷行滿、處理銷行、堆積方塊向下移動(dòng)圖3.2.3 處理方塊到達(dá)圖將新的下墜物放置到游戲區(qū)域中去,這時(shí)可能出現(xiàn)馬上到達(dá)底部的情況,因此需要對(duì)它進(jìn)行判斷,如果是到達(dá)底部,則進(jìn)行銷行處理,并且修改相應(yīng)的數(shù)據(jù)狀態(tài)。而判斷是否已經(jīng)到達(dá)了底部,可以通過(guò)當(dāng)前下墜物件

13、所對(duì)應(yīng)的接觸面的方塊位置為被占用狀態(tài)(MAP_STATE_NOT_EMPTY=1)來(lái)確定,利用數(shù)組InterFace744記錄17種下墜物的14種形態(tài)的接觸面信息。統(tǒng)計(jì)分?jǐn)?shù):在消行處理里面有一個(gè)專門用來(lái)統(tǒng)計(jì)消行數(shù)的變量,然后根據(jù)變量的值決定分?jǐn)?shù)的多少,程序統(tǒng)計(jì)分?jǐn)?shù)是:消一行得100分,同時(shí)消2行得400分,銷掉x行,則分?jǐn)?shù)為:x*(x*100)。如果總分?jǐn)?shù)達(dá)到過(guò)關(guān)條件就過(guò)關(guān),改變游戲速度,游戲初始化,開啟新的一關(guān),然后再加載方塊。沒有達(dá)到過(guò)關(guān)分?jǐn)?shù)或者沒有滿行,則加載下一個(gè)方塊繼續(xù)游戲。4.2中斷操作流程的實(shí)現(xiàn)(1) 處理鍵盤事件關(guān)于按鍵命令消息的響應(yīng),可以通過(guò)對(duì)WM_KEYDOWN消息的處理函

14、數(shù)進(jìn)行截獲并重寫來(lái)實(shí)現(xiàn),下面是對(duì)該處理函數(shù)OnKeyDown()的重寫。/ 功能:處理用戶的輸入,方塊的左,右移,加速及變形void CSkyblue_RectView:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) switch(nChar)case VK_LEFT:RectArrow(LEFT);break;case VK_RIGHT:RectArrow(RIGHT);break;case VK_UP:RectChange();break;case VK_DOWN:RectArrow(DOWN);break;CView:OnKeyDown(

15、nChar, nRepCnt, nFlags);4.3變形的實(shí)現(xiàn)當(dāng)按下向上鍵時(shí),將會(huì)執(zhí)行方塊變化事件(change())。常見的方塊有7種(長(zhǎng)條形、Z字形、反Z形、田字形、7字形、反7形、T字型),所有圖形都是用兩個(gè)一維數(shù)組來(lái)統(tǒng)計(jì)它的橫坐標(biāo)和縱坐標(biāo),每個(gè)方塊有4種不同的變化形狀。例計(jì)算變形后的小方塊的坐標(biāo)和顯示的狀態(tài)值/變形后位置在數(shù)組中的存放順序仍需遵循先左后右,在同一列中先上后下xx1=x1; xx2=x2; xx3=x3; xx4=x4; yy1=y1; yy2=y2; yy3=y3; yy4=y4;switch(m_currentRect)case 1:xx1=x1+1; yy1=y1

16、-1; xx3=x3-1; yy3=y3+1; xx4=x4-2; yy4=y4+2;m_lscurrentRect = 11;break;case 11:xx1=x1-1; yy1=y1+1; xx3=x3+1; yy3=y3-1; xx4=x4+2; yy4=y4-2;m_lscurrentRect = 1;break; /省略部分為同類實(shí)現(xiàn)的變形后小方塊坐標(biāo)的計(jì)算代碼case 73:xx2=x2+1; yy2=y2-1; xx3=x3+2; yy3=y3-2; xx4=x4-1; yy4=y4-1;m_lscurrentRect = 7;break;4.4 游戲區(qū)域繪圖的實(shí)現(xiàn)首先將外部位

17、圖文件rect.bmp中的位圖動(dòng)態(tài)導(dǎo)入(映射)到內(nèi)存位圖里面,根據(jù)游戲區(qū)域中的二維數(shù)組GameStatusMAX_ROWMAX_COL中的內(nèi)部數(shù)據(jù)將所有數(shù)據(jù)狀態(tài)中為被占用狀態(tài)MAP_STATE_NOT_EMPTY的小方塊區(qū)域用指定的小方塊圖樣類型來(lái)填充,然后將已經(jīng)繪制好的游戲區(qū)域圖像一次性的拷貝到與屏幕關(guān)聯(lián)的設(shè)備環(huán)境中,從而達(dá)到屏幕的顯示。4.5 功能的完善為了使得游戲功能更加健全,另外為用戶提供了一些附加功能,如表4.5.1所示。表 4.5.1 附加功能描述列表功能名稱選項(xiàng)其他描述游戲等級(jí)選擇初級(jí).頂級(jí)對(duì)游戲快慢難度的設(shè)定方塊圖案樣式選擇深藍(lán).條紋對(duì)下墜物的小方塊圖案樣式選擇游戲區(qū)域大小選擇

18、小、中、大對(duì)游戲區(qū)域的行列數(shù)選擇網(wǎng)格的選用有、無(wú)是否需要在游戲區(qū)域繪制網(wǎng)格背景音樂的選用有、無(wú)在游戲過(guò)程中是否播放背景音樂先將這些目標(biāo)功能通過(guò)資源編輯器在主菜單條進(jìn)行添加,將前面已有的菜單選項(xiàng)補(bǔ)全,再通過(guò)ClassWizard添加對(duì)應(yīng)的響應(yīng)處理函數(shù)。其最終效果如圖1圖 4.5.2 游戲設(shè)置游戲是用來(lái)給大家娛樂的,所以要能在使用的過(guò)程中給大家?guī)?lái)快樂,消除大家的疲勞,所以我在游戲中添加了漂亮的場(chǎng)景和動(dòng)聽的背景音樂,設(shè)置了個(gè)性化的工具欄快捷鍵,激發(fā)大家的娛樂激情。4.6 游戲演示 游戲主界面如圖所示。圖4.6.1 俄羅斯方塊游戲運(yùn)行主界面4.7主程序源程序清單CSkyblue_RectView:C

19、Skyblue_RectView()/第一次開始游戲m_bFistPlay = TRUE;/缺省為不是游戲暫停狀態(tài)m_bGamePaush = FALSE;/缺省為不插放背景音樂m_bMusic = FALSE;/缺省為畫網(wǎng)格線m_bDrawGrid = TRUE;/總分值清零m_iPerformance = 0;/測(cè)試值:為12行,10列m_iRow = 12;m_iCol = 10;/左上角X,Y坐標(biāo)m_iStartX = 10;m_iStartY = 10;/缺省級(jí)別為3級(jí)m_iLevel = 2;/第一種樣式m_iBlockSytle = 0;/缺省方塊大小為m_iLarge個(gè)象素m_

20、iLarge = 30;/缺省游戲是結(jié)束的m_bGameEnd = TRUE;int i,j;/賦初值for (i=0;i100;i+)for (j=0;j100;j+)GameStatusij=0;/各種形狀方塊的接觸面數(shù)據(jù),參見設(shè)計(jì)書的接觸面表格, /5.判斷游戲是否已結(jié)束: 碰了底,且第1行有小方塊if (m_isBottom)for (i=0;im_iCol;i+)if (GameStatus0i)KillTimer(1);AfxMessageBox(游戲已結(jié)束!);for (j=0;jm_iRow;j+)for (k=0;km_iCol;k+)GameStatusjk=0;Inval

21、idate(FALSE);m_bGameEnd = TRUE;break;else /當(dāng)前方塊下降RectDown();CView:OnTimer(nIDEvent);/ 函數(shù):產(chǎn)生一個(gè)最大值不大于指定值的隨機(jī)正整數(shù)(Random)/ 參數(shù):MaxNumber : 隨機(jī)數(shù)的上限/ 返回值: 產(chǎn)生的隨機(jī)數(shù)int CSkyblue_RectView:Random(int MaxNumber)/布下隨機(jī)種子srand( (unsigned)time( NULL ) );/產(chǎn)生隨機(jī)數(shù)int random = rand() % MaxNumber;/保證非0if(random = 0 ) random+

22、;return random;/內(nèi)部函數(shù):刷新當(dāng)前的區(qū)域void CSkyblue_RectView:InvalidateCurrent()int i;for (i=0;i0) & IsLeftLimit() & !m_isBottom)/清原來(lái)的方塊GameStatusx1y1=MAP_STATE_EMPTY;GameStatusx2y2=MAP_STATE_EMPTY;GameStatusx3y3=MAP_STATE_EMPTY;GameStatusx4y4=MAP_STATE_EMPTY;/添加新的移動(dòng)后數(shù)據(jù)狀態(tài)ActiveStatus01 -= 1;ActiveStatus11 -=

23、1;ActiveStatus21 -= 1;ActiveStatus31 -= 1;GameStatusx1y1-1=MAP_STATE_NOT_EMPTY;GameStatusx2y2-1=MAP_STATE_NOT_EMPTY;GameStatusx3y3-1=MAP_STATE_NOT_EMPTY;GameStatusx4y4-1=MAP_STATE_NOT_EMPTY;InvalidateCurrent();break;case RIGHT:if ( (ActiveStatus31 SelectObject(m_pBlackBrush);CRect rect;GetClientRect

24、(&rect);pDC - Rectangle(rect);/選用灰色畫刷,繪制游戲區(qū)域的背景pDC - SelectObject(m_pGrayBrush);pDC - Rectangle(m_iStartY ,m_iStartX, m_iStartY + 301, m_iStartX + 360);pDC-SelectObject(m_pBlackPen);/畫網(wǎng)格線if (m_bDrawGrid)/畫橫線for (i=0;iMoveTo(m_iStartY, m_iStartX + i*m_iLarge);pDC-LineTo(m_iStartY+300, m_iStartX +i*m_iLarge);/畫豎線for (i=0;iMoveTo(m_iStartY+i*m_iLarge, m_iStartX);pDC-LineTo(m_iStartY+i*m_iLarge, m_iStartX+360);int x,y,nW,nH;/小方塊的繪

溫馨提示

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

評(píng)論

0/150

提交評(píng)論