毕业设计(论文)-采用J2ME平台开发手机游戏.doc_第1页
毕业设计(论文)-采用J2ME平台开发手机游戏.doc_第2页
毕业设计(论文)-采用J2ME平台开发手机游戏.doc_第3页
毕业设计(论文)-采用J2ME平台开发手机游戏.doc_第4页
毕业设计(论文)-采用J2ME平台开发手机游戏.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录目录 摘要 1 1 绪 论 1 1 1 手机游戏发展现状 1 1 2 初识 J2ME 平台 1 1 3 开发环境 2 1 4 关于 ECLIPSE 3 1 5 SUN WIRELESS TOOL KIT 3 1 6 JAVA应用程序管理器 3 2 游戏结构 思路 技术 3 2 1 程序流程 3 2 2 CANVAS类 4 2 3 GRAPHICS类 5 2 4 MIDP2 0 和 GAMECANVAS 5 2 5 PNG 图片格式 6 3 程序分析和实现 6 3 1 游戏开始 6 3 2 游戏主程序逻辑功能介绍 7 3 2 1 gamePlay 类所实现的功能 8 3 2 2 地图的实现 8 3 2 3 地图的移动 9 3 3 游戏中的GAMEPLAY类 9 3 3 1 关于 commandAction 方法 9 3 3 2 Sprite 类对象的碰撞检测及相关属性 8 3 3 3 可重玩次数的实现 9 3 3 4 关于显示战绩 BOSS 生命的 showFighting 9 3 3 5 普通属性敌人 9 3 3 6 让白云增加层次感 10 3 3 7 键盘事件监测 10 4游戏代码优化 11 总结 11 致谢 12 ABSTRACT 12 参考文献 12 1 采用采用 J2ME 平台开发手机游戏平台开发手机游戏 摘要摘要 近年来 随着移动电子技术的发展 手机不再仅仅是一个单纯的通讯工具 更多的影音游戏娱乐功能成为手机的重要功能 J2ME Java 2 Micro Edition 技 术的发展 给手机软件设计的快平台带来了希望 为资源受限设备的智能化 多样化提供解决方案 并得到业界的广泛支持 本文通过介绍一个手机游戏的制作实现过程 来对 J2ME 的概念 体系结 构 程序设计以及 J2ME 技术在手机游戏开发中所涉及到的内存优化 性能优 化进行了简单的介绍 关键字关键字 手机游戏 J2ME 配置 简表 冲突检测 1 绪绪 论论 1 1 手机游戏发展现状手机游戏发展现状 2005 年全球手机上线游戏有近 68 亿美元的商机 至 2008 年 将以每年 10 的增长 率增长 全球移动游戏业创收将超过 93 亿美元 中国的手机游戏市场也会达到 400 亿元人 民币的规模 毫无疑问 面对巨大的市场诱惑 互联网风潮过后 很多投资热情都倾泻在 这个由互联网 手机所催生的 SP 市场 WAP 站点开始成为投资商关注的热点 无线互联 网全新一轮的发展高潮已经到来 然而随着手机游戏市场的逐渐成熟 产业必将出现大量 的资源整合 在未来的手机游戏市场中 JAVA 和智能手机的在线游戏将是手机游戏的一个主流方 向 国际分析师表示 随着 3G 网络的商业化以及数据服务水平的提高 手机游戏的体验 将大幅度提升 从而吸引更多的玩家 3G 业务最高可以支持 384kbps 的数据传输速率 再 加上网络游戏允许一定的时延 3G 业务完全可以支持每秒 300k 左右的数据吞吐量 大的 数据吞吐量必然可以支撑更高速 更流畅 画面更细腻的手机网络游戏 随着 3G 在国内 的硬件建设与业务推广 智能手机和 3G 手机的普及 3G 的发展必将给移动最大的数据增 值业务 手机游戏带来更多的商机 手机游戏市场必将进入大幅度的增长期 1 1 2 初识初识 J2MEJ2ME 平台平台 J2ME 平台是由配置 Configuration 和简表 Profile 构成的 配置是提供给最大范 围设备使用的最小类库集合 在配置中同时包含 Java 虚拟机 简表是针对一系列设备提供 的开发包集合 在 J2ME 中还有一个重要的概念是可选包 Optional Package 它是针对 2 特定设备提供的类库 比如某些设备是支持蓝牙的 针对此功能 J2ME 中制定了 JSR82 Bluetooth API 提供了对蓝牙的支持 J2ME 中有两个最主要的配置 分别是 Connected Limited Devices Configuration CLDC 和 Connected Devices Configuration CDC 他们是根据设备的硬 件性能进行区分的 例如处理器 内存容量等 由于这个标准是在 2001 年的时候指定的 而现在移动终端的处理能力和内存容量发展很快 如果还按照这个标准来评判可能就不准 确了 随着技术和硬件设备的不断发展 J2ME 开发网将逐步推出基于 CDC 的 J2ME 平 台介绍 2 从上述的标准中我们不难看出 CLDC 主要针对那些资源非常受限的设备比如手机 PDA 双工寻呼机等 而 CDC 主要面对那些家电产品 比如机顶盒 汽车导航系统等 简表是 以配置为基础的 例如 Mobile Information Devices Profile MIDP 就是 CLDC 上层的重要 简表 与配置的纵向特性不同的是 简表是横向的 下图是 J2ME 体系结构的框图 图 1 J2ME 体系结构的框图 1 3 开发环境开发环境 操作系统 Microsoft Windows XP 程序语言 Java 2 开 发 包 Java TM 2 Standard Edition 1 4 2 Sun Micro J2ME Wireless Tool Kit 2 3bate 3 IDE实例化 Command 类对象 ok 调用 addCommand 命令建 立 ok 命令与 Form 之间的关联 调用 setCommandListener 命令使 Form 与 CommandListener 建立关联 调用 Displayable 的 seturrent 函数显示背景介绍窗口 当玩家点击跳过后将调用 display setCurrent menuCanvas 以显示游戏菜单 menuCanvas 图 3 类 menuCanvas 继承自 Canvas 类 并实现接口 Runnable 和 7 CommandListener 在类 menuCanvas 中定义了 lowColor 和 highColor highBGColor 三个整 型变量及布尔型变量 co 当玩家按住上或下键时 在函数 keyPressed int code 中的整型变 量 menuIndex 相应的减 1 或加 1 相应的 在 paint 函数中会根据 menuIndex 绘制选项是 否被选中 在函数 run 中 如果 co 为真 则不停的 repaint 设置 co 的意义在于 当进入 游戏主画面后 co 赋值为 false 以终止绘制选项的 repaint 提高游戏速度 当移动选项条到某项 并点击选定时 在 commandAction 方法中根据 menuIndex 的值判断选择了哪个选项 列如当选择 关于作者 时 将调用 PlanMidlet 类中的 authorShow 方法以显示 关于作者 界面 图 4 在 authorShow 方法中 Form 类对象 a null 表示清空 Form 并调用 append 方法在表单上放置 StringItem 类的实例以显示游戏作 者信息 游戏帮助 图 4 界面的显示与 关于作者 界面相同 只不过调用的是 helpShow 方法 图 3 游戏制作背景 8 图 4 游戏菜单 图 5 关于作者 图 6 游戏操作 3 23 2 游戏主程序逻辑功能介绍游戏主程序逻辑功能介绍 gamePlay 类是游戏的主类 决定着敌人何时出现 控制着敌人出现的方法 判断敌人 及玩家是否被击中等 它运行在独立的线程中 以 50 毫秒恒定的频率刷新画面 其流程结 构如 图 7 所示 9 3 2 1 gamePlaygamePlay 类所实现的功能类所实现的功能 gamePlay 类要实现地图移动 敌机显示的相关 属性 玩家的操作及属性等功能 gamePlay 类采用 了 LayerManager 管理游戏画面 这样游戏中所有 的精灵都统一的用 LayerManager 管理 在统一由 LayerManager 刷新即可 因此 在 gamePlay 中创建 LayerManager 的对象 lm 并在构造函数中实例子 化 其他精灵类的对象如敌机 玩家飞机 玩家飞 机的子弹 敌人的子弹 BOSS 及 BOSS 所属的子 弹都需在 gamePlay 类中建立相应的对象 并在构 造函数中实例化 由 lm appned 方法添加到 LayerManager 类容器 lm 中 3 2 2 地图的地图的实现实现 地图 作为游戏的一个重要组成部分 也是比 较吃内存地方 而手机存储空间是有限的 将整张 地图完整地存储在手机中是不可取的 为了节约空 间 在手机游戏地图绘制过程当中 往往采用的方 法是 将一个地图中相似的部分进行抽取 然后组 织一个小的 PNG 然后用这个相对较的图片进行剪 裁 最后组织出一个完整的地图 这里我们用 TiledLayer 来绘制地图 TiledLayer 的中文理解是 平铺 用很多小图片拼 凑出一个完整的图片 地图实际即为 TiledLayer 的 一个对象 先利用 TiledLayer 的构造函数建立 TiledLayer 根据构造函数的参数可以给定 Cell 数组 的大小 将资源图片切割成等尺寸的画面 并调用 setCell 设置具体的图象格内容 图 7 游 戏流程图 首先创建一个返回 TtiledLayer 的方法 createBackGround 以便在 gamePlay 的构造函 数中调用 createBackGround 方法中 定义整型数组 map 用以以存储 Cell 的索引值 并 使用 setCell 方法 设定地图如何显示 以形成地图 其中 i 的值由循环 for int i 0 i map length i 取得 地图的 mapRows 和 mapHeight 画出地图后 并用 append 方法将地图添加 lm 中 在程序设计中为了达到让玩家感觉 进进入入游游戏戏 游游戏戏画画面面是是 否否渲渲染染成成功功 碰碰撞撞检检测测 玩玩家家被被击击落落了了吗吗 显显示示敌敌人人 可可重重次次数数是是否否为为0 继继续续游游戏戏 判判断断是是否否过过关关 返返回回菜菜单单 是是 是是 否否 否否 是是 否否 是是 10 到一直在移动的效果 在线程循环过程中实现地图上移 其次将地图最后添加到 lm 中可 以达到最远视线的效果 3 2 3 地图的移动地图的移动 首先 在 createBackGround 中 用 mapRows 1 16 getHeight 语句对整型变量 mapHeight 赋值 其中 mapRows 1 代表地图有多少行 16 为单个图片的高度 而减去 getHeight 是因为地图不只一屏大小 这样可以保证在一个屏幕的可视区域 由于 J2ME 规 定坐标系中下方向为正 而在游戏当中我们的飞机是从地图的最下方出发的 所以使用语 句 y mapHeight 将 mapHeight 的数值变为负数 可视区的变化才是实现地图移动的最关键的地方 在这个游戏当中用到了 LayerMangager 中的 setViewWindow 0 0 getWidth getHeight 10000 方法设定可视区域 的范围 0 0 表示 View Window 的起始坐标 getWidth getHeight 10000 使用 lm paint g 0 y 决定 View Window 从屏幕的哪里画起 在 run 函数中的 while play 中 使用 语句 y y 1 使得每次绘图都使地图上移 1 个象素 3 33 3 游戏中的游戏中的 gamePlaygamePlay 类类 gamePlay 类解决的问题是 作为一个游戏 在游戏结束标志出现之前总会不断的绘制 新的敌人 而由于内存的限制 不断的新增 Sprite 对象是不可取的 解决的办法是设定 6 个敌机 Sprite 类对象 j0 j1 j2 及敌机子弹 jbullet1 jbullet1 jbullet2 分别代表三架敌机 及其配属的子弹 所以在 gamePlay 类的构造函数分配这 6 个 Sprite 类的存储空间 并且实 例化 并使用相同的方法实例化 boss 在构造函数中 定义 boolean 型变量 conti true 这个变量很重要它的作用是控制这个 程序跑线程的时候是否对画面进行重绘 就其功能来将就是实现游戏是否可以暂停的一个 重要参数 为了实现战果的记录 在代码中加入了 kp 消灭敌机数量 score 积分 打中一 次酸一分 变量 并在构造函数中初始化 由于战果不累计 构造函数中将这两个变量初 始化为零 3 3 1 关于关于 commandAction commandAction 方法方法 每个创建 Command 实例的 J2ME 的应用程序也必须创建实现 CommandListener 接口的 实例 用户通过 CommandListener 与游戏代码进行交互 程序通过 commandAction 方法响 应用户命令 在 commandAction 方法中 使用 getabel 方法获取命令的标签 如果 getLabel 暂 停 时 表示玩家点击了暂停键 此时 conti 赋值为 false 游戏画面的绘制及游戏相关的 运算暂停 并且 使用 removeCommand c 语句将 暂停 移除 使用 addCommand new 11 Command 继续 Command OK 1 将 继续 按纽 添加进来 当玩家点击 继续 时 conti 赋值为 true 有一点特别值得说的是 由于 J2ME 的线程中没有 stop 方法 为了实现 程序可以暂停 我们重构了 start 方法 在 run 中增加一个 flag 形如 run while flag 这样我们就实现了类似 stop 的方法 在本程序中 flag 就是 boolean 型变量 conti 所以一 旦此标识变量被设为 false 那么 while conti 循环就会结束 线程也会跟着结束 当用户按 下 继续 的时候 start 将重新产生一个线程继续执行相关的运算和画面绘制 当玩家通关时或者任务失败时 将显示相应信息 并使用上面的方法将 暂停 键变 为 返回 键盘 当点击 返回 键时 将返回主菜单选项 调用类 PlanMidlet 里的方法 reTry 在此方法中 实例化一个 MenuCanvas 类对象 并将 开始游戏 改变为 重新 开始 这里用 MenuScreen mainmenu 0 重新开始 实现该功能 当选择 重新开始 时 使用 gameCanvas new gameCanvas this 将使所有变量重新被初始化 如地图的绘制 敌人出现位置的重置 敌人的数量 玩家飞机的当前位置等 使用 gamescreen start 重新 开始程序的循环 3 3 2 SpriteSprite 类对象的碰撞检测及相关属性类对象的碰撞检测及相关属性 游戏中 程序代码为 while conti 对进行玩家飞机 子弹与敌机及敌机子弹与玩家 飞机的碰撞检测 即使用函数 collidesWith Sprite boolean 当玩家子弹与敌机的碰撞检测 为真时 用 setImage 方法显示飞机爆炸的动画 紧接着将玩家子弹 敌机 setVisible false 玩家子弹的设置是这样的 初始化一个 Sprite 数组 大小为 9 这样玩家在一个屏幕范围内 可以发出 9 发子弹 子弹超出屏幕或与敌机发生碰撞时使用方法 setVisible false 这样玩 家可以再发出一枚子弹 由于子弹移动速度和线程刷新速度都事先经过运算 故基本不会 出现玩家不能发出子弹的情况 敌机与玩家的碰撞检测原理同上 都是使用的 collidesWith 方法 12 图 8 游戏中的画面 1 图 9 游戏中的画面 2 3 3 3 可重玩次数的实现可重玩次数的实现 根据游戏设置 玩家在每关中有共三次机会 并根据玩家拥有可玩次数的多少 循环 实现在游戏界面的右上角绘制玩家剩余可玩次数 这里所用到的变量是 playerno 当 playerno0 时 碰撞后 将变量 planert 赋值为 1 在之后的 if planert 1 判断语句 中 重新设定玩家飞机的图片和可视状态 同时使用 setPosition 函数设定玩家非的位置在 屏幕下方 设定 pzbz 1 即不检测碰撞 玩家有短暂时间无敌 无敌时间由屏幕右上角进度 条表示 设定 inputno 1 即飞入屏幕的过程中手机键盘是不可以用的 设置 planert 2 即 以上这些设置只执行一便 在 if planert 2 判断语句中 使用语句 move 0 2 使飞机自己向上运动 使用游戏中 画面 if c1 getY planepo 24 判断飞机是否到达屏幕最下方 planepo 是屏幕下边缘的坐标 如条件为真 则将 inputno 设置为 1 表示键盘可用 将 planert 赋值为 3 使其不再执行以 上各步 3 3 4 关于显示战绩 关于显示战绩 BOSSBOSS 生命的生命的 showFightingshowFighting 方法 showFighting 对飞机 地图 子弹进行了重绘及显示战果 玩家飞机数 及 玩家无敌状态的时间条 BOSS 生命条等 13 首先使用 lm setViewWindow 和 lm paint 设定可视范围 ViewWindow 和从哪里画起 其次 使用 g drawString 绘制屏幕上方的战绩 BOSS 的生命条 玩家剩余生命标志 drawString 中使用 String valueOf 返回玩家成绩杀敌数量 score kp 的字符串表示 其中根 据 playerno 的值绘出玩家的飞机标志数 当每次刷新绘图页面时 应使用 GameCanvas 的 flushGraphics 将屏幕后台的缓冲区内的图像刷新到前台来 flushGraphics 应该写在方法的 最后 玩家飞机的生命标志使用 drawImage 就可以绘制在屏幕上了 3 3 5 普通属性普通属性敌人敌人 普通属性敌人是指游戏中除开 BOSS 以外的敌人 在这里为了使游戏具有一定的可玩 性 我们必须想办法让这些敌人具有随即属性 即每次出现的位置效果不一样 还要具有 一定的思考能力 就是说在游戏中增加人工智能算法 加入人工智能可以增加游戏的可玩 性 首先在程序中定义 Random 类对象 aik aip 两个整型随机变量 和一个整型变量 ai 程 序中使用 switch ai 语句判断每一次的飞机出现情况 随机变量是避免重复效果的关键 语 句 ai aik nextInt 4 得到一个 0 到 4 之间的整数 表示游戏中所设置的 4 种状态 同样 在构造函数中放置 aip aip nextInt 5 每次新游戏的时候小飞机出现的情况不一样 根 据上边得到的四个随机整数 程序给出了 4 种情况 情况 1 飞机出现位置获取随机整数 aipp aip nextInt 5 取的一个整数 然后设定飞 机的出现位置 这个地方在四中情况都是同样的方法实现的 故作为公共代 码提取出来 其代码用函数 stateOne 封装 由于以下三种方情况也首先会使 用该方法 故后边不再对此进行阐述 当 pState8 break 这个实现了如果某一发子弹为不显示那么我们通过这个循 环得到该 Sprite 的具体编号 然后利用一个新的循环 if pi 9 pb pi setPosition cx 8 cy 8 pb pi setVisible true 显示具体编号的玩家子弹 这里有一个 BUG 就是当玩家输入 FIRE 键过快时 游戏会进入死锁状态 按代码来讲是不因该出现这种情况的 而且这里用的是 循环的方法来实现的 其实这个循环过程中有 会产生冗余代码 增加了程序的运算次数 增加了 cpu 时间和内存空间 是一个败笔 4游戏代码优化游戏代码优化 对与一个手机游戏的程序来讲 最重要的就是对资源的最大化的合理应用 以便编写 的代码能有以下 2 个重要的优化 一是资源 二是方法 这个是代码具有实用性的更本要 求 也是手机这样一个特殊运行环境中能够运行你的代码的更本要求 这是游戏可玩性的 前提 内存都跑哪儿去了 在本游戏设计过程当中总结出内存主要消耗在两个地方 一是资 源 这里的资源就是在代码中所调用的图片 音频等外部文件 这些文件在代码开始运行 15 时就已经被载入内存 当然也有之后载入的情况 而这些资源又是最耗内存的 由于本程 序中没有涉及到音频文件的使用 故在此不进行讨论 说说图片 对图片进行优化最先也是重点考虑的是如果尽可能的减小片的大小 在很多资料书里 边的做法是采用切割法 就是将一个图片中相类似的地方进行切割分快编号 然后重组 这个方法的缺点是 设计一个地图的时候 会重复的调用一个一个的编号 这样一来我们 的工作量就大大增加 当然现在已经有地图编辑工具了 其次要考虑的如果我们把暂时用 不到的图片放到一边 待程序需要调用的时候再将其载入内存 个人认为这个方法的弊端 是增加了 I O 操作 但这个在本程序中没有用到 应该也是一个不错的方案 另外一个消耗内存的地方就是 程序本身 在一个程序运行过程当中我们总会产生一 些过程代码 过程变量 对与一个程序设计者来讲 设计一个优秀的程序是非常兴奋的事 情 在 J2ME 程序设计过程中 代码的优化 首先反应在方法上边 那在手机这个特殊的 平台上什么叫好的方法呢 首先减少内操作 当然现在程序设计首先考虑的是面向对象 但是类在整个周期中消耗的内存是非常大的 考虑到手机的硬件环境的限制 我们要尽量 减少类的使用 其次在类的实例 变量 方法调用等操作过后 首先我们要做的是将这些 不在用的中间代码给清理掉 最简单有效的方法是将这里过程量赋值为 null 当然在 Java 本身就有垃圾回收机制 但是这个回收机制不能保证什么时候回收 也就是说不能知道这 个回收机制什么时候开始实施 还好 Java 提供了 System gc 方法 允许代码设计者手动的 执行垃圾回收 合理的利用 System gc 方法 可以有效及时的回收不被使用的内存 从而 达到减少内存的使用 下边在本文代码编写过程中遇到的一些关于内存优化的问题 在这里进行一下讨论 可能看法并不全面 1 面向对象的效果并不理想 在这个代码过程中 我最开始是使用面向对象的方法来 代码的 这是一个错误的说法 Java 本身就是面向对象的 这里准确的说 尽量的用较少 的类 但效果并不理想 这个方法下最大的败笔就是游戏的速度比较慢 后来将游戏的 主题用一个类实现 速度明显增加 后来细想了一下 可能原因是 类在实例话的时候会 占用较多的内存空间 2 作为程序员应该知道自己如何优化自己的代码 比如说在本游戏设计的时候 在对 玩家子弹和敌人的碰撞检测中用了循环 还有玩家子弹的生成也用了循环 实际上着两个 循环都明显的增加了内存和 cpu 的使用量 仔细看代码 会发现循环中的代码是没有必要 但有必须写进去的 如果不用循环 直接写出每种情况该如何处理 即用判断语句来实现 就会减少多次运算 这也是优化的一个重点 3 工具优化法 就是在代码打包的时候用混淆器来优化自己的代码 这个方法很有用 工具能够明显的压缩程序代码的大小 很显然代码少了 内存占用的内存必然就减少了 16 总结总结 论文书写过程也是一个学习的过程 本论文过程中 通过在 J2ME 平台上通过编写代 码 实现了一个可以在手机上运行的简单的手机游戏 总体来看 游戏机遇 MIDP2 0 的基 础上编写的 大量的运用了 J2ME 所提供的 API 基于精灵的游戏设计 综合运用了平铺 图层 Tiled Layer 图层管理器 LayerManager 碰撞检测 Java 线程等技术 使游戏 具有一定的可玩性 当然本游戏代码中也有很多弱点 比如说资源 方法的优化不够完善 游戏代码中人 工智能的理念还不够 还有对与一个程序员来讲 单单从代码来看 代码命名不规范 程 序代码不够节约等也存在很大的问题 在整个代码编写过程中发觉 J2ME 平台中面向过程 的编程实现出来的效果比面向对象的效果要好 可能是由于手机游戏硬件环境的限制 或 者是我对 J2ME API 还不够了解的原故 总的来讲还有很多地方可以修改的 但论文的过 程仅仅是一个学习的过程 在以后的时间里 需要学习的地方还很多 致谢致谢 论文结题了 在此特别感谢指导老师严千钧给了我一个宽松的论文写作环境和尽心尽 责的指导 使论文得以顺利高效的完成 非常感谢 其次最感谢的就是我的父母 毕业论 文意味着大学生活的即将结束 感谢这么多年以来父母对我生活和学习的支持 感谢他们 给了我一个健康美好的生命 让我能细细体会美好的生活 感谢陈幼均等老师在我大学生 活开始的时候对我大学生活的规划 还有身边的朋友同学们 你们都是我最宝贵的财富 DevelopingDeveloping mobilemobile gamegame basedbased onon J2MEJ2ME platformplatform Student Tang Xuexu College Computer Science Supervisor Yan Qianjun AbstractAbstract mobile phone games J2ME configuration profiles

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论