java實(shí)現(xiàn)坦克大戰(zhàn)課程設(shè)計(jì)_第1頁(yè)
java實(shí)現(xiàn)坦克大戰(zhàn)課程設(shè)計(jì)_第2頁(yè)
java實(shí)現(xiàn)坦克大戰(zhàn)課程設(shè)計(jì)_第3頁(yè)
java實(shí)現(xiàn)坦克大戰(zhàn)課程設(shè)計(jì)_第4頁(yè)
java實(shí)現(xiàn)坦克大戰(zhàn)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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、 基于java實(shí)現(xiàn)電子時(shí)鐘 Java實(shí)現(xiàn)坦克大戰(zhàn)小游戲摘要Java是一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。我的課程設(shè)計(jì)是用java來(lái)做一個(gè)簡(jiǎn)單的坦克大戰(zhàn)小游戲。我將這個(gè)程序細(xì)分了多個(gè)部分,每個(gè)部分都建了獨(dú)立的類,比如:坦克的模型類,河道,樹(shù)和坦克方向等等。之所以將之細(xì)分,是遵循了java的萬(wàn)事萬(wàn)物皆對(duì)象的原理。在實(shí)現(xiàn)每個(gè)類時(shí),最簡(jiǎn)單但也是最繁瑣就是建立界面與實(shí)例化坦克,因?yàn)檫@牽扯了界面布局,監(jiān)聽(tīng)的建立等;而有一些類,比如;河道、墻、坦克,這些類這可以依樣畫(huà)葫蘆的編寫(xiě)。在編寫(xiě)過(guò)程,借鑒了他人的一些圖片模型,實(shí)現(xiàn)的功能也并不是和經(jīng)典的FC坦克大戰(zhàn)相同,但是每個(gè)坦克之間的互動(dòng)還是實(shí)現(xiàn)了

2、的。關(guān)鍵詞:萬(wàn)事萬(wàn)物皆對(duì)象 界面布局 坦克之間的互動(dòng)USE JAVA TO REALIZE BATTLE CITY MINI-GAMEABSTRACTJava is a object oriented program design language what can compose cross platform application software. My curriculum design is using JAVA language to make a simple small game called Tank Battle. I break down this program int

3、o multiple parts, each part is to establish an independent class, such as: Tank Model class, River Course class, Tree class, The Direction of Tank class and so on. The reason divides into multiple parts, is because follow the principle of JAVA that everything is an object. When implements every clas

4、s, the most simple but also the most troublesome is build interface and instantiate Tank class, because it is involved of the interface layout, monitoring the establishment. While there are some classes, such as: River Course class, Wall class and Tank class, can write like stick closely to the patt

5、ern given.In the preparation process, I refer some pictures of models of others, the function of the retaliate isnt like FC Tank Battle, but the interaction between ach tank is realized. Key words: everything is an object, the interface layout, the interaction between each tank目 錄1 課程目的與要求11、1課程目標(biāo)11

6、、2 課程的實(shí)現(xiàn)環(huán)境12 概要設(shè)計(jì)23 詳細(xì)設(shè)計(jì)34 測(cè)試結(jié)果與心得體會(huì)5 參考文獻(xiàn)附錄源程序代碼3 1 課程的目的與要求1、1課程目標(biāo)JAVA程序設(shè)計(jì)的設(shè)計(jì)目的是加深對(duì)理論教學(xué)內(nèi)容的理解和掌握,使學(xué)生較系統(tǒng)地掌握程序設(shè)計(jì)及其在網(wǎng)絡(luò)開(kāi)發(fā)中的廣泛應(yīng)用,基本方法及技巧,為學(xué)生綜合運(yùn)用所學(xué)知識(shí),利用軟件工程為基礎(chǔ)進(jìn)行軟件開(kāi)發(fā)、并在實(shí)踐應(yīng)用方面打下一定基礎(chǔ)。利用java實(shí)現(xiàn)坦克大戰(zhàn)小游戲。1、2課程的實(shí)現(xiàn)環(huán)境硬件要求能運(yùn)行Windows 9.X操作系統(tǒng)的微機(jī)系統(tǒng)。JAVA程序設(shè)計(jì)語(yǔ)言及相應(yīng)的集成開(kāi)發(fā)環(huán)境,J2SDK和ECLIPSE開(kāi)發(fā)工具。利用java的一些類和接口,詳細(xì)可在詳細(xì)設(shè)計(jì)中見(jiàn)到。

7、2概要設(shè)計(jì)2、1自定義類說(shuō)明類名:Tank;作用:實(shí)現(xiàn)玩家能夠操縱己方坦克繼承的父類:無(wú); 實(shí)現(xiàn)的接口:無(wú);主要的方法:draw();move();一些鍵盤(pán)監(jiān)聽(tīng)。類名:Missile作用:對(duì)所有的坦克的子彈進(jìn)行設(shè)置繼承的父類:無(wú); 實(shí)現(xiàn)的接口:無(wú);主要的方法:draw();move();碰到不同物體的不同處理。類名:Blood作用:實(shí)例化坦克的血條繼承的父類:無(wú); 實(shí)現(xiàn)的接口:無(wú);主要的方法:draw();move();類名:Wall作用:實(shí)例化墻繼承的父類:無(wú); 實(shí)現(xiàn)的接口:無(wú);主要的方法:draw();類名:TankClient作用:該游戲的界面布局及各類的實(shí)例化繼承的父類:Frame;

8、實(shí)現(xiàn)的接口:Runnable;主要的方法:paint();update();lauchFrame();PaintThread();KeyMonitor();3詳細(xì)設(shè)計(jì)以下將各類的方法以表格的形式詳細(xì)敘述:類名方法方法的作用TankDraw()設(shè)置坦克的形狀,及隨血條的變化而發(fā)生的外觀變化Move()控制坦克的移動(dòng),玩家可操縱自己的坦克,而電腦操控的坦克則隨機(jī)移動(dòng)(碰到墻會(huì)反方向走)Fire()用了方法重載,區(qū)分玩家坦克與電腦坦克的子彈的不同類名方法方法的作用MissileDraw()設(shè)置子彈的外觀Move()設(shè)置子彈的運(yùn)行軌跡hitTank();hitTanks;hitWall子彈碰到三種不同

9、物體的不同結(jié)果類名方法方法的作用BloodDraw()設(shè)置血條的位置及外觀Move()使得血條跟隨坦克移動(dòng)類名方法方法的作用ExplodeDraw();循環(huán)的方法將對(duì)應(yīng)圖片覆蓋在對(duì)象上類名方法方法的作用WallDraw()設(shè)置墻的形狀類名方法方法的作用TankClientPaint()指明子彈、爆炸、坦克的數(shù)量以及坦克的生命值Update()刷新界面LauchFrame()壓面板,控件PaintThread()線程控制KeyMonitor()鍵盤(pán)監(jiān)聽(tīng)4測(cè)試結(jié)果與心得體會(huì)4、1程序運(yùn)行情況當(dāng)程序正常運(yùn)行的時(shí)候,它能清晰的顯示游戲界面。玩家可以通過(guò)鍵盤(pán)方向鍵控制紅色的坦克移動(dòng),通過(guò)鍵盤(pán)A鍵控制子彈

10、發(fā)射,如下圖4、1:圖4、14、2程序的異常處理當(dāng)線程在活動(dòng)之前或活動(dòng)期間處于正在等待、休眠或占用狀態(tài)且該線程被中斷時(shí),拋出該異常。有時(shí)候,一種方法可能希望測(cè)試當(dāng)前線程是否已被中斷,如果已被中斷,則立即拋出此異常。利用trycatch來(lái)捕獲出現(xiàn)的異常。try Thread.sleep(1000); /線程暫停一秒(1000毫秒) catch (InterruptedException ex) ex.printStackTrace(); /輸出出錯(cuò)信息 4、3心得體會(huì)本次Java課程設(shè)計(jì)我的題目是時(shí)鐘,題目不算難,但我做的很艱苦。主要就是動(dòng)手能力太差,理論知識(shí)掌握的不全面,自以為會(huì)不少,但真做起

11、來(lái),卻不知道從哪下手了。又回去溫習(xí)理論知識(shí),請(qǐng)教老師,上網(wǎng)查資料,忙的不亦樂(lè)乎。不過(guò)經(jīng)過(guò)努力總算是做出來(lái)了,還通過(guò)此次課程設(shè)計(jì),將我本學(xué)期所學(xué)的JAVA知識(shí)得到鞏固和應(yīng)用。在設(shè)計(jì)的過(guò)程中我遇到的很多問(wèn)題,在老師的幫助和自己的思考下還是很好的完成了。這此課程設(shè)計(jì)我懂得了寫(xiě)程序不能脫離實(shí)際,只憑主觀辦事,要努力拓寬知識(shí)面,拓展思維。 事情就是如此,努力代表收獲。通過(guò)這次課程設(shè)計(jì),我才真正領(lǐng)悟到“艱苦奮斗”這一詞的真正含義,我才感受到早期電子設(shè)計(jì)者為現(xiàn)代的社會(huì)付出。設(shè)計(jì)確實(shí)有些辛苦,但苦中也有樂(lè),在如今單一的理論學(xué)習(xí)中,很少有機(jī)會(huì)能有實(shí)踐的機(jī)會(huì),但現(xiàn)在可以,這些天的設(shè)計(jì)中得到的東西卻不比理

12、論課上得到的少多少,我感覺(jué)我和Java的距離更加近了;我想說(shuō),確實(shí)很累,但當(dāng)我看到自己所做的成果時(shí),心中也不免產(chǎn)生興奮; 學(xué)習(xí)有成果了么。 對(duì)Java編程有了一個(gè)基本的了解。這些天溫習(xí)的內(nèi)容越多,敲得代碼越多,自己的學(xué)習(xí)積極性也越在提高,感覺(jué)也越充實(shí)。越來(lái)越發(fā)現(xiàn)現(xiàn)在學(xué)習(xí)的只是Java的基礎(chǔ),但涉及的面還是很廣泛的,這些都為以后進(jìn)一步學(xué)習(xí)Java的高級(jí)特性打下了扎實(shí)的基礎(chǔ)。隨著課程難度的慢慢加強(qiáng),今后遇到的困難也必將會(huì)越來(lái)越多,但我相信自己一定能做好這些的。 在本次Java課程設(shè)計(jì)中,我要非常感謝我的指導(dǎo)老師丁老師,不但在課堂上教給了我很多的Java的編程知識(shí),編程

13、思想,而且在這次課程設(shè)計(jì)中更教會(huì)了我動(dòng)手的能力,真正的編出了自己的東西,還要感謝我的同學(xué),他們?cè)谖矣龅嚼щy時(shí)也給了我很多幫助。 參考文獻(xiàn)1 David Flanagan編. Java 實(shí)例技術(shù)手冊(cè) 附錄源程序代碼:/Tank類package com.bjsxt.tank;import java.awt.*;import java.awt.event.*;import java.util.*;public class Tank public static final int XSPEED = 5;public static final int Y

14、SPEED = 5;public static final int WIDTH = 30;public static final int HEIGHT = 30;private boolean live = true;private BloodBar bb = new BloodBar();private int life = 100;TankClient tc;private boolean good;private int x, y;private int oldX, oldY;private static Random r = new Random();private boolean b

15、L=false, bU=false, bR=false, bD = false;private Direction dir = Direction.STOP;private Direction ptDir = Direction.D;private int step = r.nextInt(12) + 3;public Tank(int x, int y, boolean good) this.x = x;this.y = y;this.oldX = x;this.oldY = y;this.good = good;public Tank(int x, int y, boolean good,

16、 Direction dir, TankClient tc) this(x, y, good);this.dir = dir;this.tc = tc;public void draw(Graphics g) if(!live) if(!good) tc.tanks.remove(this);return;Color c = g.getColor();if(good) g.setColor(Color.RED);else g.setColor(Color.BLUE);g.fillOval(x, y, WIDTH, HEIGHT);g.setColor(c);if(good) bb.draw(g

17、);switch(ptDir) case L:g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x, y + Tank.HEIGHT/2);break;case LU:g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x, y);break;case U:g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH/2, y);break;case RU:g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGH

18、T/2, x + Tank.WIDTH, y);break;case R:g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH, y + Tank.HEIGHT/2);break;case RD:g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH, y + Tank.HEIGHT);break;case D:g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH/2, y + Ta

19、nk.HEIGHT);break;case LD:g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x, y + Tank.HEIGHT);break;move();void move() this.oldX = x;this.oldY = y;switch(dir) case L:x -= XSPEED;break;case LU:x -= XSPEED;y -= YSPEED;break;case U:y -= YSPEED;break;case RU:x += XSPEED;y -= YSPEED;break;case R:x += XSPE

20、ED;break;case RD:x += XSPEED;y += YSPEED;break;case D:y += YSPEED;break;case LD:x -= XSPEED;y += YSPEED;break;case STOP:break;if(this.dir != Direction.STOP) this.ptDir = this.dir;if(x < 0) x = 0;if(y < 30) y = 30;if(x + Tank.WIDTH > TankClient.GAME_WIDTH) x = TankClient.GAME_WIDTH - Tank.WI

21、DTH;if(y + Tank.HEIGHT > TankClient.GAME_HEIGHT) y = TankClient.GAME_HEIGHT - Tank.HEIGHT;if(!good) Direction dirs = Direction.values();if(step = 0) step = r.nextInt(12) + 3;int rn = r.nextInt(dirs.length);dir = dirsrn;step -;if(r.nextInt(40) > 38) this.fire();private void stay() x = oldX;y =

22、oldY;public void keyPressed(KeyEvent e) int key = e.getKeyCode();switch(key) case KeyEvent.VK_F2 :if(!this.live) this.live = true;this.life = 100;break;case KeyEvent.VK_LEFT :bL = true;break;case KeyEvent.VK_UP :bU = true;break;case KeyEvent.VK_RIGHT :bR = true;break;case KeyEvent.VK_DOWN :bD = true

23、;break;locateDirection();void locateDirection() if(bL && !bU && !bR && !bD) dir = Direction.L;else if(bL && bU && !bR && !bD) dir = Direction.LU;else if(!bL && bU && !bR && !bD) dir = Direction.U;else if(!bL && bU &&

24、amp; bR && !bD) dir = Direction.RU;else if(!bL && !bU && bR && !bD) dir = Direction.R;else if(!bL && !bU && bR && bD) dir = Direction.RD;else if(!bL && !bU && !bR && bD) dir = Direction.D;else if(bL && !bU &&

25、amp; !bR && bD) dir = Direction.LD;else if(!bL && !bU && !bR && !bD) dir = Direction.STOP;public void keyReleased(KeyEvent e) int key = e.getKeyCode();switch(key) case KeyEvent.VK_CONTROL:fire();break;case KeyEvent.VK_LEFT :bL = false;break;case KeyEvent.VK_UP :bU = f

26、alse;break;case KeyEvent.VK_RIGHT :bR = false;break;case KeyEvent.VK_DOWN :bD = false;break;case KeyEvent.VK_A :superFire();break;locateDirection();public Missile fire() if(!live) return null;int x = this.x + Tank.WIDTH/2 - Missile.WIDTH/2;int y = this.y + Tank.HEIGHT/2 - Missile.HEIGHT/2;Missile m

27、= new Missile(x, y, good, ptDir, this.tc);tc.missiles.add(m);return m;public Missile fire(Direction dir) if(!live) return null;int x = this.x + Tank.WIDTH/2 - Missile.WIDTH/2;int y = this.y + Tank.HEIGHT/2 - Missile.HEIGHT/2;Missile m = new Missile(x, y, good, dir, this.tc);tc.missiles.add(m);return

28、 m;public Rectangle getRect() return new Rectangle(x, y, WIDTH, HEIGHT);public boolean isLive() return live;public void setLive(boolean live) this.live = live;public boolean isGood() return good;/* * 撞墻 * param w 被撞的墻 * return 撞上了返回true,否則false */public boolean collidesWithWall(Wall w) if(this.live

29、&& this.getRect().intersects(w.getRect() this.stay();return true;return false;public boolean collidesWithTanks(java.util.List<Tank> tanks) for(int i=0; i<tanks.size(); i+) Tank t = tanks.get(i);if(this != t) if(this.live && t.isLive() && this.getRect().intersects(t.g

30、etRect() this.stay();t.stay();return true;return false;private void superFire() Direction dirs = Direction.values();for(int i=0; i<8; i+) fire(dirsi);public int getLife() return life;public void setLife(int life) this.life = life;private class BloodBar public void draw(Graphics g) Color c = g.get

31、Color();g.setColor(Color.RED);g.drawRect(x, y-10, WIDTH, 10);int w = WIDTH * life/100 ;g.fillRect(x, y-10, w, 10);g.setColor(c);public boolean eat(Blood b) if(this.live && b.isLive() && this.getRect().intersects(b.getRect() this.life = 100;b.setLive(false);return true;return false;/m

32、issile類package com.bjsxt.tank;import java.awt.*;import java.util.List;public class Missile public static final int XSPEED = 10;public static final int YSPEED = 10;public static final int WIDTH = 10;public static final int HEIGHT = 10;int x, y;Direction dir;private boolean good;private boolean live =

33、 true;private TankClient tc;public Missile(int x, int y, Direction dir) this.x = x;this.y = y;this.dir = dir;public Missile(int x, int y, boolean good, Direction dir, TankClient tc) this(x, y, dir);this.good = good;this.tc = tc;public void draw(Graphics g) if(!live) tc.missiles.remove(this);return;C

34、olor c = g.getColor();if(good) g.setColor(Color.RED); else g.setColor(Color.BLACK);g.fillOval(x, y, WIDTH, HEIGHT);g.setColor(c);move();private void move() switch(dir) case L:x -= XSPEED;break;case LU:x -= XSPEED;y -= YSPEED;break;case U:y -= YSPEED;break;case RU:x += XSPEED;y -= YSPEED;break;case R

35、:x += XSPEED;break;case RD:x += XSPEED;y += YSPEED;break;case D:y += YSPEED;break;case LD:x -= XSPEED;y += YSPEED;break;case STOP:break;if(x < 0 | y < 0 | x > TankClient.GAME_WIDTH | y > TankClient.GAME_HEIGHT) live = false;public boolean isLive() return live;public Rectangle getRect() r

36、eturn new Rectangle(x, y, WIDTH, HEIGHT);public boolean hitTank(Tank t) if(this.live && this.getRect().intersects(t.getRect() && t.isLive() && this.good != t.isGood() if(t.isGood() t.setLife(t.getLife()-20);if(t.getLife() <= 0) t.setLive(false); else t.setLive(false);this.

37、live = false;Explode e = new Explode(x, y, tc);tc.explodes.add(e);return true;return false;public boolean hitTanks(List<Tank> tanks) for(int i=0; i<tanks.size(); i+) if(hitTank(tanks.get(i) return true;return false;public boolean hitWall(Wall w) if(this.live && this.getRect().inters

38、ects(w.getRect() this.live = false;return true;return false;/blood類package com.bjsxt.tank;import java.awt.*;public class Blood int x, y, w, h;TankClient tc; int step = 0;private boolean live = true;/指明血塊運(yùn)動(dòng)的軌跡,由pos中各個(gè)點(diǎn)構(gòu)成private int pos = 350, 300, 360, 300, 375, 275, 400, 200, 360, 270, 365, 290, 340

39、, 280 ;public Blood() x = pos00;y = pos01;w = h = 15;public void draw(Graphics g) if(!live) return;Color c = g.getColor();g.setColor(Color.MAGENTA);g.fillRect(x, y, w, h);g.setColor(c);move();private void move() step +;if(step = pos.length)step = 0;x = posstep0;y = posstep1;public Rectangle getRect(

40、) return new Rectangle(x, y, w , h);public boolean isLive() return live;public void setLive(boolean live) this.live = live;/explode類package com.bjsxt.tank;import java.awt.*;public class Explode int x, y;private boolean live = true;private TankClient tc ;private static Toolkit tk = Toolkit.getDefault

41、Toolkit();private static Image imgs = tk.getImage(Explode.class.getClassLoader().getResource("images/0.gif"),tk.getImage(Explode.class.getClassLoader().getResource("images/1.gif"),tk.getImage(Explode.class.getClassLoader().getResource("images/2.gif"),tk.getImage(Explode

42、.class.getClassLoader().getResource("images/3.gif"),tk.getImage(Explode.class.getClassLoader().getResource("images/4.gif"),tk.getImage(Explode.class.getClassLoader().getResource("images/5.gif"),tk.getImage(Explode.class.getClassLoader().getResource("images/6.gif&qu

43、ot;),tk.getImage(Explode.class.getClassLoader().getResource("images/7.gif"),tk.getImage(Explode.class.getClassLoader().getResource("images/8.gif"),tk.getImage(Explode.class.getClassLoader().getResource("images/9.gif"),tk.getImage(Explode.class.getClassLoader().getResour

44、ce("images/10.gif");int step = 0;private static boolean init = false;public Explode(int x, int y, TankClient tc) this.x = x;this.y = y;this.tc = tc;public void draw(Graphics g) if(!init) for (int i = 0; i < imgs.length; i+) g.drawImage(imgsi, -100, -100, null);init = true;if(!live) tc.e

45、xplodes.remove(this);return;if(step = imgs.length) live = false;step = 0;return;g.drawImage(imgsstep, x, y, null);step +;/wall類package com.bjsxt.tank;import java.awt.*;public class Wall int x, y, w, h;TankClient tc ;public Wall(int x, int y, int w, int h, TankClient tc) this.x = x;this.y = y;this.w

46、= w;this.h = h;this.tc = tc;public void draw(Graphics g) Color c = g.getColor();g.setColor(Color.DARK_GRAY);g.fillRect(x, y, w, h);g.setColor(c);public Rectangle getRect() return new Rectangle(x, y, w, h);/tankclient類package com.bjsxt.tank;import java.awt.*;import java.awt.event.*;import java.util.L

47、ist;import java.util.ArrayList;/* * 這個(gè)類的作用是坦克游戲的主窗口 * author mashibing * */public class TankClient extends Frame /* * 整個(gè)坦克游戲的寬度 */public static final int GAME_WIDTH = 800;public static final int GAME_HEIGHT = 600;Tank myTank = new Tank(50, 50, true, Direction.STOP, this);Wall w1 = new Wall(100, 200,

48、 20, 150, this), w2 = new Wall(300, 100, 300, 20, this);List<Explode> explodes = new ArrayList<Explode>();List<Missile> missiles = new ArrayList<Missile>();List<Tank> tanks = new ArrayList<Tank>();Image offScreenImage = null;Blood b = new Blood();public void paint

49、(Graphics g) /* * 指明子彈-爆炸-坦克的數(shù)量 * 以及坦克的生命值 */g.drawString("missiles count:" + missiles.size(), 10, 50);g.drawString("explodes count:" + explodes.size(), 10, 70);g.drawString("tanks count:" + tanks.size(), 10, 90);g.drawString("tanks life:" + myTank.getLife(), 10, 110);if(tanks.size() <= 0) for(int i=0; i<5; i+) tanks.add(new Tank(50 + 40*(i+1), 50, false, Direction.D, this);for(int i=0; i<missiles.size(); i+) Missile m = missiles.get(i);m.hitTanks(ta

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論