




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、附件1: 攀枝花學院學生課程設計(論文)題 目: 俄羅斯方塊 學生姓名: 陳小蝶 學 號: 201310804005 所在院(系): 數學與計算機學院 專 業: 2013級軟件工程 班 級: 軟件工程1班 指 導 教 師: 張會 職稱: 2014年6 月 23日攀枝花學院教務處制攀枝花學院本科學生課程設計任務書題目俄羅斯方塊1、課程設計的目的通過本課程設計使學生能夠較全面的掌握面向對象程序設計的有關概念和開發方法,以便能較全面地理解、掌握和綜合運用所學的知識,提高自身的編程能力。2、課程設計的內容和要求(包括原始數據、技術要求、工作要求等)實現一個俄羅斯游戲,要求:(1)盡量使用圖形用戶界面方
2、式實現(不作硬性要求)(2)可以實現人機對戰,自動判斷勝負(3)界面美觀3、主要參考文獻4、課程設計工作進度計劃序號時間(天)內容安排備注11分析設計準備周一22編程調試階段周至周三31編寫課程設計報告周四41考核周五總計5(天)指導教師(簽字)日期年 月 日教研室意見:年 月 日學生(簽字): 接受任務時間: 年 月 日注:任務書由指導教師填寫。附件3: 課程設計(論文)指導教師成績評定表題目名稱評分項目分值得分評價內涵工作表現20%01學習態度6遵守各項紀律,工作刻苦努力,具有良好的科學工作態度。02科學實踐、調研7通過實驗、試驗、查閱文獻、深入生產實踐等渠道獲取與課程設計有關的材料。03
3、課題工作量7按期圓滿完成規定的任務,工作量飽滿。能力水平35%04綜合運用知識的能力10能運用所學知識和技能去發現與解決實際問題,能正確處理實驗數據,能對課題進行理論分析,得出有價值的結論。05應用文獻的能力5能獨立查閱相關文獻和從事其他調研;能提出并較好地論述課題的實施方案;有收集、加工各種信息及獲取新知識的能力。06設計(實驗)能力,方案的設計能力5能正確設計實驗方案,獨立進行裝置安裝、調試、操作等實驗工作,數據正確、可靠;研究思路清晰、完整。07計算及計算機應用能力5具有較強的數據運算與處理能力;能運用計算機進行資料搜集、加工、處理和輔助設計等。08對計算或實驗結果的分析能力(綜合分析能
4、力、技術經濟分析能力)10具有較強的數據收集、分析、處理、綜合的能力。成果質量45%09插圖(或圖紙)質量、篇幅、設計(論文)規范化程度5符合本專業相關規范或規定要求;規范化符合本文件第五條要求。10設計說明書(論文)質量30綜述簡練完整,有見解;立論正確,論述充分,結論嚴謹合理;實驗正確,分析處理科學。11創新10對前人工作有改進或突破,或有獨特見解。成績指導教師評語指導教師簽名: 年月日 摘 要 近年來,隨著游戲產業的突飛猛進,游戲玩家的技術也是與日俱增,當你看見游戲高手完美的表演時,你是否想過我也能達到那種水平,本程序采用全世界最金典的游戲俄羅斯方塊作為背景,程序設置了鼠標和鍵盤兩個選擇
5、方式,游戲運行時隨著等級的提高而速度加快,這需要玩家快速操作。因此,本程序主要意義是為高手玩家提供訓練平臺。其次也可為剛踏入游戲領域的新手們,提供一個很好的鍛煉機會。 本次課程設計主要解決利用Visual C+設計實現俄羅斯方塊游戲的算法、游戲內部功能、游戲區域的繪圖的程序設計。對于每個俄羅斯方塊各自的形態變化改變到下一個形態利用數組來實現,在程序設計中,采用WIN32機制來實現,并且直接從架構的其中一個類對象中繼承下來,將它完善而變成有某功能特性的物件對象。關鍵詞 俄羅斯方塊 數據結構 算法 數組 Visual C+ 目 錄摘 要一、 緒論2 1.1 課題背景2二、課程設計的要求與目的32.
6、1 課程設計的要求32.2課程設計的目的3三、程序需求分析3.1 功能需求3.2方塊及各種變化需求3.3操作需求 3.31 向上鍵 3.32向下鍵 3.33向右鍵.四、程序流程圖 4.1 主要功能設計 4.2 程序流程圖 4.3 游戲界面 4.4生成方塊 4.5 方塊變形 4.6 方塊顯示 4.7 障礙判斷 4.8 消行記分 4.9 暫停退出 4.10 軟件使用說明五、源程序代碼5.1 源程序代碼六、程序結果 6.1 程序結果參考文獻致 謝56 第一章 緒論 俄羅斯方塊是個老幼皆宜的小游戲,是經久不衰的一款游戲,自從它誕生那天起就一直深受人們的喜愛。幾乎每個人都玩過這個游戲,也是人們接觸最多的
7、一款游戲,它實現由四塊正方形的色塊組成,然后存儲在一個數組的四個元素中,計算機隨機產生不同七種類型的方塊,根據計算機時鐘控制它在一定的時間不停得產生,用戶根據鍵盤的四個方向翻轉、向左、向右和向下操作,(控制鍵的實現是由鍵盤的方向鍵消息函數實現)。然后程序根據這七種方塊堆疊成各種不停得模型。1.1游戲的背景 俄羅斯方塊是一款風靡全球的電視游戲機和掌上游戲機游戲,它曾造成的轟動與造成的經濟價值可言說是游戲史上的一件大事。這款游戲最初是由蘇聯的游戲制作人Alex Pajitnov制作的,它看似簡單但卻變化無窮,令人上癮。相信大多數用戶都還記得為它癡迷得茶飯不思不想的那個俄羅斯方塊時代。 俄羅斯方塊最
8、早還是出現在PC機上,而我國的用戶都是通過紅白機了解、喜歡上它的。現在聯眾又將重新掀起這股讓人沉迷的俄羅斯方塊風潮。對于一般用戶來說,它的規則簡單,容易上手,且u、游戲過程變化無窮,俄羅斯方塊游戲現在基本上是每個手機必備的游戲,種類千變萬化,多種多樣。第二章 課程設計的目的與要求2.1課程設計的目的 本課程是一個綜合性的實踐教學環節,其目的在于促進學生復習和鞏固計算機軟件設計知識,加深對軟件設計方法、軟件設計技術和設計思想的理解,并能運用所學知識進行開發。希望通過本課程設計中簡單系統的開發,使學生掌握軟件設計的基本方法和基本的流程,提高學生的綜合應用能力。2.2課程設計的要求要求用VC+編寫與
9、實現俄羅斯方塊。要求包括系統的需求分析;系統總框圖及每個模塊的設計分析;算法的設計與實現;游戲的內部實現;游戲區域繪畫的實現;系統存在的問題及錯誤處理;列出所有定義的函數及說明;附上源程序;第三章 程序需求分析3.1 功能需求隨機給出不同的形狀下落填充給定的區域,若填滿一條便消掉,記分,設計不同的游戲難度,即方塊下落的速度不同,若在游戲中各形狀填滿了給定區域為輸者。3.2 方塊及各種變換需求本游戲需要七種方塊,而每種方塊還可以進行旋轉。每種方塊每行每列最多只有4個小方塊。可以將它們放在一個n*m的區域內,該區域可以看做是有許多個等面積小方塊構成的區域,而這些區域的狀態只有兩種,被方塊占據或空閑
10、。因此,對于整個游戲區域的空間是被占據或空閑,可以用一位數來標識。對于七種方塊和它們旋轉后的形態我們可以用不同的標識進行標記。對于旋轉,游戲中所有方塊都是按照逆時針旋轉的規則進行的,而且在旋轉過程中它們不會因為旋轉而下降,總會保持在同一高度。任何方塊經過一個旋轉周期還會變回原型。3.3 操作需求 3.31 向上鍵 產生方塊旋轉操作,方塊并非任何情況都能旋轉,如果旋轉后與小方塊矩陣顯示的方塊有沖突或超出邊界是,均不發生旋轉。因此首先要判斷是否有足夠的空間進行旋轉。然后是旋轉是否旋轉。3.32 向下鍵產生方塊加速下落操作,如果方塊已經達到游戲區域底部或者有其他方塊遮擋,則方塊停止下降。3.33 向
11、右鍵產生下落方塊右移操作。首先要判斷此方塊是否能夠發生右移,當越界或被其他顯示方塊阻擋時,則不能右移。第四章 詳細設計4.1 主要功能設計 根據分析,俄羅斯方塊這個程序一共要實現如下幾個功能,開始游戲(F8)、游戲的暫停繼續(S)和退出游戲(Q)。其中游戲控制最為主要和重要,它控制著整個游戲的畫面和有關數據的操作,是游戲的核心部分。暫停和退出功能做成一體,在退出的提示下不做任何操作即可實現暫停的功能。4.2 程序流程圖 根據分析后的程序結構圖設計出相應的流程圖。俄羅斯方塊的內容主要包括游戲開始,畫背景和邊框,顯示分數等級和下一個方塊的預覽圖;根據速度沒隔一定時間方塊自動下落,當有按鍵操作時,根
12、據相應按鍵執行動作,每次動作前要判斷是否動作可以執行。下落方塊滿一行時,消去該行,根據消去行數得到相應分數。分數達到一定程度,等級提升,速度加快。同時可以響應Esc按鍵,提示是否退出程序。 4.3 游戲界面 俄羅斯方塊的游戲界面包括游戲區域邊框、下落方塊繪制、右部計分和預覽圖顯示等。 游戲區域邊框的繪制比較簡單,循環中確定光標的位置輸出特定字符,即可完成邊框繪制。游戲區方塊的繪制,循環從數據數組中依次讀出數據,根據讀到的數據顯示“”,最后組成方塊的形狀,完成方塊的繪制。計分和預覽圖部分先畫出一個矩形區域,然后控制光標在其中顯示分數、等級、預覽圖和提示信息。 4.4 生成方塊 本程序中生成的方塊
13、有7種形狀,每一種方塊以shapeindex標記,在程序運行生成方塊時,調用shapeindex=rand()%5+1;語句,確定當前要顯示的是哪一個方塊形狀。而在實際運行中,第一次需要調用兩次生成方塊函數make(),將先產生的賦給游戲當前方塊,第二個賦給預覽圖方塊。以后每次產生一個方塊,把預覽方塊賦給當前方塊,把新產生的賦給預覽方塊。 4.5 方塊變形 俄羅斯方塊的特點就在于通過方塊的變形拼滿整行來消去該行方塊從而使游戲可以繼續下去,很難想象不能變形的俄羅斯方塊是什么樣子。而變形的過程就是根據當前方塊形狀改變方塊的相對位置,這樣就可以改變方塊的形狀了。在程序中每當按下“”鍵,程序判斷可以變
14、形后,根據當前方塊的形狀序號shapeindex和變化形狀序號changeindex調用相應的方塊數值賦給draw()函數,通過刷新重畫就可以顯示變化后的方塊了。4.6 方塊顯示以上方塊的操作都是數據層面的操作,而真正要在游戲窗口中看到數據的變化,還必須把方塊不斷的繪制出來。這就是draw()函數的作用。把當前運動的方塊對應節點存儲在一個4*4數組里,變形和生成方塊的過程就是更新該數組數據的過程。然后在draw()函數里檢測數組的各個值,并控制光標跳到一定位置,畫出“”組成方塊。 4.7 障礙判斷障礙判斷,就是在方塊運動中或者變形中判斷周圍是否有障礙阻礙下落、移位、變形。當方塊下落遇到下面有方
15、塊或者到達下邊界則應停止下落并記錄數據,存入背景數據數組。變形時應判斷這個變形是否可以進行,如果有障礙則不能變形。例如當方塊達到右邊界,而若變形則會越過邊界,那么這個變形的命令是不應執行的。所有這些判斷都由meet()函數進行,根據是否有障礙返回1或0,再由其他函數接收執行相應操作。4.8 消行計分 游戲玩家拼滿一行后,程序消去滿行,并計分。中當一個方塊下落停止后,程序檢查方塊是否充滿了游戲區域,如果是結束游戲。不是,則判斷是否構成消行條件,從下落方塊的最低點依次向上檢查是否可以消行,根據消去行數分數增加。分數達到一定程度,等級提升,分數暫定為每1000升一級。4.9 暫停退出游戲的友好性在于
16、能考慮用戶的需要,隨時可以暫停/繼續游戲,在不愿繼續游戲時退出游戲。本程序可以在用戶需要的時候響應Esc按鍵,提示是否退出游戲,如果不做選擇即可暫停游戲,等待選擇。程序調試經過調試和修改,程序完全實現設計要求,成功模擬了俄羅斯方塊的運行過程和游戲效果,只是界面略微簡陋,但已從程序層面上實現了游戲,達到了這次實訓的要求和目的。程序正常生成方塊,根據速度值每隔一定時間自動下落,如有操作按鍵按下,根據按鍵實現位移和變形。當方塊滿一行后,可以消除該行,同時記錄分數和等級。按下Esc鍵紅色提示信息正常顯示,可以響應Y,N鍵決定是否退出游戲4.10 軟件使用說明 打開俄羅斯方塊游戲后,通過控制方向區域的“
17、”、“”、“”、“”來控制,“”鍵代表變形轉換,“”、“”、“右”均代表方向鍵,“Q”代表退出游戲鍵。若想暫停游戲,可通過“S”鍵,當初來詢問框是,可不做選擇,則可達到暫停的效果第五章 源代碼源程序代碼(詳細的注釋) #include <windows.h>#include <stdio.h>#include <stdlib.h>#include <time.h>#include <conio.h> class Consolepublic: Console() hStdOutput = INVALID_HANDLE_VALUE; hS
18、tdError = INVALID_HANDLE_VALUE; bool Open( void ) hStdOutput = GetStdHandle( STD_OUTPUT_HANDLE ); hStdError = GetStdHandle( STD_ERROR_HANDLE ); return INVALID_HANDLE_VALUE!=hStdOutput && INVALID_HANDLE_VALUE!=hStdError; inline bool SetTitle( char* title ) / 設置標題 return TRUE=SetConsoleTitle(t
19、itle); bool RemoveCursor( void ) / 去處光標 CONSOLE_CURSOR_INFO cci; if( !GetConsoleCursorInfo( hStdOutput, &cci ) ) return false; cci.bVisible = false; if( !SetConsoleCursorInfo( hStdOutput, &cci ) ) return false; if( !GetConsoleCursorInfo( hStdError, &cci ) ) return false; cci.bVisible = f
20、alse; if( !SetConsoleCursorInfo( hStdError, &cci ) ) return false; return true; bool SetWindowRect( short x, short y ) / 設置窗體尺寸 SMALL_RECT wrt = 0, 0, x, y ; if( !SetConsoleWindowInfo( hStdOutput, TRUE, &wrt ) ) return false; if( !SetConsoleWindowInfo( hStdError, TRUE, &wrt ) ) return fa
21、lse; return true; bool SetBufSize( short x, short y ) / 設置緩沖尺寸 COORD coord = x, y ; if( !SetConsoleScreenBufferSize( hStdOutput, coord ) ) return false; if( !SetConsoleScreenBufferSize( hStdError, coord ) ) return false; return true; bool GotoXY( short x, short y ) / 移動光標 COORD coord = x, y ; if( !S
22、etConsoleCursorPosition( hStdOutput, coord ) ) return false; if( !SetConsoleCursorPosition( hStdError, coord ) ) return false; return true; bool SetColor( WORD color ) / 設置前景色/背景色 if( !SetConsoleTextAttribute( hStdOutput, color ) ) return false; if( !SetConsoleTextAttribute( hStdError, color ) ) ret
23、urn false; return true; bool OutputString( const char* pstr, size_t len=0 ) / 輸出字符串 DWORD n = 0; return TRUE=WriteConsole( hStdOutput, pstr, len?len:strlen(pstr), &n, NULL ); bool OutputStringNoMove( short x, short y, const char* pstr, size_t len=0 ) / 輸出字符串 COORD coord = x, y ; DWORD n = 0; ret
24、urn TRUE=WriteConsoleOutputCharacter( hStdOutput, pstr, len?len:strlen(pstr), coord, &n ); private: HANDLE hStdOutput; HANDLE hStdError;const char bg = " " " " " Begin: F8 " " " " Sleep " " Quit " " " " " " &quo
25、t; "" "" "" "" " " "" " 0" "" " " "" " 00000" ""const char bk7444 = 0,1,1,0 , 1,1,0,0 , 0,0,0,0 , 0,0,0,0 , 1,0,0,0 , 1,1,0,0 , 0,1,0,0 , 0,0,0,0 , 0,1,1,0 , 1,1,0,0 , 0,0,0,0 , 0,
26、0,0,0 , 1,0,0,0 , 1,1,0,0 , 0,1,0,0 , 0,0,0,0 , 1,1,0,0 , 0,1,1,0 , 0,0,0,0 , 0,0,0,0 , 0,1,0,0 , 1,1,0,0 , 1,0,0,0 , 0,0,0,0 , 1,1,0,0 , 0,1,1,0 , 0,0,0,0 , 0,0,0,0 , 0,1,0,0 , 1,1,0,0 , 1,0,0,0 , 0,0,0,0 , 1,1,1,0 , 1,0,0,0 , 0,0,0,0 , 0,0,0,0 , 1,0,0,0 , 1,0,0,0 , 1,1,0,0 , 0,0,0,0 , 0,0,1,0 , 1,
27、1,1,0 , 0,0,0,0 , 0,0,0,0 , 1,1,0,0 , 0,1,0,0 , 0,1,0,0 , 0,0,0,0 , 1,1,1,0 , 0,0,1,0 , 0,0,0,0 , 0,0,0,0 , 1,1,0,0 , 1,0,0,0 , 1,0,0,0 , 0,0,0,0 , 1,0,0,0 , 1,1,1,0 , 0,0,0,0 , 0,0,0,0 , 0,1,0,0 , 0,1,0,0 , 1,1,0,0 , 0,0,0,0 , 1,1,0,0 , 1,1,0,0 , 0,0,0,0 , 0,0,0,0 , 1,1,0,0 , 1,1,0,0 , 0,0,0,0 , 0,
28、0,0,0 , 1,1,0,0 , 1,1,0,0 , 0,0,0,0 , 0,0,0,0 , 1,1,0,0 , 1,1,0,0 , 0,0,0,0 , 0,0,0,0 , 0,1,0,0 , 1,1,1,0 , 0,0,0,0 , 0,0,0,0 , 0,1,0,0 , 1,1,0,0 , 0,1,0,0 , 0,0,0,0 , 1,1,1,0 , 0,1,0,0 , 0,0,0,0 , 0,0,0,0 , 1,0,0,0 , 1,1,0,0 , 1,0,0,0 , 0,0,0,0 , 1,1,1,1 , 0,0,0,0 , 0,0,0,0 , 0,0,0,0 , 1,0,0,0 , 1,
29、0,0,0 , 1,0,0,0 , 1,0,0,0 , 1,1,1,1 , 0,0,0,0 , 0,0,0,0 , 0,0,0,0 , 1,0,0,0 , 1,0,0,0 , 1,0,0,0 , 1,0,0,0 ;const WORD COLOR_A = FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY; / 運動中的顏色const WORD COLOR_B = FOREGROUND_RED; / 固定不動的顏色const WORD COLOR_C = FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_
30、BLUE; / 空白處的顏色int score = 0, level = 0;char data1911 = 0 ;int next = -1;int x=4, y=-2, c=-1, z=0; / x坐標,坐標,當前方塊,方向Console csl; / 定義控制臺對象void DrawScoreLevel( void ) / 繪制得分 char tmp6; sprintf( tmp, "%05d", score ); csl.OutputStringNoMove( 31, 19, tmp, 5 ); sprintf( tmp, "%1d", leve
31、l ); csl.OutputStringNoMove( 35, 15, tmp, 1 );void DrawNext( void ) / 繪制 "next框" 中的圖形 for( int i=0; i<2; +i ) for( int j=0; j<4; +j ) csl.OutputStringNoMove( 28+j*2, 10+i, bknext0ij=0?"":"", 2 ); void DrawOver( void ) / 游戲結束 csl.OutputStringNoMove( 28, 10, "&
32、quot; ); csl.OutputStringNoMove( 28, 11, "" );void Draw( WORD color ) for( int i=0; i<4; +i ) if( y+i<0 | y+i>= 19 ) continue; for( int j=0; j<4; +j ) if( bkczij = 1 ) csl.SetColor( color ); csl.GotoXY( 2+x*2+j*2, 1+y+i ); csl.OutputString( "", 2 ); bool IsFit( int x,
33、 int y, int c, int z ) / 給定的x,y,c,z是否可行 for( int i=0; i<4; +i ) for( int j=0; j<4; +j ) if( bkczij=1 ) if( y+i < 0 ) continue; if( y+i>=19 | x+j<0 | x+j>=11 | datay+ix+j=1 ) return false; return true;void RemoveRow( void ) / 消行 const char FULLLINE = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
34、; int linecount = 0; for( int i=0; i<19; +i ) if( 0 = memcmp( datai, FULLLINE, 11 ) ) +linecount; for( int m=0; m<11; +m ) for( int n=i; n>1; -n ) datanm = datan-1m; csl.SetColor( datanm=1?COLOR_B:COLOR_C ); csl.GotoXY( 2+m*2, 1+n ); csl.OutputString( "", 2 ); data0m = 0; csl.Outp
35、utStringNoMove( 2+m*2, 1, "", 2 ); char data1911 = 0 ;if( linecount = 0 ) return; int _score = 0; switch( linecount ) case 1: _score = 100; break; case 2: _score = 300; break; case 3: _score = 700; break; case 4: _score = 1500;break; score += _score; if( score > 99999 ) score = 99999; l
36、evel = score/10000; DrawScoreLevel();void MoveTrans( void ) / 逆時針翻轉 if( IsFit( x, y, c, (z+1)%4 ) ) Draw( COLOR_C ); z=(z+1)%4; Draw( COLOR_A ); void MoveLeft( void ) / 向左移 if( IsFit( x-1, y, c, z ) ) Draw( COLOR_C ); -x; Draw( COLOR_A ); void MoveRight( void ) / 向右移 if( IsFit( x+1, y, c, z ) ) Draw( COLOR_C ); +x; Draw( COLOR_A ); void MoveDown( void ) / 向下移 if( IsFit( x, y+1, c, z ) ) Draw( COLOR_C ); +y; Draw( COLOR_A ); else if( y != -2 ) / 觸底 Draw( COLOR_B ); for( int i=0; i<4; +i ) if( y+i<0 ) continue; for( int j=0; j<4; +j ) if( bkczij = 1 ) datay+ix+j =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省紹興一中2024-2025學年物理高二下期末質量檢測模擬試題含解析
- 云南省曲靖一中麒麟學校2025年高二下數學期末經典試題含解析
- 云南省玉溪市玉溪第一中學2024-2025學年高二生物第二學期期末學業質量監測模擬試題含解析
- 重慶第十一中學校2025年高二下物理期末綜合測試模擬試題含解析
- 云南省牟定縣一中2025年高二下數學期末經典試題含解析
- 云南省楚雄市古城中學2025年高二下化學期末統考模擬試題含解析
- 拆遷安置房交易合同及房屋產權繼承約定
- 車輛維修后質量保障及過戶合同范本
- 藝術品典當擔保合同示例
- 設備租賃合同(20篇)
- 2023-2024學年上海市寶山區八年級(下)期末數學試卷 (含答案)
- 三級安全教育試題(公司級、部門級、班組級)
- 組織學與胚胎學智慧樹知到答案2024年山東第一醫科大學
- MOOC 模擬電子電路實驗-東南大學 中國大學慕課答案
- GB/T 41666.4-2024地下無壓排水管網非開挖修復用塑料管道系統第4部分:原位固化內襯法
- DB21∕T 3275-2020 企業安全風險分級管控和隱患排查治理通則
- DB63T1743-2019青海省建筑工程資料管理規程
- 電機維修報價單(共1頁)
- 小品劇本《清考風波》
- 國際快遞常用形式發票(DHL UPS FedEx)
- 配料間管理制度(食品)
評論
0/150
提交評論