




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
咔嚓大学 本科生毕业设计本科生毕业设计 基于 cocos2d-x 引擎的物理游戏 physical game based on cocos2d-x game engine 学生姓名xxx 所在专业 所在班级 申请学位 指导教师yyy职称 副指导教师职称 答辩时间 咔嚓大学本科生毕业论文(设计)课题申请表 (指导教师用表) (使用届别: 届) 课题名称 科研项目(国家级省部级厅级市局级校级) 生产或社会实际教学自拟 课题来源 *说明: 课题类别论文 设计第几次立项1 次 2 次 3 次 课题 情况 难易程度较难适中简单工作量较大适中较小 面向 专业 学院 专业 同一课题多名学 生分工情况 主要内容不同内容同参数不同分别做课题的不同部分 指导教师姓名 所在单位(部门) 职称 主 要 研 究 内 容 目 标 和 要 求 指导 小组 审题 意见 学院 领导 小组 意见 选题 学生 *注:1、 “说明”栏填写毕业论文(设计)课题所来自的科研项目名称、或企事业单位名称或教学 内容。2、此表一式三份,指导教师、选题学生、学院各存一份; 咔嚓大学本科生毕业论文(设计)开题报告 (学生用表) (使用届别: 届) 毕业论文 (设计)题目 学 号姓名学院专业 指导教师所在单位、部门职称 (1、内容包括:研究的目的和意义;国内外研究(设计)发展状况、发展水平与存在问题;研究(设计) 主要内容、预期目标及拟解决的关键问题;研究(设计)方案与技术路线;研究(设计)方法;参考文献。 2、撰写要求:字体为 5 号宋体字,字数不少于 1500 字。 ) 工作计划进程表 时 间工 作 内 容 选题是否合适: 是 否 方案是否可行: 是 否 进程是否合理: 是 否 任务能否完成: 能 不能 指导教师(签字) 年 月 日 选题是否合适: 是 否 方案是否可行: 是 否 进程是否合理: 是 否 任务能否完成: 能 不能 指导小组组长(签字) 年 月 日 咔嚓大学本科生毕业论文(设计)中期报告 (学生用表) (使用届别: 届) 学号姓名学院专业 论文(设 计)题目 简述开 题 以来所 做 的具体 工 作和取 得 的进展 或 成果 存在的 具体问 题 下一步 工 作具体 设 想与安 排 指导教 师 意见 指导教师签名: 年 月 日 咔嚓大学本科生毕业论文(设计)答辩小组意见 (答辩小组用表) (使用届别: 届) 学号姓名学院专业 毕业论文 (设计)题目 答辩时间答辩地点 答 辩 提 问 录 记录员: 年 月 日 答辩 小组 评语 及 成绩 评定 成绩(百分制): 答辩小组组长: 年 月 日 教师对本科生毕业论文(设计)评语的主要评价方面及评价内容 教师 类别 评价方面评价内容 学生在论文(设计)过程中的治学态度、工作精神 学生掌握基础理论和专业知识的扎实程度 学生综合运用所学知识和专业技能分析和解决问题的能力 研究方法的科学性;技术线路的可行性;设计方案的合理性 过程 毕业论文(设计)期间的出勤情况;中期报告的撰写情况 论文(设计)的整体结构是否符合撰写规范? 论文(设计)质 量 是否完成指定的论文(设计)任务(包括装订及附件)? 论文(设计)的理论意义,对解决实际问题的意义 论文的观念是否有新意?设计是否有创意? 指 导 教 师 论文(设计)水 平 论文书、设计说明书所体现的整体水平 论文(设计)的整体结构是否符合撰写规范? 论文(设计)质 量 是否完成指定的论文(设计)任务(包括装订及附件)? 论文(设计)的理论意义,对解决实际问题的意义 论文的观念是否有新意?设计是否有创意? 评 阅 教 师 论文(设计)水 平 论文书、设计说明书所体现的整体水平 毕业论文(设计)的基本要点和见解的叙述情况 对答辩问题的反应、理解、表达情况答辩过程 学生答辩过程中的精神状态 论文(设计)的整体结构是否符合撰写规范? 论文(设计)质 量 是否完成指定的论文(设计)任务(包括装订及附件)? 论文(设计)的理论意义,对解决实际问题的意义 论文的观念是否有新意?设计是否有创意? 答 辩 小 组 论文(设计)水 平 论文书、设计说明书所体现的整体水平 注:注:不同的专业(方向) 、不同的研究(设计)课题,根据其特点和侧重,教师评价的 内容可进行必要的补充和相应的调整。 咔嚓大学本科生毕业论文(设计)评阅教师意见 (评阅教师用表) (使用届别: 届) 学生学号姓名学院专业 毕业论文 (设计)题 目 评 阅 教 师 评 语 及 评 定 成 绩 成绩(百分制): 评阅教师签名: 年 月 日 咔嚓大学本科生毕业论文(设计)指导教师意见 (指导教师用表) (使用届别: 届) 学生学号姓名学院专业 毕业论文 (设计)题 目 指 导 教 师 评 语 及 评 定 成 绩 成绩(百分制): 指导教师签名: 年 月 日 咔嚓大学本科生毕业论文(设计)成绩评定表 (学院答辩委员会用表) (使用届别: 届) 学生学号姓名学院专业 毕业论文 (设计)题目 指导教师 (x1) 评阅教师 (x2) 答辩小组 (x3) 总评 分数成绩 ( t ) 等级 成绩 成绩评 定 学院答 辩委员 会 审核意 见 答辩委员会主席签章: 年 月 日 注:1、成绩评定一栏中,t= x1x2x3,x1=指导教师百分制成绩25%;x2=评阅教师百分制成绩25%; x3=答辩小组百分制成绩50%。 2、等级成绩:总评分数成绩四舍五入取整之后,90 分及以上为“优秀” 、8089 分为“良好” 、7079 分为 “中等” 、6069 分为“及格” 、59 分以下为“不及格” 。 目目 录录 设计总说明设计总说明 .i introduction.ii 1 1绪论绪论.1 1.1开发背景.1 1.2国内外研究现状.1 1.3游戏开发目的及意义.1 1.4本课题所研究的内容.2 2 2开发技术和相关理论简介开发技术和相关理论简介.3 2.1cocos2d-x 游戏引擎概述.3 2.2box2d 物理引擎.4 2.2.1box2d 引擎的概述.4 2.2.2box2d 引擎的核心概念.5 2.2.3行为树.6 2.2.4行为树的节点介绍.6 2.2.5行为树的特点.7 2.3c+与 lua .8 2.3.1c+的特点.8 2.3.2lua 的特点.8 3 3系统概要设计系统概要设计.10 3.1设计思想.10 3.2设计原则.10 3.3系统开发工具选用.10 3.3.1操作系统选用.10 3.3.2开发语言选用.10 3.3.3开发工具的使用.10 3.4系统功能模块设计.11 4 4游戏详细设计与实现游戏详细设计与实现.12 4.1游戏设计特点.12 4.1.1ui 模块设计.12 4.1.2三层结构设计.12 4.1.3面向对象设计.12 4.2通用模块实现.12 4.2.1数据压缩.12 4.2.2数据加载.13 4.2.3内存管理.13 4.2.4lua 调用 c+ .14 4.3游戏的结构.15 4.4难点与解决方法.16 4.4.1物理世界的重构.16 4.4.2box2d 与 cocos2d-x 的同步.16 4.4.3道具间的相互过滤.17 4.5启动流程.18 4.6多平台移植与多分辨率适配.20 4.6.1多平台的移植.20 4.6.2多分辨率的适配.20 5 5自动测试自动测试.21 6 6结论结论.22 鸣鸣 谢谢.23 参考文献参考文献.24 1设计总说明设计总说明 要理解“物理游戏” ,先要理解“反 物理” 。例如超级马里奥 ,在空中跳起后还可以改变移 动方向,这是违反物理规律的,就叫反物理;再例如忍者龙剑传 ,在跳到最高点后可以凌空再 跳一 次,即所谓二段跳,这也是反物理的。而“物理游戏”则是严格按照物理规律移动,体现重 力、引力、反作用力、加速度等物理特性的游戏。事实上,如果一个动作游戏的物理引擎过于真实, 那么娱乐性是会大打折扣的。但是利用物理引擎制作的益智游戏,却因为手感真实,通关方法多变 而越来越受玩家欢迎。 本游戏采用基于 cocos2d-x 开源游戏引擎和 box2d 开源物理引擎,在 windows7 操作系统平 台下,使用 microsoft visual studio 2010 开发工具进行开发。在技术实现上,采用基于 c+和 lua 脚本相结合,以实现基本的游戏逻辑流程,保证系统的高性能,提高本游戏的可维护性和可移植性。 本游戏主要实现了以下四大功能: (1)cocos2d-x 与 box2d 的整合 利用物理引擎是一个实现物理游戏行之有效的方法,加入了物理引擎,使得游戏里对于物 理的模拟实现起来变得更简单和效果更好。同时,box2d 引擎作为 cocos2d-x 引擎官方推荐 的物理引擎,在使用上并不会出现引擎冲突的问题。 (2)lua 与 c+的交互 因为 c+运行前需要完成比较耗时的编译工作,在游戏里引入脚本,就可以更迅速地修改 和调试游戏,而 lua 脚本语言是一款高效的语言,并且可以很好地嵌入到 c/c+。 (3)资源的加载 游戏的资源,无论是游戏 ui 还是关卡设计,都是基于编辑器完成的。编辑器把编辑内容 序列化后以 xml 的格式输出。在加载时,只需要把该 xml 文件完整合理地解析,就能在游 戏中呈现与编辑器相同的内容。 (4)多平台的移植与多分辨率适配 作为一款手机游戏,多平台移植与多分辨率适配是必不可少的。因为游戏需要根据不同的 系统规范和准则而作出改变。而又因为市场上手机种类的繁多,分辨率亦多种多样,游戏也需 要根据设备分辨率的大小而作出调整。 关键词:物理游戏;cocos2d-x;box2d;lua 2introduction before understanding the meaning of physical game, the anti-physical should be comprehended first, for example, in the super mario, after mario jumping in the air; he could also change the direction of movement, which is contrary to the laws of physics, called anti-physical. in another example, ninja gaiden, while he jump to the highest point, he could jump again immediately, which is the so-called double jump. this is also anti-physical. so, the physical game is moving strictly according to the law of physics, reflecting the gravity, reaction, acceleration, and other physical characteristics. in fact, if the physical engine of an action game is over realistic, the entertainment will be undermined. however, the puzzle games which adopt the physical engine are welcomed more and more by the players of their real touch and varied methods of clearance. this game is based on cocos2d-x open source game engine and box2d open source physics, operated under the windows7 system platform, and developed by using the microsoft visual studio 2010 development tools. on the technical implementation, combining c + + and lua scripts is in order to achieve the basic logic processes of the game, to ensure high performance of the system, as well as to improve the maintainability and portability of the system. the game mainly has the following four functions: (1)to combine cocos2d-x and box2d using the physical engine is a proven method to achieve physical game. joined the physical engine makes the game for physical simulation easier and the effect better. meanwhile, box2d, as the official recommended physical engine for cocos2d-x, will not appear the engine conflict problem while in use. (2)to interact lua and c+ because before the operation of c + +, it will take some time to complete the compilation. introducing the script to a game can modify and debug it more quickly. while lua scripting language is an efficient one, and can be well embedded into c / c + +. (3)to load resources game resources, both in the game ui and level design, are based on the editor. after the editor has serialized the content, it will be output to xml format. when loading, it just needs to make the complete xml file parse reasonably, then it can appear the same in the game as the editors content. (4)the transplantation of multi-platform and multiresolution adaptation as a mobile phone game, multi-platform transplantation with multiresolution adaptation is necessary, because the game need to change according to the various system specifications and standards. for the reasons that the types of cell phone on the market are various, and the resolutions are also varied, the game needs to adjust to fit the size of the devices resolution. keywords: physical game; cocos2d-x;box2d;lua 基于基于 cocos2d-x 引擎的物理游戏引擎的物理游戏 1 1绪论绪论 1.1开发背景 手机游戏,在过去一段较长时间里,基本都是基于 j2me(java 2 micro edition),但由于 java 是 一种编译成字节码后再解释执行的语言,所以在效率上远远比不上 c/c+,而游戏却十分讲究效率, 因为一旦效率低下,会直接影响玩家对游戏的体验,即便游戏做得再好再漂亮,没有一个良好的体 验,也不能为玩家所接受。随着科技的发展,特别是近几年智能手机系统的兴起,j2me 逐渐退出 舞台,取而代之的是针对各自主流手机系统的语言的兴起,例如 ios 的 object-c,android 的 java 和 windows phone 的 c#,即使后者也是运行在虚拟机上的,但是厂商已经针对自身平台对它们作 了特殊优化,所以效率上也远远超过 j2me,但在手机系统平台众多的今天,如果每一个游戏都用 多种语言复写,这种时间和资源的代价是很高的。于是,c/c+的高效率和跨平台能力又一次得到 体现。 cocos2d-x 游戏引擎是一个支持多平台的 2d 手机游戏引擎,使用 c+开发,基于 opengl es,基于 cocos2d-iphone,支持 wophone, ios 4.1, android 2.1 及更高版本, windows xp 4.2.2数据加载 本游戏资源及配置都是基于 xml 格式的,为了效率,都是由 c+利用 rapidxml 进行 xml 解 析,在 c+层,是在解析过程中把数据以 key-value 方式存入 map 容器里,以后需要访问,直接访 问 map 容器。xml 解析中,关键是把 xml 内容推送给 lua,因为有很多需求是需要 lua 来解析 xml,只有 i/o 是由 c+完成。 9 4.2.3内存管理 游戏里面物体众多,物理相关的,box2d 已经利用内存池技术做好了内存管理,而 cocos2d-x 精灵的内存管理也有计数器负责管理,而关键是在游戏精灵内部实现逻辑时所需要的内存管理,这 里使用的是来自c+ primer的内存管理技术,它是使用 operator 重载 new 和 delete 实现的。关 键代码是: 10 template void *cachedobj:operator new(size_t sz) if (sz != sizeof(t) throw std:runtime_error if (!freestore) t * array = alloc_mem.allocate(chunk); s_nnodeallocated += chunk; for (size_t i = 0; i != chunk; +i) add_to_freelist( t *p = freestore; freestore = freestore-cachedobj:next; return p; template void cachedobj:operator delete(void *p, size_t) if (p != 0) add_to_freelist(static_cast(p); 4.2.4lua 调用 c+ 在本游戏里,为了方便,游戏的流程,ui 的控制和各种于游戏逻辑无关的操作,基本都是在 lua 层完成,所以 c+的接口需要暴露给 lua。本游戏里,采用的是“lunar”方法来显示,具体代 码可以参考 lunar.h 或者官方 wiki。下面是基本流程: 11 在 lunar.h 里有定义: #define lunar_declare_method(class, name) #name, 同时,需要把该类注册: lunar:register(lua_state); 最后,在 lua 代码里就可以直接使用了: object = class:new() object : method0 () 至此,lua 调用 c+就完成了。 4.3游戏的结构 游戏里所有景物都是继承于类 lua_lggbox2dsnailsprite,这个类整合了 cocos2d-x 的精灵与 box2d 的刚体、定制器和关节等。游戏中的九种道具也不例外,另外还有游戏里的男女主角和配角, 它们被抽象成 lua_lggbox2dactor。精灵类层次图如图 4-1 所示: 图 4-1 精灵类继承层次图 至于接触监听 contactlistener,它是被设置在加载类里面,因为加载过程中,所有物理精灵都 会被生成,类 lgglevelloader 会把精灵的指针保存起来,而类 lggbox2dlevelloader 则会把物 理相关的关节和刚体的指针保存起来,所以类 lggmlevelloader 会继承 b2contactlistener,完成整 个监听回调的工作。加载类继承层次图如图 4-2 所示: 图 4-2 加载类继承层次图 4.4难点与解决方法 物理世界的重构 游戏按下重来键后,根据需求,是需要把物理世界还原到游戏开始前,但道具摆放位置不变, 一开始策略是重来后,把世界中的物体设置回原始位置,但是这种方法并不奏效,原因猜想是 box2d 的物理检测是基于动态树的,在游戏重来后直接设置物体位置,并没有改变到动态树的构造, 所以导致再次运行后出现碰撞检测错误问题。 解决方法:由于关卡信息在关卡初始化前就已经保存下来,所以在重来后,直接删除了世界, 然后重新构造,再把物体加到世界中。因为构造世界和添加物体所耗费的时间很短,所以这个方法 没有造成很大的性能损失。 4.4.2box2d 与 cocos2d-x 的同步 因为 box2d 与 cocos2d-x 是分属不同的领域,它们有各自的循环且并不同步,而游戏是却是 单线程的。例如主角遇到气球,会有一个逐渐变成气球状的动画,动画结束后,主角会以气球的形 态维持一段时间,再恢复原形。问题就在这里,因为主角原形时和气球形态时的物理属性是不同的, 如果以动画时间为标准,在一些性能较差或较好的机器上,会导致物理属性的改变提前或者延后, 就会出现显示与状态不协调的状况。 解决方法:在总循环里,利用计数器来协调 box2d 与 cocos2d-x 的循环。关键代码如下: void lua_gamelayer:update(cctime dt) / maximum number of steps, to avoid degrading to an halt. const int max_steps = 5; m_fixedtimestepaccumulator += dt; const int nsteps = static_cast(std:floor(m_fixedtimestepaccumulator / m_fsteptime); / to avoid rounding errors, touches fixedtimestepaccumulator_ only / if needed. if (nsteps 0) m_fixedtimestepaccumulator -= nsteps * m_fsteptime; assert ( accumulator must have a value lesser than the fixed time step m_fixedtimestepaccumulatorratio = m_fixedtimestepaccumulator / m_fsteptime; const int nstepsclamped = min (nsteps, max_steps); for (int i = 0; i nstepsclamped; +i) / in singlestep_() the collisionmanager could fire custom / callbacks that uses the smoothed states. so we must be sure / to reset them correctly before firing the callbacks. if (i + 1 = nstepsclamped) /last step resetsmoothstates(); singlestep(m_fsteptime); 4.4.3道具间的相互过滤 因为需求,主角在某道具的作用下,其他道具就不会对主角产生作用。如果不加以过滤,则会 出现各种道具相互作用以致产生不可预测的现象。 解决方法:引入有限状态机,在碰撞消息处理时剔除其他道具的影响。状态种类如下: enum state_leadrole_secret = lua_lggbox2dsnailsprite:state_common_count, state_leadrole_standby_contact, /不确定状态 state_leadrole_highspeed, /高速 state_leadrole_contact, /碰撞 state_leadrole_knocked, /撞击 state_leadrole_vertigo, /眩晕 state_leadrole_preshocking, /进入被电击状态之前 state_leadrole_shocking, /被电击 state_leadrole_disable, /主角被捕获或飞出屏幕外,失去自由行动的能力 state_leadrole_dead, /死亡 state_leadrole_succeed /成功 ; 4.5启动流程 游戏 ui 是由编辑器完成设计,如图 4-3 所示: 图 4-3 编辑器下 ui 视图 与图 4-3 对应的游戏界面如图 4-4 所示: 图 4-4 游戏下 ui 视图 而卡关设计同样是依靠编辑器完成,如图 4-5 所示: 图 4-5 编辑器下关卡视图 与图 4-5 对应的游戏界面如图 4-6 所示: 图 4-6 游戏下的游戏视图 4.6多平台移植与多分辨率适配 多平台的移植 虽然 cocos2d-x 引擎支持众多平台,但根据市场的占用率来衡量,游戏只需要移植到 ios、android、windows phone 8 和 windows 8。由于 cocos2d-x 引擎已经在底层根据平台的不同 而作出了分支,所以移植过程中并不会出现重大阻碍。下面两点是值得注意的: (1)c+中野指针的问题。由于平台的区别,类成员变量中的指针若果没有被初始化,那 么该指针有可能是野指针或者是空指针。结果就是在使用同样的代码的情况下,在一个平 台上运行正常,在另外一个平台上却出现崩溃。 (2)android 平台上资源的读取。由于 android 资源读取方式是需要查找,频繁查找的 i/o 时间是十分漫长的,结果就是游戏需要很长的时间才能加载完成。解决方法是把资源打包 成 mpq 格式,这种格式广泛应用在暴雪游戏里,使用 mpq 格式,可以大大提升 android 平台上资源读取的速度。 4.6.2多分辨率的适配 本游戏的资源是在编辑器完成组装和设计的,在组装过程中已经根据分辨率大小作出了资源的 选择,准则是“高分辨率使用 hd 大图,低分辨率使用 sd 小图” 。当然,需要考虑到苹果 ipad 的 retina 分辨率,会特别针对它做一个分辨率,使用图片会是 fhd 超高清大图。 游戏会根据需求,做好特定的分辨率资源,特别是苹果机器的分辨率。但在 android 和 windows phone 8 下,就需要根据已有分辨率作适配。cocos2d-x 引擎已经为多分辨率适配做了大 量工作,所以并不需要开发者直接操作视口大小和触控的分发。 12 值得关注的是 android 平台上的多分辨率问题。因为基于 android 平台的手机众多,只能通过 现在的分辨率资源找最接近的进行伸缩,本游戏采取的方案是寻找与目标分辨率像素总数差值最小 的现有分辨率进行适配。 5 5自动测试自动测试 游戏测试,是软件测试的一部分,是每一个游戏上线前必须完成的事情。只有测试过通,才能 对游戏品质有所把握。 本游戏中除了人工测试以外,还引入了自动测试模块。此模块是由 lua 脚本完成,具体流程如 下: (1)通过隐藏的命令打开测试系统,完成测试的开启和设置; (2)点击主界面的男主角,启动测试系统; (3)利用游戏内的帮助系统获取正常通过下的道具的摆放位置信息; (4)把道具设置到上一步获取的位置,并启动游戏; (5)待该关卡通关后,跳转下一关或根据设定跳转。 测试系统界面如图 4-7 所示: 图 4-7 win32 下的测试系统截图 结论结论 在系统的设计开发过程中,采用面向对象的方法和利用软件工程思想,针对在线投票系统功能 需求和特点,对物理游戏进行整体规划,使整个游戏流程清晰、逻辑合理,为游戏的实现创造了良 好的条件。在技术选用上,本游戏基于热门的 2d 游戏引擎 cocos2d-x 和物理引擎 box2d,采用 c+语言与 lua 语言进行系统构建。游戏支持的 android、ios 和 windows phone 8 等主流手机平台, 利用互联网的开发和即时性,玩家可以通过游戏内的社交按钮分享到各主流社交平台。本游戏的 ui 设计采用 q 版风格,简朴的用户界面操作,详细的玩法教程,使玩家能更好地享受本游戏。 在本次游戏设计开发过程中,第一次运用软件工程的规范去进行游戏的开发,从访问大量同类 相似功能系统,获取功能需求,到为了游戏的分层结构设计,参考大量软件工程书籍和参照其他优 秀系统的分层结构,在代码模块的编写上也尽量运用 23 种经典的设计模式。不过由于时间精力有 限,基础不足,导致整个系统在开发过程中困难重重。不过,通过坚持不懈的努力,此次游戏设计 也算是达到了预期的目的。不过游戏还
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区消防知识培训课件讲话稿
- 天津市武清区英华实验学校2024-2025学年高一上学期第二次月考生物试题(有答案)
- 甘肃省陇南市西和县2024-2025学年七年级下学期数学期末试卷(含部分答案)
- 杭州房屋意向合同范本
- 雇佣终生保姆合同范本
- 铝板质保协议合同范本
- 保险招标合同范本
- 转权转让合同范本
- 拆除窗户出售合同范本
- 购房定向开发合同范本
- 水泥生产企业生产安全事故综合应急预案
- 全自动血液细胞分析仪产品技术要求深圳迈瑞
- 找对英语学习方法的第一本书
- 制度编写书写规范
- 安徽涵丰科技有限公司年产6000吨磷酸酯阻燃剂DOPO、4800吨磷酸酯阻燃剂DOPO衍生品、12000吨副产品盐酸、38000吨聚合氯化铝、20000吨固化剂项目环境影响报告书
- 制造业业务流程
- 《诺丁山》经典台词
- 对铁路机车乘务员规章培训的探讨与实践
- 临床医学实验室 仪器设备一览表格模板
- 《绿色建筑》绿色建筑与建筑节能课件
- 二级生物安全实验室备案登记申请表(模板)
评论
0/150
提交评论