精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx

上传人:b****1 文档编号:5794779 上传时间:2023-05-05 格式:DOCX 页数:36 大小:117.85KB
下载 相关 举报
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第1页
第1页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第2页
第2页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第3页
第3页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第4页
第4页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第5页
第5页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第6页
第6页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第7页
第7页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第8页
第8页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第9页
第9页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第10页
第10页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第11页
第11页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第12页
第12页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第13页
第13页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第14页
第14页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第15页
第15页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第16页
第16页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第17页
第17页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第18页
第18页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第19页
第19页 / 共36页
精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx

《精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx(36页珍藏版)》请在冰点文库上搜索。

精品基于Eclipse平台的飞机游戏的开发毕业论文论文Word文档下载推荐.docx

2.3关于ECLIPSE3

2.4关于WirelessToolKit3

2.5JavaAppicationManager4

2.6本章小结4

3程序结构、思想和相关技术5

3.1本程序需要解决的主要技术问题5

3.2程序流程5

3.3Canvas类6

3.4Graphics类6

3.5MIDP1.0技术下的绘制背景技术6

3.6MIDP2.0新增的GameCanvas包6

3.7PNG图片格式7

3.8玩家飞机的控制方式和敌人方的智能运行7

3.9子弹的运行和控制8

3.10内存的优化8

3.11内存检测器8

3.12关于混淆器9

3.13本章小结9

4程序分析和具体实现10

4.1游戏进入前的选择10

4.2mybullets类10

4.3游戏逻辑及gameScreen类11

4.3.1gameScreen类所实现的功能11

4.3.2地图的创建11

4.3.3地图的移动12

4.3.4gameScreen类的构造函数12

4.3.5关于commandAction()方法12

4.3.6Sprite类对象的碰撞检测及相关属性13

4.5普通敌人相关属性15

4.6白云的实现原理16

4.7关尾BOSS及相关属性16

4.8本章小结17

5测试18

5.1打包测试的过程18

5.2发现的BUG及解决情况19

5.3未完善的功能20

6总结21

6.1本程序的总结和展望21

6.2感想21

7致谢22

参考文献22

英文翻译23

附录英文文献及翻译24

1.绪论

1.1手机软件现状

在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。

但是传统手机存在以下弊端:

1.传统手机出厂时均由硬件厂商固化程序,程序不能增加、删除,有了错误也不能更新、修改,若要增加新功能必须另换一部手机。

2.传统手机访问互联网是通过WAP(WirelessApplicationProtocal),所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高。

而Java技术在无线应用方面的优势非常明显:

1.应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空间大。

2.Java技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰富的用户界面(GUI);

3.Java技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上,并在本地运行,仅仅是在连接到服务器时才会占用网络带宽。

基于以上分析,Java手机将是未来手机的发展方向,是业界的热点。

1.2J2ME介绍

虽然Java已经被用到许多企业级软体上,可是其实骨子里面还是非常适合用在嵌入式系统之中。

Java平台演进到Java2后,Java平台分别针对不同领域的需求被分成四个版本,亦即J2EE、J2SE、J2ME以及JavaCard。

其中J2ME定位在消费性电子产品的应用上。

这个版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。

这个版本的应用层面相当广泛,会是未来Java平台发展的重点项目。

J2ME在1999年的JavaOne开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算机设备的开发人员。

J2ME的一个关键优点是,J2ME与所有支持Java的设备都是兼容的。

支持Java的设备就是任何运行Java虚拟机器的计算机。

Motorola、Nokia等生产厂商都生产支持Java的设备。

J2ME平台是由配置(Configuration)和简表(Profile)构成的。

配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含Java虚拟机。

简表是针对一系列设备提供的开发包集合。

在J2ME中还有一个重要的概念是可选包(OptionalPackage),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(BluetoothAPI)提供了对蓝牙的支持。

目前,J2ME中有两个最主要的配置,分别是ConnectedLimitedDevicesConfiguration(CLDC)和ConnectedDevicesConfiguration(CDC)。

作为第一个面对小型设备的Java应用开发规范,CLDC是由包括Nokia,Motorola和Siemens在内的18家全球知名公司共同协商完成的。

CLDC是J2ME核心配置中的一个,可以支持一个或多个profile。

其目标主要面向小型的、网络连接速度慢、能源有限(主要是电池供电)且资源有限的设备,如手机、PDA等。

而CDC则是主要用于运算能力相对较佳、在电力供应上相对比较充足的嵌入式装置(比方说冷气机、电冰箱、电视机机顶盒(set-topbox)。

1.3手机游戏应具有的特征

一个手机游戏应该具有以下特征:

易于学习:

既然手机游戏面向的是普通消费者而不是计算机专家,那么他们不可能深入的学习游戏技巧。

消费者不会花几个小时去研究一个3元的手动操作的游戏。

保持游戏的简单是最基本的要求。

可中断性:

多任务处理是手机生活方式的基本特征。

手机用户常常在任务(如等一个电子邮件或者等车)之间有一小段时间。

而游戏、日历管理、通讯和工作数据访问使用的是同一个设备。

所以一个好的手机游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换。

基于订阅:

手机游戏的盈利成功取决于他们巨大的使用量。

一开始开发和设计每个游戏都是昂贵的。

如果一个手机游戏开发者要赢利的话,重要的是:

同一个游戏引擎,多个标题,基本的故事情节类似。

基于订阅的游戏是不断产生收入的最好方法。

丰富的社会交互:

不管一个游戏设计得多好,只要玩家找到了它的根本模式或者玩完了所有的游戏路径很快就会厌烦这个游戏。

对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力和随机性。

在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的。

利用手机技术的优点:

巨额的手机技术研发费用都花在提高设备和网络的可用性和可靠性上面。

因此,手机设备硬件和网络协议与桌面控制台世界(如全球定位系统(GPS)扩展、条形码扫描仪、和短消息服务(SMS)多媒体信息服务(MMS)通讯)有着非常大的差别。

好的手机游戏应该利用那些更新的设备特征和网络基础设备的优点。

1.4本游戏背景介绍

在抗战中,由国民政府领导的中国空军是所有国民党军队中抗战最为彻底,也最为英勇的部队,虽然开战之初力量悬殊,但是面对穷凶极恶的日本侵略者,他们毫不畏惧,视死如归,全力以赴投身到民族救亡的伟业中去,用自己的鲜血和生命谱写了中华民族最为豪迈的诗篇。

自一九三二年二月五日“一·

二”八事件始,至一九四五年八月十四日止,抗战期间,共出动飞机一千一百二十八批,八千八百四十七架次,击落敌机五百二十九架,击伤敌机一百一十架,炸毁敌机二百二十七架。

同时,中国空军空战中一共牺牲空勤人员六百六十一名。

我至今仍然清楚的记得,在抗日战争即世界反法西斯战争胜利50周年的时候,我在一本描述抗战空军的书里第一次看到阎海文烈士那年青的面孔时所带来的震撼,第一次看到高志航、沈崇海等空军烈士的事迹时所带来的感动,第一次听说碧山空战时的无奈。

时至今日,已经很少有人能够记得在中国的天空献身的抗日英雄们,我只能引用下面这句话来表达我的心情:

“你们的名字无人知晓,你们的业绩与世长存!

我的这款游戏取名为《飞机游戏》,以纪念从览桥中央航校走出的英雄们。

1.5本章小结

引言和第一章中介绍了手机在无线应用方向的当今概况,J2ME的相关内容,分析了J2ME在手机软件开发中起的重要作用,描述了本论文的相关背景。

2.开发环境及相关技术的介绍

2.1开发环境

操作系统:

MicrosoftWindowsXP

程序语言:

Java2

开发包:

Java(TM)2StandardEdition(5.0)

SunMicro.J2MEWirelessToolKit2.2

IDE:

Eclipse3.01

2.2Java语言特点

1.1.1平台无关性

Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。

Java的数据类型与机器无关。

1.1.2安全性

Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。

它提供了安全管理器,防止程序的非法访问。

1.1.3面向对象

Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。

1.1.4分布式

Java建立在TCPIP网络平台上,提供了用和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。

1.1.5健壮性

Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。

Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。

2.3关于ECLIPSE

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。

虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。

Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。

由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

这种平等和一致性并不仅限于Java开发工具。

尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;

例如,支持诸如CC++、COBOL和Eiffel等编程语言的插件已经可用,或预计会推出。

Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

2.4关于WirelessToolKit

WTK(WirelessToolKit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。

它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。

虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。

2.5JavaAppicationManager

手机中负责调配程序运行资源的管理后台是JavaApplicationManager。

它所使用的传输媒体可以是红外线、网络、以及其他可用来传输的媒体。

JavaApplicationManager会从网络上下载代表该ApplicationSuite的JAR档,接着在手机上安裝此MIDletSuite,然后在手机开始执行该应用程序。

2.6本章小结

第二章介绍了Java语言的特点、本程序的开发环境及其相关工具的原理和使用。

3程序结构、思想和相关技术

3.1本程序需要解决的主要技术问题

3.1.1游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。

一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。

因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。

3.1.2游戏中为了美观,适用性强,可能需要采用外部文件引入的图片贴图,有关贴图,在MIDP2.0中提供了用于增强游戏功能的game包,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。

3.1.3玩家飞机的运行可以通过键盘响应事件控制,但敌方则因为是自动运行,就需要有一定的智能性;

敌人飞机的运行算法也要进行相关的设置,已免游戏过于简单。

3.1.4对于双方发射的子弹应该赋予不同的速度,同时,程序应该设定敌人飞机的子弹不与敌人的飞机进行碰撞检测,已增加游戏的可玩性。

3.1.5双方的飞机在前进时也需要考虑到是否碰撞到对方飞机,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。

每一次刷新页面、每前进一步都需要进行相关的碰撞检测。

3.1.6为了增加界面的美观,在程序中添加了白云。

由于手机屏幕大小有限,所以白云的数量和出现的位置要经过相关的设置,才能实现白云不规则出现的效果。

3.1.7游戏的地图不可能通过绘图来解决。

否则,不仅难于控制和处理过多的元素,也会因过多的大型图片而不能限制程序的大小,失去手机上程序的原则和Java的优势。

3.1.8Java是基于虚拟机的半解释型编译系统,其执行效率较C++等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。

除开发过程中对结构上的控制、变量的使用、算法的优化等优化外,还可以使用混淆器(Obfuscator)进行程序打包后的优化。

3.1.9游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。

良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。

以上相关技术细节和整体流程将分别在以下小节阐述。

3.2程序流程

MIDletsuite是MIDP应用程序的最小单位,JAM负责将手机内的MIDletsuite以图形化的方式呈现,让用户能够选取欲执行的MIDletsuite,一旦选取了某个MIDletsuite,操作系统就会激活KVM执行里面的MIDlet。

MIDlet及相关的支持类组成了MIDP应用程序的实际内容。

每个MIDlet都必须继承javax.microedition.midlet.MIDlet这个抽象类。

在MIDP规范中定义了MIDlet的生命周期,以及可以存在的三种状态,包括Paused、Active以及Destroyed,每一个MIDlet在任何时刻只可能处于其中的一个状态。

这三种状态的转换关系如图3-1所示:

MIDlet有三个状态,分别是pause、active和destroyed。

在启动一个MIDlet的时

候,应用管理软件会首先创建一个MIDlet实例并使得他处于pause状态,当startApp()方法被调用的时候MIDlet进入active状态,也就是所说的运行状态。

在active状态调用destroyApp(booleanunconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。

值得一提的是destroyApp(booleanunconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet进入destroyed状态。

在destroyed状态的MIDlet必须释放了所有的资源,并且保存了数据。

如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDletStateChangeException而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。

本程序采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。

运行程序后允许用户选择执行选项菜单,在开始游戏后将先从外部文件载入地图文件,对背景的所有物体进行绘图。

在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。

游戏开始后先绘制地图,并将各个对象实例化。

游戏中所有的对象都应该运行在同一个线程下。

当敌人或者用户的子弹达到射程范围后,并不删除子弹对象,而是使用setVisable(false)使其不能显示,当用户或敌人在次发射子弹时,只需使用setVisable(true)设置成可以显示即可。

在屏幕重绘的主程序中,将在每次的循环中判断若干事件,以便程序进入相关的分支执行相关的反应代码。

如:

玩家剩余飞机数是为0、敌人、玩家飞机是否被击中、屏幕上相关信息的绘制等。

程序为需要完成独立功能的模块设置了单独的类。

lzhhdm类继承自Midlet,gameScreen类、MenuScreen类继承自GameCanvas,mybullets继承自Sprite类。

载入程序后首先启动的是程序介绍的信息画面。

点击ok后调用MenuScreen类实现菜单。

如果选择进入游戏,则调用gameScreen类,并且中止MenuScreen类中的线程运行,已提高运行速度。

Mybullets类为玩家子弹类。

3.3Canvas类

为了能有程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在游戏程序中,几乎完全依赖的就是Canvas抽象类进行绘图。

从程序开发的观点看,Canvas类可与高级Screen类交互,程序可在需要时在Canvas中掺入高级类的组件。

Canvas提供了键盘事件、指点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的函数。

键盘事件由键代码指定,但这样控制游戏会导致缺乏通用性,并不是每个设备的键盘布局都适合游戏的操作。

应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的游戏键布局。

3.4Graphics类

Graphics类提供了简单的2D绘图功能。

它具有24位深度色彩的绘制能力,以三原色分别各占一个字节表示其颜色。

程序只能在paint()函数中使用Graphics绘制,GameCanvas可调用getGraphics()函数直接绘制在缓冲区上,可以在任何时间请求传输到前台。

其对象会被传给Canvas的paint()函数,以便最终显示。

3.5MIDP1.0技术下的绘制背景技术

在没有MIDP2.0前,进行游戏绘图一般需要手动编程使用双缓冲。

需要在paint()方法内将所想要画的图形画在一张预先准备好的背景上,等所有绘图操作都完成后再将背景的数据拷贝到实际的屏幕上。

Image类提供了一个建立背景的静态方法createImage(intwidth,int,Version1.0定义的。

PNG格式提供透明背景的图象,这对绘制游戏画面和被操纵主角极有帮助。

飞机之间或与白云碰撞时就不会因为背景有特定的颜色,显示出的效果像贴上的图片而缺乏真实感,物体之间轻微重叠时最上层图片也不会覆盖超过其有效象素外的部分。

PNG格式图片中包含许多定义其图片特性的冗余部分(Chunks)。

这些代码包含在每一个单独的png格式图象中,然而如果将多个png图象合并在一张幅面稍大一些的整图中,多个chunks就可以得到精简,图片的大小可以得到控制。

使用Image类中的createImage函数可从整图中分割出所需要的元素。

在Game包中的TiledLayer和Sprite类都整合了这样的功能。

本程序中的地图元素都集成在一张beijing.png图片中,实现了方便的管理和程序体积的精简。

3.8玩家飞机的控制方式和敌人方的智能运行

GameCanvas提供getKeyStates函数可获取当前键盘上的信息。

将以位的形式返回键盘上所有键的按与释放的状态,当bit为1时,按键就是被按下的状态,为0时则为释放状态。

只需要此一个函数的返回值就可以返回所有键的状态。

这保证了快速的按键和释放也会被循环所捕捉。

同时,这样的机制也可检测到几个键同时按下的状态,从而提供斜向运行等相应功能(本程序没有实现斜上运行功能)。

程序运行时应该对玩家飞机是否飞出屏幕的范围进行检测,如果飞出屏幕,就应该重新设定玩家飞机的位置。

玩家飞机被击中后,为了平衡游戏的可玩性,玩家飞机将有短暂时间无敌,即不进行碰撞检测,同时在屏幕右上角显示无敌时间。

根据游戏设定,敌人飞机。

不能与玩家飞机重合,则他每走一步都需要检测一下是否与玩家飞机碰撞。

Sprite类中提供了collidesWith函数,用于判断是否与某个Sprite、TiledLayer、Image的对象有图象上的重合(即游戏中的碰撞)。

同理,还需要检测玩家子弹与敌机、敌机与玩家子弹是否碰撞。

如果发生碰撞,将相关精灵图片替换为爆炸图片。

敌人飞机需要具有一定的智能性,以便对玩家攻击,使游戏具有一定的可玩性。

敌人可以在适当时候转向或者开炮火,同时,程序应该检测敌机是否飞出了界外。

在普通敌机中,有一组敌机的其中一架具有跟踪功能,其原理为:

当其进入屏幕后,根据玩家飞机的X、Y坐标不断调整自己的X、Y坐标,已达成跟踪的效果。

由于线程的关系,敌机器的改变方向有时并不是实时的,这就可以使玩家有躲开撞击的可能,增强了游戏的可玩性。

在游戏进行中出现的大型飞机,由于其不可能立即被击落,所以应该设置其的运行方法,理论上讲还是根据玩家飞机的坐标,但是,在此设置一个标志位,使得敌人在取的玩家位置后即开始玩家方向运动,这期间,将不执行取得玩家飞机位置重设飞行方向的步骤。

这样做,即防止了大飞机变成跟踪飞机,又使得大飞机的运行具有不确定性。

在关尾出现的BOSS,其在屏幕上方左右移动并发射子弹。

实际上,此时BOSS应该通过玩家在游戏运行中的习惯性的运行方向,使用遗传算法,来动态判断玩家下一步的运行方向,并且指挥普通飞机出现在预测的位置上。

可惜由于时间关系没有实现。

3.9子弹的运行和控制

玩家的子弹是

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2