版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、J2ME手機游戲開發(fā)技術實驗報告實驗名稱:益智類游戲炸彈人1 實驗目的 利用J2ME有關知識,設計一款益智類(PUZ)炸彈人(Bombman)游戲程序,是我們能夠掌握JavaME游戲開發(fā)的基本技巧。2 實驗環(huán)境 Windows 7操作系統(tǒng),Eclipse,WTK2.5.1,JDK1.63 實驗內(nèi)容 利用自己所學的J2ME知識,進行游戲開發(fā),該游戲的創(chuàng)意是游戲主角在一個隨機生存的地圖中放置炸彈,以消滅地圖中所有的敵人為目的。游戲地圖被設計成一個多行多列的棋盤,游戲中的主角和敵人每次都只能按照棋盤中相鄰的棋盤格進行移動,而且在地圖中還存在不同的障礙物,用來阻擋游戲主角和敵人的移動。游戲主角可以在沒
2、有障礙物的地方防止炸彈來引爆敵人或障礙物來獲得去路。從中有以下是幾個元素的詳細功能:(1) 空白區(qū):是游戲主角和敵人可以移動的位置及放置炸彈的位置。(2) 巖石:地圖中的障礙物,用來阻止游戲主角和敵人的且不能被炸彈摧毀。(3) 磚墻:也是用來阻止的,不過能被炸彈摧毀變成空白區(qū)。(4) 敵人:是消滅游戲主角的一方,它需要游戲主角用炸彈將其炸死,其所處 的地方也會變?yōu)榭瞻讌^(qū),敵人在空白區(qū)來去自如,一旦碰到游戲主 角,游戲主角會被殺死。(5) 游戲主角:游戲中由玩家控制的一方,在空白區(qū)移動,可以放置炸彈。4 實驗步驟(代碼分析) 該游戲是一個11*11的棋盤,用一個char型的二維數(shù)組來表示該棋盤,
3、二維數(shù)組中的每一個數(shù)組元素就代表了游戲棋盤中的一個棋盤格。該游戲采用面向?qū)ο蟮某绦蛟O計方法,主要的功能都封裝到不同的類中,定義了以下幾個類:1.Board類:該類作為程序的模型定義類,在其中定義了游戲中所使用的數(shù) 據(jù)結(jié)構(gòu)以及對這些數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)進行設置和獲取的方法。2.BoardView類:該類作為程序的視圖定義類,也是游戲的畫布屏幕類,在 該類中定義了如何根據(jù)用戶的游戲動作繪制對應的游戲運 行畫面的方法。3. Bomb類:該類表示游戲中的炸彈,定義了如何顯示炸彈的爆炸效果以及炸 彈爆炸后對其他相關元素的影響的方法。4.Enemy類:該類表示游戲中的敵人,具體定義了敵人如何移動以及判斷敵 人
4、是否死亡的方法。5.Player類:該類表示游戲中的主角,定義了游戲主角如何移動、如何防止 炸彈以及判斷游戲是否死亡的方法。6.Img類:該類定義了游戲中各種圖像的構(gòu)造方法。7.jBombMan類:該類是程序的MIDlet類。(1)jBombMan.java private Display oDisplay; /屏幕對象private BoardView oBoardView; /棋盤視圖對象private Board oBoard; /棋盤對象private Player oPlayer; /主角對象private Enemy oEnemy; /敵人對象(2) Board.java/定義棋盤
5、的二維數(shù)組public char chBoard;/*N - None 表示什么也沒有W - Wall 表示磚墻L - Pillar 表示巖石P - Player 表示游戲主角E - Enemy 表示敵人B - Bomb 表示炸彈U - Bomb under player 表示主角正在放置炸彈X - Exploding 表示炸彈爆炸*/ /聲明一個隨機數(shù)對象privateRandom random; /聲明棋盤的行和列數(shù)public int iCols, iRows; /聲明判斷游戲是否結(jié)束的標識public volatile boolean isGameOver; /聲明判斷是否玩家勝利的標
6、識public volatile boolean isWin; /構(gòu)造函數(shù),初始化棋盤的行數(shù)和列數(shù),并構(gòu)造隨機數(shù)對象public Board( int cols, int rows ) /定義棋盤的初始化方法public void init() /判斷某個棋盤格中是否是給定的元素public boolean isElement( char ch, int x, int y ) /獲取指定的某個棋盤格中的元素public char getElement( int x, int y ) /設置指定的某個棋盤格中的元素public void setElement( char ch, int x, i
7、nt y ) /判斷給定的位置是否在敵人的攻擊范圍內(nèi)public boolean near( char ch, int x, int y ) /判斷給定的位置是否可以向某個方向移動2步public boolean near2( char ch, int x, int y ) (3)BoardView.javaprivate Board oBoard;private Player oPlayer;private Enemy oEnemy;/定義背景色private final int BackgroundColor = 0xffffff;/定義每個棋盤格的大小private final int
8、iCellSize = 20;/聲明內(nèi)部邊框距離坐標原點的橫坐標距離private final int iLeft = 10;/聲明內(nèi)部邊框距離坐標原點的縱坐標距離private final int iTop = 10; public BoardView( Board board )public void setPlayer( Player player )public void setEnemy( Enemy enemy )/繪制游戲屏幕public void paint( Graphics g )/定義繪制游戲結(jié)束的方法private void paintGameOver( Graphic
9、s g )/定義繪制游戲玩家獲勝的方法private void paintWin( Graphics g )/繪制游戲棋盤邊框的方法private void paintFrame( Graphics g )/定義繪制棋盤的方法private void paintBoard( Graphics g )/定義響應按鍵按下的事件處理方法public void keyPressed( int code )/定義游戲結(jié)束或者玩家勝利時的事件處理方法private void keyForInit( int action )/定義游戲過程中的事件處理方法private void keyForPlay( in
10、t action )/定義重新繪制棋盤格的方法public void repaintCells( int x, int y, int w, int h ) (4)Player.javaprivate Board oBoard;private BoardView oBoardView;private Enemy oEnemy;private Bomb oBomb;private Random random;private int iX, iY;/游戲主角的構(gòu)造函數(shù)public Player( Board board, BoardView boardview )/游戲主角的初始化方法public
11、void init()public void setEnemy( Enemy enemy )/清除炸彈對象的方法public void clearBomb()/判斷游戲主角能否移動到給定的棋盤格上private boolean canGo( int x, int y )/定義放置炸彈的方法public void fire()/定義游戲主角向左移動的方法public void left()/定義游戲主角向右移動的方法public void right()/定義游戲主角向上移動的方法public void up()/定義游戲主角向下移動的方法public void down()/定義游戲主角死掉的
12、方法public void die() (5)Enemy.java private Board oBoard;private BoardView oBoardView;public Player oPlayer; /設置敵人每次移動的間隔時間private final int iMoveTime = 500;private Random random; /聲明游戲中敵人的數(shù)量private int iNumbers; /聲明所有敵人所在位置的二維數(shù)組private int arrPositions;private volatile boolean stopThread = false;/初始化
13、敵人對象的構(gòu)造函數(shù)public Enemy( Board board, BoardView boardview, Player player, int numbers ) /敵人對象的初始化方法public void init()public void stopThread()/定義線程的方法體,在該方法中將定義敵人如何進行移動public void run()/定義敵人的移動方法private void move( int i )/判斷能否移動到指定棋盤格位置上的方法private boolean canGo( int x, int y )/定義給定位置上的敵人死亡的方法public voi
14、d die( int x, int y )/定義游戲中的所有敵人對象全部死亡的方法public void dieAll() (6) Bomb.java private Board oBoard;private BoardView oBoardView;private Player oPlayer;private Enemy oEnemy;/定義炸彈爆炸前等待的時間private final int iExplodingTime = 4000; /定義爆炸效果顯示的時間private final int iDisapearTime = 1000;private int iX, iY;privat
15、e volatile boolean stopThread = false;/炸彈類的構(gòu)造方法public Bomb( Board board, BoardView boardview, Player player, Enemy enemy, int x, int y )public void stopThread()/根據(jù)給定的單元格判斷炸彈爆炸后的結(jié)果的方法private void explode( int x, int y )/清空給定的單元格中的元素private void clear( int x, int y )/定義線程的方法體,在該方法中將定義炸彈爆炸的效果public voi
16、d run() (7) img.java /創(chuàng)建游戲中炸彈圖像的方法,其余圖像方法一樣public static Image imgBomb = Image.createImage(new byte ., (int)0, (int)163 );5 實驗結(jié)果與分析(包括代碼和實驗總結(jié))程序代碼:1. 游戲的模型類實現(xiàn)(1) Board.javapackage com.mot.j2me.midlets.jbombman;import java.util.*;/定義游戲的模型的類,可以將其看做一個棋盤public class Board /定義棋盤的二維數(shù)組public char chBoard;/
17、*N - None 表示什么也沒有W - Wall 表示磚墻L - Pillar 表示巖石P - Player 表示游戲主角E - Enemy 表示敵人B - Bomb 表示炸彈U - Bomb under player 表示主角正在放置炸彈X - Exploding 表示炸彈爆炸*/ /聲明一個隨機數(shù)對象privateRandom random; /聲明棋盤的行和列數(shù)public int iCols, iRows; /聲明判斷游戲是否結(jié)束的標識public volatile boolean isGameOver; /聲明判斷是否玩家勝利的標識public volatile boolean i
18、sWin;/構(gòu)造函數(shù),初始化棋盤的行數(shù)和列數(shù),并構(gòu)造隨機數(shù)對象public Board( int cols, int rows ) /構(gòu)造隨機數(shù)對象 random = new Random();iCols = cols;iRows = rows; /構(gòu)造表示棋盤的二維數(shù)組chBoard = new chariColsiRows; /調(diào)用棋盤的初始化方法init(); /定義棋盤的初始化方法public void init() /表示游戲結(jié)束的標識設置為falseisGameOver = false; /表示玩家獲勝的標識設置為falseisWin = false; /遍歷二維數(shù)組,為數(shù)組的每個
19、元素設置值為N,表示游戲中每個棋盤格上都為空for( int i=0; iiCols; i+ )for( int j=0; jiRows; j+ )chBoardij = N;/ 遍歷二維數(shù)組,每相隔一個元素設置值為L,表示游戲中每相隔的棋盤格上放置一個巖石for( int i=1; iiCols; i+=2 )for( int j=1; jiRows; j+=2 )chBoardij = L;/ 遍歷二維數(shù)組,在棋盤上非巖石的位置隨機放置磚墻for( int i=0; iiCols; i+ )for( int j=0; jiRows; j+ ) /判斷當前遍歷到的棋盤格是否為空if( chB
20、oardij = N ) /如果當前棋盤格位置為空,則根據(jù)隨機數(shù)的判斷條件是否成立來判斷是否放置磚墻if( Math.abs( random.nextInt() ) % 2 = 0 )chBoardij = W;/判斷某個棋盤格中是否是給定的元素public boolean isElement( char ch, int x, int y ) if( x = iCols )return false;if( y = iRows )return false;return( chBoardxy = ch );/獲取指定的某個棋盤格中的元素public char getElement( int x,
21、int y ) if( x = iCols )return ?;if( y = iRows )return ?;return chBoardxy;/設置指定的某個棋盤格中的元素public void setElement( char ch, int x, int y ) if( ch = ? )return;if( x = iCols )return;if( y = iRows )return;chBoardxy = ch; /判斷給定的位置是否在敵人的攻擊范圍內(nèi)public boolean near( char ch, int x, int y ) return isElement( ch,
22、 x-1, y )|isElement( ch, x, y-1 )|isElement( ch, x+1, y )|isElement( ch, x, y+1 );/判斷給定的位置是否可以向某個方向移動2步public boolean near2( char ch, int x, int y ) return ( isElement( ch, x-1, y )&isElement( ch, x-2, y ) )|( isElement( ch, x, y-1 )&isElement( ch, x, y-2 ) )|( isElement( ch, x+1, y )&isElement( ch,
23、 x+2, y ) )|( isElement( ch, x, y+1 )&isElement( ch, x, y+2 ) );2. 游戲的視圖類實現(xiàn)(1) BoardView.javapackage com.mot.j2me.midlets.jbombman;import javax.microedition.lcdui.*;/游戲的畫布屏幕類public class BoardView extends Canvas private Board oBoard;private Player oPlayer;private Enemy oEnemy;/定義背景色private final int
24、 BackgroundColor = 0xffffff; /定義每個棋盤格的大小private final int iCellSize = 20; /聲明內(nèi)部邊框距離坐標原點的橫坐標距離private final int iLeft = 10; /聲明內(nèi)部邊框距離坐標原點的縱坐標距離private final int iTop = 10;public BoardView( Board board ) oBoard = board;public void setPlayer( Player player ) oPlayer = player;public void setEnemy( Enemy
25、 enemy ) oEnemy = enemy;/繪制游戲屏幕public void paint( Graphics g ) /聲明同步塊,對Graphics對象g進行同步synchronized( g ) /如果游戲結(jié)束,則繪制游戲結(jié)束的界面if( oBoard.isGameOver )paintGameOver( g ); /如果玩家獲勝,則繪制玩家獲勝的界面else if( oBoard.isWin )paintWin( g ); /否則繪制當前游戲運行的界面elsepaintBoard( g );/定義繪制游戲結(jié)束的方法private void paintGameOver( Graph
26、ics g ) g.drawImage( Img.imgGameOver, 60, 100, Graphics.LEFT|Graphics.TOP );/定義繪制游戲玩家獲勝的方法private void paintWin( Graphics g ) g.drawImage( Img.imgCongratulation, 60, 100, Graphics.LEFT|Graphics.TOP );/繪制游戲棋盤邊框的方法private void paintFrame( Graphics g ) g.drawRect( 0, 0, 239, 239 );g.drawRect( 1, 1, 237
27、, 237 );g.drawRect( 2, 2, 235, 235 );g.drawRect( 3, 3, 233, 233 );g.drawRect( 7, 7, 225, 225 );g.drawRect( 8, 8, 223, 223 );/定義繪制棋盤的方法private void paintBoard( Graphics g ) /判斷畫布屏幕的工作區(qū)的原點是否在坐標軸的原點上,如果是則直接繪制游戲棋盤的邊框if( g.getClipX() = 0 )paintFrame( g ); /設置畫布屏幕的工作區(qū)的左上角坐標以及高度和寬度int x = ( g.getClipX() -
28、iLeft ) / iCellSize;int y = ( g.getClipY() - iTop ) / iCellSize;int w = g.getClipWidth() / iCellSize;int h = g.getClipHeight() / iCellSize;System.out.println( paint: x= + x + , y= + y + , w= + w + , h= + h );/如果畫布屏幕的工作區(qū)的高度超過了棋盤的高,則將工作區(qū)的高度設置為棋盤的高度if( hoBoard.iRows )h = oBoard.iRows;/根據(jù)工作區(qū)的位置,開始繪制棋盤中的
29、元素for( int i=x; ix+w; i+ )for( int j=y; jy+h; j+ ) /根據(jù)遍歷得到的數(shù)組中的元素類型進行繪制switch( oBoard.chBoardij ) case N: /當前數(shù)組元素中的類型表示空白區(qū)域,則繪制空白區(qū)域的圖像g.setColor( BackgroundColor );g.fillRect( iLeft + i*iCellSize, iTop + j*iCellSize, iCellSize, iCellSize );break; case W: /當前數(shù)組元素中的類型表示磚墻,則繪制磚墻的圖像g.drawImage( Img.imgW
30、all, iLeft + i*iCellSize, iTop + j*iCellSize, Graphics.LEFT|Graphics.TOP );break; case L: /當前數(shù)組元素中的類型表示巖石,則繪制巖石的圖像g.drawImage( Img.imgPillar, iLeft + i*iCellSize, iTop + j*iCellSize, Graphics.LEFT|Graphics.TOP );break; case P: /當前數(shù)組元素中的類型表示游戲主角,則繪制游戲主角的圖像 case U: /當前數(shù)組元素中的類型表示主角正在放置炸彈,則繪制游戲主角的圖像g.dr
31、awImage( Img.imgPlayer, iLeft + i*iCellSize, iTop + j*iCellSize, Graphics.LEFT|Graphics.TOP );break; case E: /當前數(shù)組元素中的類型表示敵人,則繪制敵人的圖像g.drawImage( Img.imgEnemy, iLeft + i*iCellSize, iTop + j*iCellSize, Graphics.LEFT|Graphics.TOP );break; case B: /當前數(shù)組元素中的類型表示炸彈,則繪制炸彈的圖像g.drawImage( Img.imgBomb, iLeft
32、 + i*iCellSize, iTop + j*iCellSize, Graphics.LEFT|Graphics.TOP );break; case X: /當前數(shù)組元素中的類型表示炸彈爆炸,則繪制炸彈爆炸的圖像g.drawImage( Img.imgExploding, iLeft + i*iCellSize, iTop + j*iCellSize, Graphics.LEFT|Graphics.TOP );break;/定義響應按鍵按下的事件處理方法public void keyPressed( int code ) /如果游戲結(jié)束或者玩家勝利,則調(diào)用keyForInit()方法響應按
33、鍵事件if( oBoard.isGameOver|oBoard.isWin )keyForInit( getGameAction(code) ); /否則調(diào)用keyForPlay()方法響應按鍵事件elsekeyForPlay( getGameAction(code) ); /定義游戲結(jié)束或者玩家勝利時的事件處理方法private void keyForInit( int action ) /如果用戶按下了手機中的Select按鍵,則游戲進行初始化if( action != FIRE )return;/棋盤初始化oBoard.init(); /敵人初始化oEnemy.init(); /游戲主角
34、初始化oPlayer.init();/初始化完成后重新繪制屏幕repaint(); /定義游戲過程中的事件處理方法private void keyForPlay( int action ) switch( action ) case FIRE:oPlayer.fire();break; case LEFT:oPlayer.left();break; case RIGHT:oPlayer.right();break; case UP:oPlayer.up();break; case DOWN:oPlayer.down();break;/定義重新繪制棋盤格的方法public void repain
35、tCells( int x, int y, int w, int h ) if( x = oBoard.iCols )x = oBoard.iCols - 1;if( x + w oBoard.iCols )w = oBoard.iCols - x;if( y = oBoard.iRows )y = oBoard.iRows - 1;if( y + h oBoard.iRows )h = oBoard.iRows - y;repaint( iLeft + x*iCellSize, iTop + y*iCellSize, w*iCellSize, h*iCellSize );3. 游戲的主角類實
36、現(xiàn)(1) Player.javapackage com.mot.j2me.midlets.jbombman;import java.util.*;/游戲中的主角類public class Player private Board oBoard;private BoardView oBoardView;private Enemy oEnemy;private Bomb oBomb;private Random random;private int iX, iY;/游戲主角的構(gòu)造函數(shù)public Player( Board board, BoardView boardview ) oBoard =
37、 board;oBoardView = boardview;random = new Random(); /調(diào)用游戲主角的初始化方法init();/游戲主角的初始化方法public void init() while( true ) /獲取游戲主角初始化的隨機位置iX = Math.abs( random.nextInt() ) % oBoard.iCols;iY = Math.abs( random.nextInt() ) % oBoard.iRows;/如果隨機位置上不為空,則跳出當前本次循環(huán),再重新獲取隨機位置if( oBoard.chBoardiXiY != N )continue;/
38、如果隨機位置在敵人的攻擊范圍內(nèi),則跳出當前本次循環(huán),再重新獲取隨機位置if( oBoard.near( E, iX, iY ) )continue;/如果隨機位置不能夠向任何方向移動2步,則跳出當前本次循環(huán),再重新獲取隨機位置if( !oBoard.near2( N, iX, iY ) )continue;/如果獲得一個合適的隨機位置,則跳出死循環(huán),繼續(xù)向下執(zhí)行break;/在棋盤中根據(jù)獲取的隨機位置設置對應的棋盤格中的元素為游戲主角oBoard.chBoardiXiY = P;public void setEnemy( Enemy enemy ) oEnemy = enemy;/清除炸彈對象
39、的方法public void clearBomb() oBomb = null;System.out.println( delete Bomb );/判斷游戲主角能否移動到給定的棋盤格上private boolean canGo( int x, int y ) /如果要移動到的棋盤格中沒有元素,則返回trueif( oBoard.isElement( N, x, y ) )return true;/如果要移動到的棋盤格中是敵人,則游戲主角死掉if( oBoard.isElement( E, x, y ) )die();/如果上述條件都不成立,則不能移動到給定的單元格中,返回falseretur
40、n false; /定義放置炸彈的方法public void fire() /構(gòu)造一個炸彈對象oBomb = new Bomb( oBoard, oBoardView, this, oEnemy, iX, iY ); /啟動炸彈對象中的線程方法體oBomb.start();System.out.println( new Bomb: x= + iX + , y= + iY );/定義游戲主角向左移動的方法public void left() /如果不能向左移動,則返回if( !canGo( iX-1, iY ) )return;/如果移動之前的棋盤格中的元素是游戲主角放置炸彈,則移動之前的棋盤格
41、中放置炸彈元素if( oBoard.chBoardiXiY = U )oBoard.chBoardiXiY = B;else /否則的話,移動之前的棋盤格中設置為空oBoard.chBoardiXiY = N; /游戲主角的列數(shù)減1iX-; /設置移動后的棋盤格中的元素為游戲主角oBoard.chBoardiXiY = P;/在畫布屏幕上重繪指定的區(qū)域oBoardView.repaintCells( iX, iY, 2, 1 );/定義游戲主角向右移動的方法public void right() /如果不能向右移動,則返回if( !canGo( iX+1, iY ) )return;/如果移動
42、之前的棋盤格中的元素是游戲主角放置炸彈,則移動之前的棋盤格中放置炸彈元素if( oBoard.chBoardiXiY = U )oBoard.chBoardiXiY = B;else /否則的話,移動之前的棋盤格中設置為空oBoard.chBoardiXiY = N; /游戲主角的列數(shù)加1iX+; /設置移動后的棋盤格中的元素為游戲主角oBoard.chBoardiXiY = P;/在畫布屏幕上重繪指定的區(qū)域oBoardView.repaintCells( iX-1, iY, 2, 1 );/定義游戲主角向上移動的方法public void up() /如果不能向上移動,則返回if( !can
43、Go( iX, iY-1 ) )return;/如果移動之前的棋盤格中的元素是游戲主角放置炸彈,則移動之前的棋盤格中放置炸彈元素if( oBoard.chBoardiXiY = U )oBoard.chBoardiXiY = B;else /否則的話,移動之前的棋盤格中設置為空oBoard.chBoardiXiY = N; /游戲主角的行數(shù)減1iY-; /設置移動后的棋盤格中的元素為游戲主角oBoard.chBoardiXiY = P;/在畫布屏幕上重繪指定的區(qū)域oBoardView.repaintCells( iX, iY, 1, 2 );/定義游戲主角向下移動的方法public void
44、down() /如果不能向上移動,則返回if( !canGo( iX, iY+1 ) )return;/如果移動之前的棋盤格中的元素是游戲主角放置炸彈,則移動之前的棋盤格中放置炸彈元素if( oBoard.chBoardiXiY = U )oBoard.chBoardiXiY = B;else /否則的話,移動之前的棋盤格中設置為空oBoard.chBoardiXiY = N; /游戲主角的行數(shù)加1iY+; /設置移動后的棋盤格中的元素為游戲主角oBoard.chBoardiXiY = P;/在畫布屏幕上重繪指定的區(qū)域oBoardView.repaintCells( iX, iY-1, 1,
45、2 );/定義游戲主角死掉的方法public void die() System.out.println( Player die: x= + iX + , y= + iY ); /殺死游戲中搜有的敵人oEnemy.dieAll(); /設置游戲結(jié)束的標識為trueoBoard.isGameOver = true; /重新繪制畫布屏幕oBoardView.repaint();4. 游戲的敵人類實現(xiàn)(1) Enemy.javapackage com.mot.j2me.midlets.jbombman;import java.util.*;/游戲中的敵人類public class Enemy extends Thread private Board oBoard;private BoardView oBoardView;public Player oPlayer; /設置敵人每次移動的間隔時間private final int iMoveTime = 500;private Random random; /聲明游戲中敵人的數(shù)量private int iNumbers; /聲明所有敵人所在位置的二維數(shù)組private int arrPo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度臨時彩鋼活動房租賃合同范本3篇
- 2024碎磚再利用工程采購合同書3篇
- 2024消防無人機系統(tǒng)采購合同
- 2025年度鮮蛋養(yǎng)殖戶互助合作供銷合同范本(2025版)3篇
- 二零二五年度航空物流樞紐建設與運營合同3篇
- 2025年度項目部承包智慧社區(qū)建設項目合同2篇
- 2024版工程勞務分包合同參考范本
- 2025便利店品牌升級商品采購合作協(xié)議3篇
- 2024簡單的家政服務合同協(xié)議
- 2025年度私人住宅買賣合同(含社區(qū)服務)3篇
- 2025年河北供水有限責任公司招聘筆試參考題庫含答案解析
- Unit3 Sports and fitness Discovering Useful Structures 說課稿-2024-2025學年高中英語人教版(2019)必修第一冊
- 農(nóng)發(fā)行案防知識培訓課件
- 社區(qū)醫(yī)療抗菌藥物分級管理方案
- NB/T 11536-2024煤礦帶壓開采底板井下注漿加固改造技術規(guī)范
- 2024年九年級上德育工作總結(jié)
- 2024年儲罐呼吸閥項目可行性研究報告
- 除氧器出水溶解氧不合格的原因有哪些
- 沖擊式機組水輪機安裝概述與流程
- 新加坡SM2數(shù)學試題
- 畢業(yè)論文-水利水電工程質(zhì)量管理
評論
0/150
提交評論