版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言之游戲俄羅斯方塊課程設(shè)計(jì)報(bào)告專業(yè):學(xué)生姓名:指導(dǎo)教師:完成時(shí)間:目錄一、需求分析二、概要設(shè)計(jì)三、詳細(xì)設(shè)計(jì)四、調(diào)試分析五、用戶手冊(cè)六、測(cè)試數(shù)據(jù)七、附錄錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。1920一、需求分析1. 該程序是完成一個(gè)簡(jiǎn)易的俄羅斯方塊的任務(wù),其要完成幾個(gè)重要的功能:界面,方塊下落,旋轉(zhuǎn),判斷是否還能下落,左右移動(dòng),分?jǐn)?shù),速度設(shè)置,清楚滿的每行,下個(gè)方塊的預(yù)覽等;2. 可用#include<graphics.h>的頭文件來(lái)實(shí)用幾個(gè)函數(shù)來(lái)控制并完成游戲的界面;3. 可用7個(gè)二維5*5數(shù)組去實(shí)現(xiàn)下落方塊的全部類型,再用隨
2、機(jī)函數(shù)使其隨機(jī)下落;4. 用#include<conio.h>的頭文件去使用按鍵的控制,以保證用戶能夠合理操作;并用#include<stdlib.h>的頭文件來(lái)使用rand函數(shù)來(lái)隨機(jī)出示七種方塊;完成正常的顯示和下個(gè)方塊的預(yù)覽;5. 用#include<bios.h>來(lái)運(yùn)用時(shí)針去控制時(shí)間;6. 程序執(zhí)行過(guò)程:然后加上幾個(gè)基本的頭文件來(lái)執(zhí)行函數(shù),首先設(shè)置按鍵操作,用:w,a,d,s控制,然后進(jìn)行界面的初始化設(shè)置,啟動(dòng),時(shí)針參數(shù)設(shè)置,開始新游戲,開始隨機(jī)下落方塊,顯示下一個(gè)方塊,再行旋轉(zhuǎn),移動(dòng),清除,加分,速度參數(shù),最后判斷是否已滿,停止游戲,打出分?jǐn)?shù),結(jié)束的
3、畫面設(shè)置,游戲終止.二、概要設(shè)計(jì)該程序中的函數(shù)設(shè)置總體主要功能大致如下1 .找到合適的方塊盒子(7種)使其一一下落boxMAX_C55=/*MAX_C(7)種預(yù)定義的盒子*/這樣用類似的7個(gè)5*5二維數(shù)組來(lái)實(shí)現(xiàn)每個(gè)盒子方塊的形狀,自此就引薦兩個(gè)作為介紹,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,如此中用1代表顯示的格子,0代表空。2 .設(shè)置時(shí)間指針,實(shí)現(xiàn)旋轉(zhuǎn),移動(dòng),消去,顯示加分,改變速度分別用下面函數(shù)表不intsetTimer(Time
4、r*t,unsignedintintv,BOOLen);/*設(shè)置時(shí)鐘t,參數(shù)分別為時(shí)鐘指針,時(shí)間問(wèn)隔,是否活動(dòng)*/voidrotateBox(intbox155,intbox255)/*旋轉(zhuǎn)box1輸出到box2*/intmove(intdir)/*實(shí)現(xiàn)移動(dòng),返回成功與否*/voidclear()/*消除掉滿行*/voidprscore()/*打印現(xiàn)在的分?jǐn)?shù)*/voidspe()/*顯示速度的改變*/3 .外部函數(shù)功能如下圖益智游戲俄羅斯方塊界面設(shè)置voidinitMap函數(shù)和voidrender繪隨機(jī)顯示方塊,并建立下一個(gè);用rand()與void圖函提立整個(gè)函彳即幅dNext如下方塊的旋轉(zhuǎn)
5、和移動(dòng)下落;用rorate()move()與drop()來(lái)實(shí)現(xiàn)開始界面判斷是否能繼續(xù)下落;用inttest()函數(shù)來(lái)完成;分?jǐn)?shù)的改變與速度設(shè)置;用prscore()與spe()來(lái)完成判斷最后,游戲結(jié)束的操作;用prscore()和界面設(shè)置完成時(shí)間指針設(shè)定流程簡(jiǎn)介:玩家定義游戲開始,游戲顯示開始界面,時(shí)針已經(jīng)設(shè)定好,然后隨機(jī)出示方塊,玩家進(jìn)行方塊的旋轉(zhuǎn),左右移動(dòng),和下落控制,然后在旁邊的表格中出示另一個(gè)表格顯示下一個(gè)即將下落的方塊,然后判斷是否到達(dá)底部,若到,繼續(xù)出示方塊,若沒(méi),則可繼續(xù)變換,下落到低端后在進(jìn)行判斷,是否可以消除該行,再進(jìn)行分?jǐn)?shù)的變換,速度的調(diào)整,然后判斷是否已經(jīng)滿,若未滿,則繼
6、續(xù)出示下一個(gè)方塊,若滿,則結(jié)束游戲,打印分?jǐn)?shù),出示結(jié)束界面,游戲終止。三、詳細(xì)設(shè)計(jì)1. 設(shè)置七種方塊:這個(gè)用intboxMAX_C55=/*MAX_C(7)種預(yù)定義的盒子*/來(lái)實(shí)現(xiàn);即七個(gè)5*5的盒子數(shù)組,方塊實(shí)體用1表示,0表示空;七種如下所示,細(xì)心就會(huì)發(fā)現(xiàn)0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,
7、0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0;這樣七種盒子的方塊就被清楚的展現(xiàn)在你們面前。用來(lái)保證方塊不會(huì)出來(lái)2. 我們要進(jìn)行按鍵的設(shè)置#defineKEY_UP'w'/*定義上下左右按按鍵*/#defineKEY_DOWN's'#defineKEY_L
8、EFT'a'#defineKEY_RIGHT'd'#defineKEY_ESC27/*退出*/3. 時(shí)鐘的控制,用來(lái)控制方塊的下落間隔時(shí)間及速度/*時(shí)鐘結(jié)構(gòu)控制*/typedefstruct/*時(shí)鐘結(jié)構(gòu)*/unsignedintintervel;/*unsignedintlasttime;/*Timer;4.intGetTickCount()/*intret;ret=peek(0x0,0x46e);/*BOOLenabled;/*時(shí)鐘是否開啟*/定時(shí)間隔*/這個(gè)屬于內(nèi)部使用變量*/讀取BIOS時(shí)鐘*/實(shí)際上讀取了內(nèi)存0:046e處的內(nèi)容*/ret<<
9、=8;/*這個(gè)地方是$%#$A$%&A*/ret+=peek(0x0,0x46c);/*太多新的東西了,找點(diǎn)書看一看吧*/return(ret);intsetTimer(Timer*t,unsignedintintv,BOOLen)t->enabled=en;/*設(shè)置一個(gè)時(shí)鐘羅*/t->intervel=intv;記錄的是上一個(gè)*/t->lasttime=GetTickCount();/*lasttime/*tickcount返回的東西*/*這樣當(dāng)再一次測(cè)試時(shí)間時(shí)新的tickcount產(chǎn)生了它來(lái)減去上一次的tickcount就得出了一個(gè)時(shí)間間隔,這個(gè)就可以和inter
10、vel比較從而得出是否激活了*/return0;實(shí)現(xiàn)了以上的操作后,接下來(lái)要實(shí)現(xiàn)界面的設(shè)置一方便盒子在界面上的顯示和操作;5.voidinitMap(void)/*初始化地圖*/*我們須要一圈衛(wèi)兵呵呵,全是1.用來(lái)保證方塊不會(huì)出來(lái)*/intx,y;for(y=0;y<MAX_Y;y+)for(x=0;x<MAX_X;x+)if(x<2|x>MAX_X-3|y>MAX_Y-3)mapyx=1;elsemapyx=0;/*這里初始化出這個(gè)形狀*/*當(dāng)然是無(wú)蓋的.*/voidrender(void)/*這里唯一的繪圖函數(shù)*/intx,y;staticintcPage=0
11、;/*當(dāng)前頁(yè),換頁(yè)用*/# defineSTARTX50/*定義幾個(gè)常量*/# defineSTARTY0/*數(shù)值根據(jù)自己的需要可以自己設(shè)置*/# defineLEN18選擇頁(yè)*/setactivepage(cPage=(cPage=0?1:0);/*cleardevice();/*清屏*/setcolor(12);/*前景顏色*/prscore();setcolor(15);rectangle(STARTX+LEN*2-2,STARTY+LEN*3-2,STARTX+LEN*(MAX_X-2)+2,STARTY+LEN*(MAX_Y-2)+2);/*用白色畫一個(gè)外框*/setfillstyl
12、e(SOLID_FILL,5);for(y=3;y<MAX_Y-2;y+)/*畫地圖*/for(x=2;x<MAX_X-2;x+)if(mapyx)rectangle(x*LEN+STARTX,y*LEN+STARTY,x*LEN+STARTX+LEN,y*LEN+STARTY+LEN);bar(x*LEN+STARTX+1,y*LEN+STARTY+1,x*LEN+STARTX+LEN-2,y*LEN+STARTY+LEN-2);/*繪圖操作就不要作太復(fù)雜的介紹了,這只寫作用*/*以上段,根據(jù)地圖上的點(diǎn)陣情況將地圖反映到屏幕上*/for(y=0;y<5;y+)/*畫下落物*
13、/for(x=0;x<5;x+)if(curboxyx)if(y+cury>2)rectangle(x+curx)*LEN+STARTX,(y+cury)*LEN+STARTY,(x+curx)*LEN+STARTX+LEN,(y+cury)*LEN+STARTY+LEN);bar(x+curx)*LEN+STARTX+1,(y+cury)*LEN+STARTY+1,(x+curx)*LEN+STARTX+LEN-2,(y+cury)*LEN+STARTY+LEN-2);/*以上將下落的盒子按昭它在地圖上的坐標(biāo),畫到對(duì)應(yīng)的區(qū)域里*/for(y=0;y<5;y+)/*畫下一個(gè)*
14、/for(x=0;x<5;x+)if(nextboxyx)rectangle(x*LEN+320,y*LEN+10,x*LEN+338,y*LEN+28);bar(x*LEN+321,y*LEN+11,x*LEN+336,y*LEN+26);/*這個(gè)畫出下一個(gè)盒子的預(yù)覽*/setvisualpage(cPage);/*確認(rèn)在cPage頁(yè)里畫好了*/*將它顯示出來(lái)*/這樣我們的初始化界面和盒子在圖上的意義顯示已經(jīng)完成;5. 接下里我們要對(duì)即將出現(xiàn)的方塊的形狀進(jìn)行預(yù)覽即建立一個(gè)新的函數(shù)用來(lái)顯示下一個(gè)下落的盒子;voidrebuidNext()/*新建下一個(gè)形狀并放到nextbox中*/int
15、i,x,y;i=random(MAX_C);/*從幾種方塊里面選一種*/for(y=0;y<5;y+)/*并復(fù)制過(guò)來(lái)*/for(x=0;x<5;x+)nextboxyx=boxiyx;/*復(fù)制*/voidputBox()/*將curbox填充到地圖上*/intx,y;for(y=0;y<5;y+)/*這個(gè)也簡(jiǎn)單,主要是要根*/for(x=0;x<5;x+)/*據(jù)curx,cury指出位置*/if(curboxyx)mapy+curyx+curx=curboxyx;intnewfall()/*創(chuàng)建下落元素失敗返回0*/intx,y;curx=MAX_X/2-2;/*重新指
16、定小盒位置*/cury=0;for(y=0;y<5;y+)for(x=0;x<5;x+)curboxyx=nextboxyx;/*將nextBox復(fù)制過(guò)來(lái)*/rebuidNext();/*重建nextBox*/returntest(curx,cury,curbox);這樣一來(lái),我們的預(yù)覽盒子也就完成了。4.完成以后,我們要進(jìn)行下落的控制,這個(gè)在開始的控制指針已經(jīng)做好的下落間隔設(shè)置,然后開始隨機(jī)出示方塊,玩家應(yīng)開始進(jìn)行旋轉(zhuǎn),移動(dòng)的操作,下落的過(guò)程;voidrotateBox(intbox155,intbox255)/*旋轉(zhuǎn)box1輸出到box2*/intx,y;for(x=0;x&l
17、t;5;x+)/*這個(gè)函數(shù)可以須要實(shí)際*/for(y=4;y>=0;y-)/*編寫一下才能印像深刻*/box2yx=box1x4-y;introtate()/*整個(gè)旋轉(zhuǎn)的操作并將盒子打印到屏幕上*/intx,y;intnewbox55;/*我們必須將當(dāng)前盒子轉(zhuǎn)動(dòng)到新的盒子*/*再對(duì)這個(gè)新的盒子的沖突作測(cè)試*/rotateBox(curbox,newbox);/*轉(zhuǎn)動(dòng)到新的盒子*/if(test(curx,cury,newbox)/*并且新的盒子能放到地圖上而不沖突*/for(y=0;y<5;y+)for(x=0;x<5;x+)curboxyx=newboxyx;/*復(fù)制進(jìn)來(lái)*
18、/return1;elsereturn0;intmove(intdir)/*返回成功與否*/intnewx;if(dir)newx=curx+1;/*與drop一樣,準(zhǔn)備移動(dòng)后的坐標(biāo)*/elsenewx=curx-1;if(test(newx,cury,curbox)/*測(cè)試是否沖突*/curx=newx;/*可以的話切換curx*/return1;return0;這個(gè)就完成了左右移動(dòng)的操作;intdrop()/*下落,返回成功與否*/intnewy;/*盒子要下落的新位置*/newy=cury+1;/*為當(dāng)前Y位置+1*/if(test(curx,newy,curbox)cury=newy;
19、/*測(cè)試下落盒在這個(gè)位置*/return1;/*上是否有沖突,沒(méi)有的話*/*直接設(shè)置cury*/return0;inttest(intmx,intmy,intbox55)/*測(cè)試box在map里mx,my位置上是否能著陸*/*這個(gè)是最關(guān)鍵的一個(gè)函數(shù),它判斷是否產(chǎn)生非空沖突*/*但算法還是很簡(jiǎn)單的*/intx,y;for(y=0;y<5;y+)for(x=0;x<5;x+)if(mapy+myx+mx&&boxyx)return0;return1;這樣就完成了旋轉(zhuǎn),移動(dòng),測(cè)試并下落的功能。6. 接下來(lái)我們要完成下落后的分?jǐn)?shù)的改變速度的重新設(shè)定;voidclear()/
20、*清除掉滿行*/*具體的算法為:從第0行開始到最后一行,測(cè)試地圖點(diǎn)陣是否為滿,如果是的話從當(dāng)前行算起,之上的地圖向下掉一行*/intx,y;intdx,dy;intfullflag;for(y=0;y<MAX_Y-2;y+)/*最后兩行保留行*/fullflag=1;/*假設(shè)為滿*/for(x=2;x<MAX_X-2;x+)/*保留列*/if(!mapyx)fullflag=0;break;if(fullflag)/*向下移動(dòng)一行*/for(dy=y;dy>0;dy-)for(dx=2;dx<MAX_X-2;dx+)mapdydx=mapdy-1dx;for(dx=2;
21、dx<MAX_X-2;dx+)map0dx=0;score+=10;/*輸出新得分*/*并清除掉第一行*/voidprscore()/*輸出分?jǐn)?shù)*/charstr10;setfillstyle(SOLID_FILL,YELLOW);rectangle(90,15,260,35);setcolor(6);settextstyle(0,0,2);sprintf(str,"score:%d",score);outtextxy(115,20,str);voidspe()/*顯示速度的改變*/if(score%50=0&&score!=0)setTimer(&a
22、mp;tDown,speed-,1);7. 然后在主函數(shù)之前中定義以下的操作,這個(gè)應(yīng)該會(huì)很容易理解intmapMAX_Y+4MAX_X+4;/*地圖大盒子.MAX_X,Y是可見面積*/*我已說(shuō)過(guò)需要在外面布兩圈"衛(wèi)兵"*/intcurbox55;/*當(dāng)前下落的盒子*/intcurx,cury;/*保存著當(dāng)前活動(dòng)盒子在地圖上的位置*/intnextbox55;/*保存著下一個(gè)形狀的盒子*/8. 接下倆用newgameS數(shù)將其串聯(lián)起來(lái),實(shí)現(xiàn)函數(shù)的內(nèi)嵌;voidnewGame()/*新建游戲*/intx,y;initMap();/*初始化地圖*/srand(GetTickCoun
23、t();/*初始化隨機(jī)發(fā)生器*/rebuidNext();/*建立下一個(gè)*/setTimer(&tDown,speed,1);/*啟動(dòng)時(shí)鐘(快慢兩個(gè))*/setTimer(&tFast,FAST_INTV,1);newfall();/*對(duì)下落的盒子操作一下*/*這樣第一個(gè)下落的方塊就在地圖頂部準(zhǔn)備好了*/9. 接下來(lái)最為重要的主函數(shù)將要開始;intmain()charkey;/*記錄當(dāng)前按鍵*/inti;intgd=VGA,gm=VGAMED;/*初始化的圖形模式*/Timer*ptDown;/*下落所指向的時(shí)鐘(有快慢)*/Timertrender;/*為了避免渲染給程序造成
24、過(guò)大的負(fù)擔(dān)*/*用一個(gè)時(shí)鐘來(lái)控制渲染速度*/*把它設(shè)置interval=1,*/*這樣就是18FPS了,當(dāng)然無(wú)法達(dá)到標(biāo)*/*準(zhǔn)的60FPS.畢竟這是DOS.*/setTimer(&trender,1,1);initgraph(&gd,&gm,"");/*初始化圖形*/newGame();/*新游戲.*/prscore();while(1)/*主游戲循環(huán)*/if(kbhit()/*如果鍵盤有按下*/key=getch();/*讀取一個(gè)按鍵值到key*/elsekey=0;switch(key)/*對(duì)讀到的key進(jìn)行判斷*/caseKEY_UP:rota
25、te();/*上,旋轉(zhuǎn)下落盒子*/break;caseKEY_DOWN:ptDown=&tFast;/*使用tFast時(shí)鐘*/break;caseKEY_LEFT:move(0);/*左移*/break;caseKEY_RIGHT:move(1);/*右移*/break;caseKEY_ESC:closegraph();/*結(jié)束游戲*/exit(0);default:ptDown=&tDown;/*使用原來(lái)速度*/if(testTimer(ptDown)/*在上面已設(shè)置了下落要使用的時(shí)鐘在ptDown里*/if(!drop()/*下落,失敗返回0*/putBox();/*寫到地
26、圖里*/clear();prscore();spe();setcolor(6);/*清除滿行*/if(!newfall()/*新建下落,失敗則游戲結(jié)束*/setcolor(14);settextstyle(0,0,2);outtextxy(100,200,"GAMEOVER");/*游戲結(jié)束,在屏幕上打印字符串*/outtextxy(100,240,"THANKYOU");sleep(3);exit(0);if(testTimer(&trender)/*最后.渲染.*/render();10.最后main函數(shù)已經(jīng)介紹完畢,只需在開始加上程序所需的
27、頭文件和值的宏定義后整個(gè)程序就全部完畢#include<stdio.h>#include<stdlib.h>#include<bios.h>/*這里須要讀取系統(tǒng)運(yùn)行時(shí)間來(lái)作為定時(shí)器*/#include<graphics.h>/*很不幸,TC2的簡(jiǎn)單圖形,讓我放棄了用*/#include<conio.h>/*win32+openGL來(lái)講解.*/#defineMAX_X14/*可見最大X*/#defineMAX_Y21/*可見最大Y*/*我們定義了最大的可見X和Y,那么即還有不可見的部分,事實(shí)上地圖(大盒子)里的左右兩側(cè)和底部各兩行都被1填充,這樣大大簡(jiǎn)化出界的判斷,事實(shí)上,在本例中沒(méi)有這樣的代碼,因?yàn)榕赃呌幸蝗?阻止小盒子越出大盒子的按制范圍*/#defineMAX_C7/*最大種類,這個(gè)無(wú)須解釋*/#defineFALSE0#defineTRUE1到此為止,整個(gè)程序全部結(jié)束,詳解到此完畢。四、調(diào)試分析1. 開始第一次運(yùn)行時(shí)方塊不能顯示出來(lái),只能看到一個(gè)大白方框中幾個(gè)空的白色的線,方塊中間沒(méi)東西,并且這個(gè)虛方塊下落時(shí)不能被控制,這是源于在初始化界面時(shí)并沒(méi)有將方塊內(nèi)部進(jìn)行填充,再加用
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 年產(chǎn)3200噸稀土氧化物生產(chǎn)線項(xiàng)目可行性研究報(bào)告寫作模板-拿地申報(bào)
- 價(jià)值鏈分析與管理會(huì)計(jì)
- 素質(zhì)測(cè)評(píng)技術(shù)與方法
- 中移鐵通有限公司介紹
- 母嬰衣物知識(shí)培訓(xùn)課件
- 初三春季開學(xué)第一課主題班會(huì)
- 公共財(cái)政轉(zhuǎn)型與政府衛(wèi)生籌資責(zé)任的回歸
- 2025版氣候變化應(yīng)對(duì)項(xiàng)目捐贈(zèng)協(xié)議書范本3篇
- 蜜雪冰城品牌介紹
- 臨床醫(yī)院感染管理辦法
- 小學(xué)三年級(jí)下冊(cè)英語(yǔ)(牛津上海一起點(diǎn))全冊(cè)語(yǔ)法知識(shí)點(diǎn)總結(jié)
- 2024秋期國(guó)家開放大學(xué)《建筑工程項(xiàng)目管理》一平臺(tái)在線形考(作業(yè)1至4)試題及答案
- 臨床5A護(hù)理模式
- 2025屆高考英語(yǔ)一輪復(fù)習(xí)讀后續(xù)寫說(shuō)課課件
- 潔柔形象升級(jí)與整合內(nèi)容營(yíng)銷方案
- 2025屆高考數(shù)學(xué)一輪復(fù)習(xí)建議 概率與統(tǒng)計(jì)專題講座
- 廣東省公務(wù)員考試筆試真題及答案
- 吸入療法在呼吸康復(fù)應(yīng)用中的中國(guó)專家共識(shí)2022版
- 風(fēng)險(xiǎn)分級(jí)管控和隱患排查治理體系培訓(xùn)考試題參考答案
- 部編版二年級(jí)下冊(cè)語(yǔ)文第四單元教學(xué)設(shè)計(jì)含語(yǔ)文園地四
- 江西省第一屆職業(yè)技能大賽分賽場(chǎng)項(xiàng)目技術(shù)文件(世賽選拔)網(wǎng)絡(luò)安全
評(píng)論
0/150
提交評(píng)論