版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 成 績 評 定 表</b></p><p><b> 課程設計任務書</b></p><p><b> 目 錄</b></p><p> 1.課設軟件主要功能 …………………………………………1</p><p> 2.類總體設
2、 …………………………………………..1</p><p> 2.1類組合關系圖 ………………………………….………1</p><p> 2.2主類 ……………………………….…………2 </p><p> 2.3其它類 …………………….……………………..2</p><p> 3.
3、類詳細設計… ………………………………………2</p><p> 3.1 ERS_Block主類 ……..…………………………….……..2 </p><p> 3.2 Command處理控制類… ….……………………….….…4</p><p> 3.3 GameCanvas游戲畫布類 ………….………………………4</p>
4、<p> 3.4 Block方塊類............……………….…….………………….6</p><p> 4.關鍵類成員函數(shù)流程圖及代碼………………………..….…..7</p><p> 5.軟件運行結果………………………………………………...17</p><p> 結論……………………...…………………………….………20<
5、;/p><p> 參考文獻……………….……………………………………...20</p><p> 1.課設軟件主要功能</p><p> 本系統(tǒng)是一個俄羅斯方塊游戲的系統(tǒng)設計[1],實現(xiàn)的基本功能就是能實現(xiàn)經典俄羅斯方塊游戲的基本功能。如用鍵盤上的空格下左右鍵來控制方塊的變形,移動等功能。點擊控制面板上的開始游戲,游戲暫停,提高級數(shù),降低級數(shù)退出游戲等按鈕來實現(xiàn)游
6、戲的開始,暫停,停止游戲,增加難度,降低難度等功能。 </p><p><
7、;b> 圖1.1功能圖</b></p><p><b> 2.類總體設計</b></p><p><b> 2.1類組合關系圖</b></p><p> 圖2.1. 類組合關系圖</p><p><b> 2.2主類</b></p>&
8、lt;p> ERS_Block繼承Frame類負責游戲全局的控制[2]。對開始游戲、暫停/繼續(xù)游戲、結束游戲、等級設置。玩家可自行設定游戲等級,主要提供10種級別,級別越高,游戲速度越快,難度越大</p><p><b> 2.3其他類</b></p><p> 1.Mypanel繼承Panel類。</p><p> 2.Bloc
9、k是方塊類控制塊的移動,下落變形功能。七種類型方塊的父類,定義了所有類型方塊的共同特征和行為。</p><p> 3.GameCanvas是游戲畫布類,繼承Canvas類,界面設計應遵循簡介美觀方便易用的基本原則在游戲區(qū)顯示方塊。</p><p> 4.Command類是控制按鈕類。</p><p> 5.MyTimer類繼承自線程類Thead。包含run()
10、方法,sleep()方法,控制游戲的速度。</p><p> 6.WinListener類繼承WindowAdapter類。</p><p><b> 3.類詳細設計</b></p><p> 3.1ERS_Block主類</p><p> 圖3.1主類數(shù)據(jù)透視圖</p><p><
11、b> 定義成員變量[3]</b></p><p> 右邊信息窗體的布局 </p><p> MyPanel infoScr = new MyPanel(); </p><p> infoScr.setLayout(new GridLayout(4,1,0,5)); </p><p> infoScr.setSize
12、(120,300); </p><p><b> 定義標簽和初始值 </b></p><p> Label scorep = new Label("分數(shù):",Label.LEFT); </p><p> Label levelp = new Label("級數(shù):",Label.LEFT); <
13、/p><p> 右邊控制按鈕窗體的布局 </p><p> MyPanel controlScr = new MyPanel(); </p><p> controlScr.setLayout(new GridLayout(5,1,0,5)); </p><p> rightScr.add(controlScr); </p>
14、<p><b> 定義按鈕play </b></p><p> Button play_b = new Button("開始游戲"); </p><p> play_b.setSize(new Dimension(50,200)); </p><p> 定義按鈕Level UP </p>&
15、lt;p> Button level_up_b = new Button("提高級數(shù)"); </p><p> level_up_b.setSize(new Dimension(50,200)); </p><p> 定義按鈕Level Down </p><p> Button level_down_b =new Button(&
16、quot;降低級數(shù)"); </p><p> level_down_b.setSize(new Dimension(50,200)); </p><p> 定義按鈕Level Pause </p><p> Button pause_b =new Button("游戲暫停"); </p><p> pau
17、se_b.setSize(new Dimension(50,200)); </p><p><b> 定義按鈕Quit </b></p><p> Button quit_b = new Button("退出游戲"); </p><p> quit_b.setSize(new Dimension(50,200)); ;
18、 </p><p><b> 成員方法</b></p><p> 俄羅斯方塊類的構造方法 </p><p> 方法定義:ERS_Block(String title)</p><p> isGameOver方法</p><p> 方法定義:private boolean isGameOv
19、er() </p><p> 功能描述:該方法是判斷游戲是否該結束了,只需要判斷窗口中的最頂端那一行中是否有方塊,同時也要判斷最底端的是否也有,如果都有即結束。 </p><p> 3.2Command處理控制類</p><p> 圖3.2Command類數(shù)據(jù)透視圖</p><p><b> 成員變量[4]:</b&g
20、t;</p><p><b> 給按鈕編號</b></p><p> int button_play </p><p> int button_levelup </p><p> int button_leveldown </p><p> int button_quit ; <
21、;/p><p> int button_pause </p><p> int curButton; </p><p> GameCanvas scr;</p><p><b> 成員方法:</b></p><p> 控制按鈕類的構造方法</p><p> 方法定
22、義:Command(int button,GameCanvas scr)</p><p><b> 按鈕執(zhí)行方法 </b></p><p> 方法定義:public void actionPerformed (ActionEvent e)</p><p> 功能:點擊按鈕實現(xiàn)游戲的開始,結束,升級,降級,暫停[5]。</p>
23、<p> 3.3GameCanvas游戲畫布類</p><p> 圖3.3GameCanvas類數(shù)據(jù)透視圖</p><p><b> 成員變量:</b></p><p> 小方塊邊長 :final int 0unitSize = 30</p><p> 正方格的行數(shù): int rowNum</
24、p><p> 方格的列數(shù) :int columnNum</p><p> 允許有多少行未削 :int maxAllowRowNum</p><p> 新出現(xiàn)塊的起始行坐標 :int blockInitRow</p><p> 出現(xiàn)塊的起始列坐標: int blockInitCol</p><p> 屏幕數(shù)組: i
25、nt [][] scrArr</p><p> 對方快的引用:Block b</p><p> 2.畫布類的構造方法</p><p><b> 成員方法[5]:</b></p><p> 初始化屏幕,并將屏幕數(shù)組清零的方法</p><p> 方法定義 :void initScr()<
26、;/p><p><b> 重新刷新畫布方法</b></p><p> 方法定義 :public void paint(Graphics g)</p><p><b> 畫方塊的方法</b></p><p> 方法定義 : public void drawUnit(int row,int col,
27、int type)</p><p> 功能:以背景為顏色畫,畫正在下落的方塊,畫已經落下的方塊。 </p><p> 塊的初始v行坐標方法</p><p> 方法定義 : public int getInitRow()</p><p> 返回新塊的初始行坐標 :return(blockInitRow)</p><p
28、> 返回新塊的初始列坐標方法</p><p> 方法定義 :public int getInitCol()</p><p> 返回新塊的初始列坐標 :return(blockInitCol)</p><p><b> 滿行刪除方法</b></p><p> 方法定義 :void deleteFullLin
29、e()</p><p> 功能:這個就是實現(xiàn)如何將行消除的,其實就是在判斷了該行該消除時候將上面的方塊都向下平移一格,這樣在實現(xiàn)程序界面也就給玩家是消一行的視覺效果[6]。</p><p> 3.3Block方塊類</p><p> 圖3.3Block類數(shù)據(jù)透視圖</p><p><b> 成員變量:</b>&l
30、t;/p><p> 塊的模式編號:int blockType; </p><p> 塊的翻轉狀態(tài):int turnState; </p><p> 塊的下落狀態(tài):int blockState; </p><p> 塊在畫布上的坐標:int row,col; </p><p> GameCanvas scr;
31、</p><p><b> 成員方法:</b></p><p> fallDown方法</p><p> 方法定義:public void fallDown ()</p><p> 功能描述:實現(xiàn)方塊的運行,下落。</p><p> leftMove()</p><p
32、> 方法方法定義:public synchronized boolean leftMove()</p><p> 功能描述:將當前畫移動到所左面的位置。</p><p> rightMove()方法</p><p> 方法定義:private boolean rightMove ()</p><p> 功能描述:將方塊想右邊移
33、動。</p><p><b> 方法</b></p><p> 方法定義:public void turnNext()</p><p> 功能描述:實現(xiàn)方塊的旋轉。</p><p> leftturn方法</p><p> 方法定義:private synchronized boolea
34、n leftturn()</p><p> 功能描述:將當前塊實現(xiàn)翻轉。</p><p> deleteFullLine方法</p><p> 方法定義:private boolean deleteFullLine()</p><p> 功能描述:實現(xiàn)滿行刪除的方法。</p><p><b> er
35、ase方法</b></p><p> 方法定義:private void erase()</p><p> 功能描述:將當前塊從畫布的對應位置移除。</p><p><b> display方法</b></p><p> 方法定義:private void display()</p>&
36、lt;p> 功能描述:實現(xiàn)重畫畫布的時候顯示當前塊</p><p> 4.關鍵類成員函數(shù)流程圖及代碼</p><p><b> 4.1系統(tǒng)流程圖</b></p><p><b> 4.2源代碼[7]</b></p><p> import java.awt.*; </p>
37、<p> import java.awt.event.*; //俄羅斯方塊類 </p><p> class ERS_Block extends Frame{ </p><p> public static boolean isPlay=false; </p><p> public static int level=1,score=0; &l
38、t;/p><p> public static TextField scoreField,levelField; </p><p> public static MyTimer timer; </p><p> GameCanvas gameScr; </p><p> public static void main(String[] a
39、rgus){ </p><p> ERS_Block ers = new ERS_Block("俄羅斯方塊游戲 "); </p><p> WindowListener win_listener = new WinListener(); </p><p> ers.addWindowListener(win_listener); </
40、p><p><b> } </b></p><p> //俄羅斯方塊類的構造方法 </p><p> ERS_Block(String title){ </p><p> super(title); </p><p> setSize(600,480); </p><p&
41、gt; setLayout(new GridLayout(1,2)); </p><p> gameScr = new GameCanvas(); </p><p> gameScr.addKeyListener(gameScr);</p><p> timer = new MyTimer(gameScr); </p><p> t
42、imer.setDaemon(true); </p><p> timer.start(); </p><p> timer.suspend(); </p><p> add(gameScr); </p><p> Panel rightScr = new Panel(); </p><p> rightSc
43、r.setLayout(new GridLayout(2,1,0,30)); </p><p> rightScr.setSize(120,500); </p><p> add(rightScr); //右邊信息窗體的布局 </p><p> MyPanel infoScr = new MyPanel(); </p><p> in
44、foScr.setLayout(new GridLayout(4,1,0,5)); </p><p> infoScr.setSize(120,300); </p><p> rightScr.add(infoScr); //定義標簽和初始值 </p><p> Label scorep = new Label("分數(shù):",Label.LE
45、FT); </p><p> Label levelp = new Label("級數(shù):",Label.LEFT); </p><p> scoreField = new TextField(8); </p><p> levelField = new TextField(8); </p><p> scoreFi
46、eld.setEditable(false); </p><p> levelField.setEditable(false); </p><p> infoScr.add(scorep); </p><p> infoScr.add(scoreField); </p><p> infoScr.add(levelp); </p
47、><p> infoScr.add(levelField); </p><p> scorep.setSize(new Dimension(20,60)); </p><p> scoreField.setSize(new Dimension(20,60)); </p><p> levelp.setSize(new Dimension(
48、20,60)); </p><p> levelField.setSize(new Dimension(20,60)); </p><p> scoreField.setText("0"); </p><p> levelField.setText("1"); //右邊控制按鈕窗體的布局 </p><
49、p> MyPanel controlScr = new MyPanel(); </p><p> controlScr.setLayout(new GridLayout(5,1,0,5)); </p><p> rightScr.add(controlScr); //定義按鈕play </p><p> Button play_b = new Butt
50、on("開始游戲"); </p><p> play_b.setSize(new Dimension(50,200)); </p><p> play_b.addActionListener(new Command(Command.button_play,gameScr)); //定義按鈕Level UP </p><p> Button
51、level_up_b = new Button("提高級數(shù)"); </p><p> level_up_b.setSize(new Dimension(50,200)); </p><p> level_up_b.addActionListener(new Command(Command.button_levelup,gameScr)); </p>&
52、lt;p> Button level_down_b =new Button("降低級數(shù)"); </p><p> level_down_b.setSize(new Dimension(50,200)); </p><p> level_down_b.addActionListener(new Command(Command.button_leveldown,
53、gameScr)); </p><p> Button pause_b =new Button("游戲暫停"); </p><p> pause_b.setSize(new Dimension(50,200)); </p><p> pause_b.addActionListener(new Command(Command.button_p
54、ause,gameScr)); </p><p> Button quit_b = new Button("退出游戲"); </p><p> quit_b.setSize(new Dimension(50,200)); </p><p> quit_b.addActionListener(new Command(Command.butto
55、n_quit,gameScr)); </p><p> controlScr.add(play_b); </p><p> controlScr.add(level_up_b); </p><p> controlScr.add(level_down_b); </p><p> controlScr.add(pause_b); <
56、;/p><p> controlScr.add(quit_b); </p><p> setVisible(true); </p><p> gameScr.requestFocus(); </p><p><b> } </b></p><p><b> //游戲畫布類 <
57、/b></p><p> class GameCanvas extends Canvas implements KeyListener{ </p><p> final int unitSize = 30; //小方塊邊長 </p><p> int rowNum; //正方格的行數(shù) </p><p> int columnNu
58、m; //正方格的列數(shù) </p><p> int maxAllowRowNum; //允許有多少行未削 </p><p> int blockInitRow; //新出現(xiàn)塊的起始行坐標 </p><p> int blockInitCol; //新出現(xiàn)塊的起始列坐標 </p><p> int [][] scrArr; //屏幕數(shù)組
59、</p><p> Block b; //對方快的引用 //畫布類的構造方法 </p><p> GameCanvas(){ </p><p> rowNum = 15; </p><p> columnNum = 10; </p><p> maxAllowRowNum = rowNum - 2; <
60、/p><p> b = new Block(this); </p><p> blockInitRow = rowNum - 1; </p><p> blockInitCol = columnNum/2 - 2; </p><p> scrArr = new int [32][32]; </p><p><
61、b> } </b></p><p><b> }</b></p><p><b> //畫方塊的方法 </b></p><p> public void drawUnit(int row,int col,int type){ </p><p> scrArr[row][c
62、ol] = type; </p><p> Graphics g = getGraphics(); </p><p> switch(type){ //表示畫方快的方法 </p><p> case 0: g.setColor(Color.black);break; //以背景為顏色畫 </p><p> case 1: g.setC
63、olor(Color.blue);break; //畫正在下落的方塊 </p><p> case 2: g.setColor(Color.magenta);break; //畫已經落下的方法 </p><p><b> } </b></p><p> g.fill3DRect(col*unitSize,getSize().height-
64、(row+1)*unitSize,unitSize,unitSize,true); </p><p> g.dispose(); </p><p><b> } </b></p><p> public Block getBlock(){ </p><p> return b; //返回block實例的引用 &l
65、t;/p><p><b> } </b></p><p><b> } </b></p><p><b> //滿行刪除方法 </b></p><p> void deleteFullLine(){ </p><p> int full_line_
66、num = 0; </p><p> int k = 0; </p><p> for (int i=0;i<rowNum;i++){ </p><p> boolean isfull = true; </p><p> L1:for(int j=0;j<columnNum;j++) </p><p&g
67、t; if(scrArr[i][j] == 0){ </p><p><b> k++; </b></p><p> isfull = false; </p><p> break L1; </p><p><b> } </b></p><p> if(isfu
68、ll) full_line_num++; </p><p> if(k!=0 && k-1!=i && !isfull) </p><p> for(int j = 0; j < columnNum; j++){ </p><p> if (scrArr[i][j] == 0) </p><p>
69、 drawUnit(k-1,j,0); </p><p><b> else </b></p><p> drawUnit(k-1,j,2); </p><p> scrArr[k-1][j] = scrArr[i][j]; </p><p><b> } </b></p>&
70、lt;p><b> } </b></p><p> for(int i = k-1 ;i < rowNum; i++){ </p><p> for(int j = 0; j < columnNum; j++){ </p><p> drawUnit(i,j,0); </p><p> scr
71、Arr[i][j]=0; </p><p><b> } </b></p><p><b> } </b></p><p> ERS_Block.score += full_line_num; </p><p> ERS_Block.scoreField.setText("&quo
72、t;+ERS_Block.score); </p><p><b> }</b></p><p> //處理鍵盤輸入的方法 </p><p> public void keyPressed(KeyEvent e){ </p><p> if(!ERS_Block.isPlay) </p><p
73、><b> return; </b></p><p> switch(e.getKeyCode()){ </p><p> case KeyEvent.VK_DOWN:b.fallDown();break; </p><p> case KeyEvent.VK_LEFT:b.leftMove();break; </p>
74、<p> case KeyEvent.VK_RIGHT:b.rightMove();break; </p><p> case KeyEvent.VK_SPACE:b.leftTurn();break; </p><p><b> } </b></p><p><b> }</b></p>
75、<p><b> } </b></p><p><b> //處理控制類 </b></p><p> class Command implements ActionListener{ </p><p> static final int button_play = 1; //給按鈕分配編號 </
76、p><p> static final int button_levelup = 2; </p><p> static final int button_leveldown = 3; </p><p> static final int button_quit = 4; </p><p> static final int button
77、_pause = 5; </p><p> static boolean pause_resume = true; </p><p> int curButton; //當前按鈕 </p><p> GameCanvas scr; //控制按鈕類的構造方法 </p><p> Command(int button,GameCanvas
78、 scr){ </p><p> curButton = button; </p><p> this.scr=scr; </p><p><b> }</b></p><p><b> //按鈕執(zhí)行方法 </b></p><p> public void acti
79、onPerformed (ActionEvent e){ </p><p> switch(curButton){ </p><p> case button_play:if(!ERS_Block.isPlay){ </p><p> scr.initScr(); </p><p> ERS_Block.isPlay = true;
80、</p><p> ERS_Block.score = 0; </p><p> ERS_Block.scoreField.setText("0"); </p><p> ERS_Block.timer.resume(); </p><p><b> } </b></p><
81、;p> scr.requestFocus(); </p><p><b> break; </b></p><p> case button_levelup:if(ERS_Block.level < 10){ </p><p> ERS_Block.level++; </p><p> ERS_Bl
82、ock.levelField.setText(""+ERS_Block.level); </p><p> ERS_Block.score = 0; </p><p> ERS_Block.scoreField.setText(""+ERS_Block.score); </p><p><b> } </
83、b></p><p> scr.requestFocus(); </p><p><b> break; </b></p><p> case button_leveldown:if(ERS_Block.level > 1){ </p><p> ERS_Block.level--; </p&g
84、t;<p> ERS_Block.levelField.setText(""+ERS_Block.level); </p><p> ERS_Block.score = 0; </p><p> ERS_Block.scoreField.setText(""+ERS_Block.score); </p><p&
85、gt;<b> } </b></p><p> scr.requestFocus(); </p><p><b> break; </b></p><p> case button_pause:if(pause_resume){ </p><p> ERS_Block.timer.susp
86、end(); </p><p> pause_resume = false; </p><p><b> }else{ </b></p><p> ERS_Block.timer.resume(); </p><p> pause_resume = true; </p><p><b
87、> } </b></p><p> scr.requestFocus(); </p><p><b> break; </b></p><p> case button_quit:System.exit(0); </p><p><b> } </b></p>
88、<p><b> } </b></p><p><b> } </b></p><p><b> //方塊類 </b></p><p> class Block { </p><p> static int[][] pattern = { </p&
89、gt;<p> {0x0f00,0x4444,0x0f00,0x4444},//用十六進至表示,本行表示長條四種狀態(tài) </p><p> {0x04e0,0x0464,0x00e4,0x04c4}, </p><p> {0x4620,0x6c00,0x4620,0x6c00}, </p><p> {0x2640,0xc600,0x2640,
90、0xc600}, </p><p> {0x6220,0x1700,0x2230,0x0740}, </p><p> {0x6440,0x0e20,0x44c0,0x8e00}, </p><p> {0x0660,0x0660,0x0660,0x0660} </p><p><b> }; </b></
91、p><p> int blockType; //塊的模式號(0-6) </p><p> int turnState; //塊的翻轉狀態(tài)(0-3) </p><p> int blockState; //快的下落狀態(tài) </p><p> int row,col; //塊在畫布上的坐標 </p><p> Game
92、Canvas scr; //塊類的構造方法 </p><p> Block(GameCanvas scr){ </p><p> this.scr = scr; </p><p> blockType = (int)(Math.random() * 1000)%7; </p><p> turnState = (int)(Math.r
93、andom() * 1000)%4; </p><p> blockState = 1; </p><p> row = scr.getInitRow(); </p><p> col = scr.getInitCol(); </p><p><b> } </b></p><p><
94、;b> //定時線程 </b></p><p> class MyTimer extends Thread{</p><p> GameCanvas scr; </p><p> public MyTimer(GameCanvas scr){ </p><p> this.scr = scr; </p>
95、<p><b> }</b></p><p> public void run(){ </p><p> while(true){ </p><p><b> try{ </b></p><p> sleep((10-ERS_Block.level + 1)*100); &l
96、t;/p><p><b> } </b></p><p> catch(InterruptedException e){} </p><p> if(!scr.getBlock().fallDown()){ </p><p> scr.deleteFullLine(); </p><p>
97、if(scr.isGameEnd()){ </p><p> ERS_Block.isPlay = false; </p><p> suspend(); </p><p><b> }</b></p><p><b> else </b></p><p> scr
98、.getBlock().reset(); </p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p> cl
99、ass WinListener extends WindowAdapter{ </p><p> public void windowClosing (WindowEvent l){ </p><p> System.exit(0); </p><p><b> } </b></p><p><b>
100、}</b></p><p><b> 5.軟件運行結果</b></p><p><b> 圖5.1系統(tǒng)主窗口</b></p><p> 圖5.2方塊翻轉功能</p><p> 圖5.3方塊翻轉功能</p><p> 圖5.4界面消行功能</p>
101、;<p><b> 圖5.6得分情況</b></p><p><b> 圖5.7游戲結束</b></p><p><b> 結論</b></p><p> 學習了《Java面向對象編程》[8]的課程,為了更進一步的提高我們對Java的深入學習,進行了一周的課程設計,我所選擇課程設
102、計是利用Java設計一個簡單的俄羅斯方塊游戲。采用swing界面設計技術[9]設計窗口,按鈕等,并添加事件監(jiān)聽,并采用線程技術[10]控制游戲的速度。俄羅斯方塊的應用程序要求的功能:玩家可以在游戲區(qū)中堆積方塊,并能夠在游戲過程中隨時了解得分情況,可以通過游戲控制功能來選擇開始新的一局游戲,暫停或退出游戲,玩家可以根據(jù)自己的需要自行設定游戲的開始級別,級別越高,游戲的速度越快,難度越大等功能都以完全實現(xiàn)。此俄羅斯方塊游戲可以為用戶提供一個
103、可在普通個人電腦上運行的,界面美觀的,易于控制的俄羅斯方塊游戲。</p><p><b> 參考文獻</b></p><p> [1]《Java面向對象程序設計》 陳明主編,清華大學出版社。</p><p> [2]《JAVA課程設計》 黃明 梁旭 周紹斌編著,電子工業(yè)出版社。</p><p> [3]《JAVA
104、編程寶典》李鐘尉 陳丹丹 張振坤編著,人民郵電出版社</p><p> [4]《.JSP網(wǎng)站編程教程》第1版 屈輝立 陳可明 石武,北京希望電子出版社。 </p><p> [5]《B/S模式構建在線考試系統(tǒng)》 白勇,重慶電力高等??茖W校學報。</p><p> [6]《Java 編程思想》 Bruce E
105、ckel,北京機械工業(yè)出版社</p><p> [7] 《實用Java程序設計教程》 宛延闿,北京機械工業(yè)出版社。</p><p> [8] 《JAVA面向對象程序編程》 張孝祥,北京清華出版社。</p><p> [9]《Java 語言使用教程》 丁振凡,北京郵件大學出版社。 </p><p> [10]《Java 語言使用教程實
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論