毕业设计论文——基于Java的游戏设计——贪吃蛇_第1页
毕业设计论文——基于Java的游戏设计——贪吃蛇_第2页
毕业设计论文——基于Java的游戏设计——贪吃蛇_第3页
毕业设计论文——基于Java的游戏设计——贪吃蛇_第4页
毕业设计论文——基于Java的游戏设计——贪吃蛇_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计论文毕业设计论文 作者 学号 系部 专业 题目 指导教师 评阅教师 完成时间 毕业设计毕业设计 论文论文 中文摘要中文摘要 题目 基于 Java 的游戏设计 贪吃蛇 摘要 贪吃蛇 游戏是使用 Java 语言开发的一款经典的游戏 它因操作简单 娱乐 性强而广受欢迎 本文基于 Java 技术和 eclipse 开发环境 开发了一个操作简单 界 面美观 功能较齐全的 贪吃蛇 游戏 整个游戏程序分为十个类模块 实现了游戏的 开始 暂停 结束 能够实现加速和减速 通过本游戏的开发 达到学习 Java 技术和 熟悉软件开发流程的目的 本文在介绍 Java 相关技术时对 贪吃蛇 游戏的整个生命周期的各个开发阶段进 行了详细地介绍 首先 分析了开发本游戏软件的可行性 其次 从游戏主界面等几方 面 分析了本游戏的功能需求 然后 进行了游戏的概要设计和详细设计 这也是本文 的重点 概要设计给出两个功能模块的主框架以及八个类模块的函数调用关系 详细设 计重点给出各个类模块的程序列表 介绍了各个类包含的变量 使用的方法 展示了游 戏的界面 为了保证程序代码的正确性和功能实现的可靠性 本文还介绍了游戏软件的程序调 试过程和功能测试结果 关键词 Java eclipse 贪吃蛇 开发流程 毕业设计毕业设计 论文论文 外文摘要外文摘要 TitleTitle Java based game design Snake Abstract Snake game is a classic game using the Java language development it is simple entertaining and popular This article is based on Java technology and the Eclipse development environment developing a simple beautiful interface Full featured Snake game The entire game program is divided into ten modules the start of the game pause end being able to achieve speed up and speed down Through the development of the game to achieve the purpose of learning Java technology and familiar with the software development process Introducing Java related technologies a detailed description of the various development phases of the entire life cycle of the Snake game First the analysis of the feasibility of the development of the game software Secondly the game from the main game interface aspects functional requirements Then the outline design and detailed design of the game which is the focus of this article Outline design gives the main frame of the two functional modules and The eight modules function call relationship Detailed design focusing of each module is given the list of programs each class contains variables the methods used showing the game s interface In order to ensure the correctness and functions achieving reliability of the program code the article also describes the results of the game software debugging process and functional testing keywords Java eclipse Snake the development process I 目录 1 绪论 1 1 1 JAVA语言的特点 1 1 2 开发工具 ECLIPSE介绍 2 1 3 开发工具 JDK 介绍 2 1 4 应用环境 3 2 系统需求分析 3 2 1 需求分析 3 2 2 可行性分析 3 3 系统概要设计 4 3 1 游戏流程图 4 3 2 设计目标 5 3 3 系统功能模块 5 3 4 系统数据结构设计 7 4 系统详细设计 10 4 1 程序设计 10 4 2 贪吃蛇游戏各功能界面截图 13 5 系统测试 16 5 1 测试的意义 16 5 2 测试过程 16 5 3 测试结果 17 结论 18 致谢 19 参考文献 19 1 1 1 绪论绪论 贪吃蛇是世界知名的益智类小游戏 选择这个题目一方面是为了将我们自己的所学知 识加以运用 另一方面 我希望通过自己的所学知识把它剖析开来 通过自己的动手实践 真正的了解它的本质和精髓 希望通过这次实践 能从中提高自己的编程能力 并从中学 会从零开始分析设计程序 达到学以致用 活学活用的目的 另外 通过本游戏的开发 达到学习 Java 技术和熟悉软件开发流程的目的 本游戏的开发语言为 Java 开发工具选用 Eclipse Java 是一种简单的 面向对象 的 分布式的 解释型的 健壮安全的 结构中立的 可移植的 性能优异 多线程的动 态语言 这里采用 Java 作为开发语言主要是基于 Java 的面向对象和可移植性 Eclipse 是一个开放源代码的 基于 Java 的可扩展开发平台 就其本身而言 它只是一个框架和 一组服务 用于通过插件组件构建开发环境 1 11 1 JavaJava 语言的特点语言的特点 1 1 1 简单性 Java 与 C 语言非常相近 但 Java 比 C 简单 它抛弃了 C 中的一些不是绝对必要 的功能 如头文件 预处理文件 指针 结构 运算符重载 多重继承以及自动强迫同型 Java 实现了自动的垃圾收集 简化了内存管理的工作 1 1 2 平台无关性 Java 引进虚拟机原理 并运行于虚拟机 实现不同平台之间的 Java 接口 Java 的数 据类型与机器无关 1 1 3 安全性 Java 的编程类似 C 但舍弃了 C 的指针对存储器地址的直接操作 程序运行时 内 存由操作系统分配 这样可以避免病毒通过指针入侵系统 它提供了安全管理器 防止程 序的非法访问 1 1 4 面向对象 Java 吸收了 C 面向对象的概念 将数据封装于类中 实现了程序的简洁性和便于维 护性 使程序代码可以只需一次编译就可反复利用 2 1 1 5 分布式 Java 建立在 TCP IP 网络平台上 提供了用 HTTP 和 FTP 协议传送和接收信息的库函数 使用其相关技术可以十分方便的构建分布式应用系统 1 1 6 健壮性 Java 致力于检查程序在编译和运行时的错误 并自动回收内存 减少了内存出错的可 能性 Java 取消了 C 语言的结构 指针 define 语句 多重继承 goto 语句 操作符 重载等不易被掌握的特性 提供垃圾收集器自动回收不用的内存空间 1 21 2 开发工具开发工具 EclipseEclipse 介绍介绍 Eclipse 是一个开放源代码的 基于 Java 的可扩展开发平台 就其本身而言 它只 是一个框架和一组服务 用于通过插件组件构建开发环境 幸运的是 Eclipse 附带了一 个标准的插件集 包括 Java 开发工具 Java Development Tools JDT 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用 但 Eclipse 的目标不仅 限于此 Eclipse 还包括插件开发环境 Plug in Development Environment PDE 这个 组件主要针对希望扩展 Eclipse 的软件开发人员 因为它允许他们构建与 Eclipse 环境 无缝集成的工具 尽管 Eclipse 是使用 Java 语言开发的 但它的用途并不限于 Java 语言 例如 支 持诸如 C C 等编程语言的插件已经可用 或预计会推出 Eclipse 框架还可用来作为与 软件开发无关的其他应用程序类型的基础 比如内容管理系统等 1 31 3 开发工具开发工具 JDKJDK 介绍介绍 Sun Microsystems 公司在推出 Java 语言的同时 推出了一套开发工具 JDK Sun 提供 的基于字符模式的 Java 开发工具包 JDK Java 开发工具 JDK 是许多 Java 专家最初使用 的开发环境 Java 是平台无关的语言是因为用 Java 写的应用程序不用修改就可在不同的 软硬件平台上运行 Java 源程序编写借助于记事本编辑工具 所有的 Java 文件编辑 编译 调试 解释运行都是通过使用字符命令来执行操作 JDK 由一个标准类库和一组建立 测试及建立文档的 Java 实用程序组成 其核心 Java API 是一些预定义的类库 开发人员需要用这些类来访问 Java 语言的功能 JDK 是整个 Java 的核心 包括了 Java 运行环境 Java Runtime Environment 一堆 Java 工具和 Java 基 3 础的类库 不论什么 Java 应用服务器实质都是内置了某个版本的 JDK 因此掌握 JDK 是学 好 Java 的第一步 最主流的 JDK 是 Sun 公司发布的 JDK 除了 Sun 之外 还有很多公司和组织都开发了 自己的 JDK 例如 IBM 公司开发的 JDK BEA 公司的 Jrocket 还有 GNU 组织开发的 JDK 等 等 其中 IBM 的 JDK 包含的 JVM Java Virtual Machine 运行效率要比 Sun JDK 包含的 JVM 高出许多 而专门运行在 x86 平台的 Jrocket 在服务端运行效率也要比 Sun JDK 好很 多 1 41 4 应用环境应用环境 1 操作系统 Windows 7 Windows xp 等 2 应用软件 jdk7 1 eclipse 2 2 系统需求分析系统需求分析 2 12 1 需求分析需求分析 本系统主要是完成贪吃蛇游戏的基本操作 用户可以自己练习和娱乐 本系统需要满 足以下几点要求 1 利用方向键来改变蛇的运行方向 2 空格键或回车键暂停或继续游戏 并在随机的地方产生食物 PgUp 和 PgDn 控制 速度快慢 3 吃到食物就变成新的蛇体 碰到壁或自身则游戏结束 否则正常运行 2 22 2 可行性分析可行性分析 贪吃蛇游戏是一种简单的大众的游戏 自从计算机实现以来 深受广大电脑玩家的喜 爱 做一个简单的贪吃蛇小游戏 也比较符合现代人用来打发闲暇时光的方式 贪吃蛇的核心算法是如何实现移动和吃掉食物 没有碰到食物的时候 把当前运动方 向上的下个节点入队 并以蛇节点的颜色绘制这个节点 然后把头指针所指的节点出队 并以游戏框架内部背景色重绘出队的节点 这样就可以达到移动的效果 而在吃到食物的 时候 则只需把食物入队即可 实现贪吃蛇的基本的蛇身移动 吃到食物身体增长 和碰 到墙壁或自身死亡 能够暂停和开始 本次设计主要运用 java 语言来完成 Java 语言是一种跨平台 适合于分布式计算环 4 境的面向对象编程语言 用 Java 写的应用程序不用修改就可在不同的软硬件平台上运行 由于 Java 主要用于网络应用程序开发 因此对安全性有较高的要求 如果没有安全保 证 用户从网络下载程序执行就非常危险 Java 通过自己的安全机制防止了病毒程序的产 生和下载程序对本地系统的威胁破坏 3 3 系统概要设计系统概要设计 3 13 1 游戏流程图游戏流程图 图 3 1 游戏流程图 进入游戏界面 点击开始按钮 游戏开始 蛇随机产生 O 操作 空格 暂停 上移 下移 左移 右移 没有吃到食物 且碰到边界 游戏中途欲中断 稍候进行游戏 单击重新开始游戏单击暂停游戏 单击开始游戏 游戏恢复正常 5 3 23 2 游戏整体结构图游戏整体结构图 图 3 2 游戏整体结构图 3 33 3 设计目标设计目标 本系统是针对贪吃蛇小游戏的 Java 程序 利用方向键来改变蛇的运行方向 空格键暂 停或继续游戏 并在随机的地方产生食物 吃到食物就变成新的蛇体 碰到壁或自身则游 戏结束 否则正常运行 3 43 4 系统功能模块系统功能模块 1 本系统共包括 10 个类文件 java 源文件及其功能如表所示 6 表 3 1 java 源文件及其功能 2 主要类之间的对应关系如下 图 3 3 主要类之间的关系 3 因为蛇不能直接操作显示面板 GamePanel 所以定义一个监视器 SnakeListener 里 面有两个方法 snakeMoved 和 snakeEatFood 序号文件名主要功能 1MainFrame 该文件为程序入口 含有 main 方法 2GameOptionPanel 实现菜单控制运行等总体要求 实现方向键控制 蛇的方向 空格键控制游戏暂停或继续等 3SnakeListener 蛇的监听器 4GameListener 游戏监听器 5Food 该文件实现组成蛇身的单位 食物 6Ground 该文件实现障碍物 石头 7Snake 该文件实现蛇类 8Global 该文件为工具类 实现一些配置 9Controller 控制器 控制蛇 食物 石头 10GamePanel 游戏的显示界面设置 7 图 3 4 通过事件监听建立联系 3 53 5 系统数据结构设计系统数据结构设计 3 5 1 蛇 石头 食物的表示 用一个大的表格来表示显示区域 里面的格子就是组成蛇的基本单位 一个格子可以 代表一个食物 也可以代表一个石头 几块连在一起的石头就可以代表一条蛇 使用坐标 来区分这些格子 图 3 5 蛇 石头 食物的表示 这里用一个集合来存储这些坐标 并且要求能够区分出蛇头和蛇尾 3 5 2 蛇的移动 蛇向前移动一步 可以看作是蛇头前面增加了一个节点 蛇的尾巴上少了一个节点 即去尾 加头 8 图 3 6 蛇的移动 3 5 3 存储蛇身的数据结构 由于要区分蛇头和蛇尾 因此这个数据结构必须是有序的 另一方面 我们需要经常 的访问第一个和最后一个节点 所以LinkedList最合适 因为它有getFirst getLast 和removeLast 方法 图3 7 根据原蛇头和方向计算新蛇头的坐标 3 5 4 蛇的移动方向 蛇下一步移动到哪里 是由方向来控制的 根据原蛇头的坐标和方向来确定新蛇头的 坐标 因此在这里用int型常量来表示蛇的移动方向 在原坐标的基础上 根据蛇头的运动 方向来确定新蛇头的坐标 比如向上移动就是y 1 在Snake中增加蛇的方向向量 public static final int UP 1 上 public static final int DOWN 1 下 public static final int LEFT 2 左 public static final int RIGHT 2 右 9 3 5 5 如何显示蛇身 显示蛇身 其实就是填充 用颜色填充格子 需要4个参数 像素坐标x 像素坐标y 格子宽度 格子高度 像素坐标就是矩形左上角的坐标 图3 8 格子坐标和像素坐标 3 5 6 蛇身的移动方向 1 相反方向 和上一次移动的方向相反的方向称为相反方向 这种输入应该忽略 这样可以防止蛇 从自己的身体中穿过 2 无效方向 在蛇的这一次移动之后和下一次移动之前这个时间间隔内输入了多个非相反方向 只 有最后一个是有效方向 其他的都是无效方向 蛇的最终运动方向以有效方向为准 3 Snake中增加监听器 并另外启动一个线程来不断调用蛇的move 在Snake中提供一 个启动线程的方法 3 5 7 吃到食物判定 通过判定坐标是否重合来判断 只需要判断蛇头是否和食物重合就可以了 因为蛇的 身体都是走蛇头走过的地方 蛇吃掉食物后身体就会变长 在 Controller 的 snakeMoved 中添加如下代码 判断是否吃到食物 if food null food setLocation ground null food getNew ground getFreePoint 如果吃到食物 就肯定不会吃到石头 else if ground null if snake isEatBody stopGame 4 4 系统详细设计系统详细设计 4 14 1 程序设计程序设计 4 1 1 主类 MainFrame 1 主类为此程序的入口 定义了 MainFrame 的对象 frame 开始运行此程序 2 源代码见文件 MainFrame Java 4 1 2 类 MainFrame 1 成员变量见表 4 1 表 4 1 主要成员变量 成员变量描述变量类型名称 选项面板 private GameOptionPaneloptionPanel 游戏面板 private GamePanelgamePanel 蛇类对象 private Snakesnake 石头对象 private Groundground 食物对象 private Foodfood 控制对象 private Controllercontroller 速度标签 private JLabelinfoLabel 2 方法见表 4 2 11 表 4 2 主要方法 方法名功能 gameOver 游戏结束 gameStart 游戏开始 gameContinue 游戏继续 gamePause 游戏暂停 4 1 3 类 Snake 1 成员变量见表 4 3 表 4 3 主要成员变量 成员变量描述变量类型名称 上下左右 方向 int UP DOWN LEFT RIGHT 蛇体 LinkedListbody 蛇头坐标 Pointhead 蛇尾坐标 Pointtail 是否活着 booleanlive 是否暂停 booleanpause 速度 intspeed 监听 Set listener 2 方法见表 4 4 表 4 4 主要方法 方法名功能 eatFood 判断食物是否被蛇吃掉 如果食物在蛇运行方向 的正前方 并且与蛇头接触 则被吃掉 setHeadColor 设置蛇头的颜色 setBodyColor 设置蛇身的颜色 changeDirection int 改变运行方向 move 蛇在运行中所采取的措施 begin 开启一个新的线程驱动蛇定时移动 4 1 4 类 Food 1 成员变量见表 4 5 12 表 4 5 主要成员变量 成员变量描述变量类型名称 颜色 private Colorcolor 随机 private Randomrandom 2 源代码见文件 Food java 4 1 5 类 Controller 该类包含控制器和处理按键逻辑 控制器 控制 Ground Snake Food 负责游戏的 逻辑处理按键事件 实现了 SnakeListener 接口的 snakeMoved 方法 可以处理 Snake 触 发的事件 该类继承 KeyAdapter 类并且覆盖 keyPressed 方法 处理按键事件 根据按 键不同 发出不同的指令 UP 改变蛇的移动方向为向上 DOWN 改变蛇的移动方向为向下 LEFT 改变蛇的移动方向为向左 RIGHT 改变蛇的移动方向为向右 SPACE 暂停 继续 PgUp PgDn 加速 减速蛇的移动 Y 开始新游戏的方法 4 1 6 类 Ground 可以叫做地形 或地面 和食物一样 Ground 也有 x y 坐标和颜色等属性 构造方法 Ground 初始化地图 设置格局 可以通过 setRockColor 方法设置石头的颜色 方法 isSnakeEatRock 判断蛇是否吃到食物 最后运用 drawMe 方法显示石头 源代码见文件 Ground java 4 1 7 类 GameListener 此类为游戏监听类 实现游戏的监听功能 源代码见文件 GameListener java 4 1 8 类 SnakeListener 此类为蛇的监听类 实现蛇运动的监听 蛇移动的监听 snakeMoved 蛇吃到食物的监 听 snakeEatFood 13 源代码见文件 SnakeListener java 4 1 9 类 Global 工具类 此类中存放了其他类中用到的一些常量 格子的像素 宽度 高度 蛇的初始长度和 初始速度等 源代码见文件 Global java 4 1 10 类 GameOptionPanel 此类为游戏的选项面板类 实现游戏面板的控制 源代码见文件 GameOptionPanel java 4 1 11 类 GamePanel 此类为游戏的显示界面设置 可以通过 setBackgroundColor 设置游戏的背景颜色 源代码见文件 GamePanel java 4 24 2 贪吃蛇游戏各功能界面截图贪吃蛇游戏各功能界面截图 4 2 1 游戏的初始界面 14 图 4 1 初始界面 图 4 2 控制面板 图 4 3 速度标签 4 2 2 游戏运行过程界面 1 鼠标点击开始新游戏按钮 开始游戏 图 4 4 开始游戏 15 图 4 5 开始游戏 有加速 有改颜色 有网格 2 按空格键 游戏开始运行 蛇开始移动 并且吃到一次食物即红色方块后就变成蛇体 16 图 4 6 吃到食物 身体变长 3 按方向键改变蛇的运行方向 并且碰壁后从新开始游戏 红色方块随机地方产生 图 4 7 碰壁死亡 5 5 系统测试系统测试 5 15 1 测试的意义测试的意义 系统测试是为了发现错误而执行程序的过程 成功的测试是发现了至今尚未发现的错 误的测试 测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷 应根 据开发各阶段的需求 设计等文档或程序的内部结构精心设计测试用例 并利用这些实例 来运行程序 以便发现错误 系统测试是保证系统质量和可靠性的关键步骤 是对系统开 发过程中的系统分析系统设计和实施的最后复查 根据测试的概念和目的 在进行信息系 统测试时应遵循以基本原则 5 25 2 测试测试过程过程 1 拟定测试计划 在制定测试计划时 要充分考虑整个项目的开发时间和开发进程以 及一些人为因素和客观条件等 使得测试计划是可行的 测试计划的内容主要有测试的内 容 进度安排 测试所需的环境和条件 测试培训安排等 2 编制测试大纲 测试大纲是测试的依据 它明确详尽地规定了在测试中针对系统的 17 每一项功能或特性所必须完成的基本测试项目和测试完成的标准 3 根据测试大纲设计和生成测试用例 在设计测试用例的时候 可综合利用前面介绍 的测试用例和设计技术 产生测试设计说明文档 其内容主要有被测项目 输人数据 测 试过程 预期输出结果等 4 实施测试 测试的实施阶段是由一系列的测试周期组成的 在每个测试周期中 测 试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例 对被测软件或设备 进行完整的测试 5 生成测试报告 测试完成后 要形成相应的测试报告 主要对测试进行概要说明 列出测试的结论 指出缺陷和错误 另外 给出一些建议 如可采用的修改方法 各项修 改预计的工作量及修改的负责人员 5 35 3 测试结果测试结果 贪吃蛇测试情况如表 5 1 所示 表 5 1 贪吃蛇测试情况 执行的操作期望的结果实际结果 打开文件 运行代码代码正常运行 无错误信息符合期望结果 点击 开始游戏 贪吃蛇出现 食物出现符合期望结果 点击 暂停游戏 游戏暂停 蛇和食物都静止符合期望结果 点击 停止游戏 游戏停止 重新开始新游戏符合期望结果 利用方向键控制方向 空格键暂 停游戏 蛇运行方向正常 空格键暂停游 戏 符合期望结果 键盘按 PgUp PgDn蛇加速 减速运动符合期望结果 点击 设置背景颜色 出现颜色选项 背景颜色变化符合期望结果 点击 设置蛇头 蛇身 食物颜色 蛇头 蛇身和食物颜色变化明显 且显示正常效果 符合期望结果 显示网格 打钩出现网格 并且自行选择网格颜 色 符合期望结果 点击 恢复默认设置 所有设置都恢复到初始化状态符合期望结果 蛇每吃到一个食物身体变长符合期望结果 18 蛇碰壁或者吃到自己的身体结束游戏符合期望结果 通过以上测试 验证程序运行正常 没有发现什么错误 结论 毕业设计是我们作为学生在学习阶段的最后一个环节 是对所学基础知识和专业知识 的一种综合应用 是一种综合的再学习 再提高的过程 这一过程对我们学生的学习能力 和独立思考及工作能力也是一个培养 同时毕业设计的水平也反映了大学教育的综合水平 因此学校十分重视毕业设计这一环节 加强了对毕业设计工作的指导和动员教育 在大学 的学习过程中 毕业设计是一个重要的环节 是我们步入社会参与实际工作的一次极好的 演示 也是对我们自学能力和解决问题能力的一次考验 是学校生活与社会生活间的过渡 在完成毕业设计的这段时间里 我收获颇多 通过这次的 java 贪吃蛇游戏设计我了解到 java 语言的特点 简单性 面向对象 平 台无关性 可移植性 解释性 髙性能 动态性 可靠性和安全性 多线程 分布式处理 等 在课程设计过程中不仅巩固了我们以前的基础理论知识 而且使我们各个方面的能力 都有很大的提高 从一开始的无从下手 到不断的查阅资料 图书馆借书 再到请教老师 的帮助 这些都很好的锻炼了我们理论联系实际 与具体项目 课题相结合的能力 开发 设计游戏的能力进一步在课程设计中体现 这让我学会了很多 为以后的学习和工作加强 在设计过程中 总是遇到这样或那样的问题 有时发现一个问题的时候 需要做大量的工 作 花大量的时间才能解决 为以后的工作积累了经验 增强了信心 既让我们懂得了怎 样把理论应用于实际 又让我们懂得了在实践中遇到的问题怎样用理论去解决 它更是自 己综合运用所学知识 发现

温馨提示

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

评论

0/150

提交评论