【《基于Unity3D的纸牌游戏的设计与实现》9000字(论文)】_第1页
【《基于Unity3D的纸牌游戏的设计与实现》9000字(论文)】_第2页
【《基于Unity3D的纸牌游戏的设计与实现》9000字(论文)】_第3页
【《基于Unity3D的纸牌游戏的设计与实现》9000字(论文)】_第4页
【《基于Unity3D的纸牌游戏的设计与实现》9000字(论文)】_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

摘要随着科技的发展,电子游戏随着时代在不断的进步和发展,已然成为了我国一大休闲娱乐项目。Unity是一个实时3D互动内容创作和运营平台,在当今游戏界中已经有着举足亲重的地位。

Android是一种基于Linux内核的自由及开放源代码的操作系统。本课题设计的游戏经过Unity设计并通过Android打包,已经可以在安卓系统的手机上运行,这极大提高了游戏的可玩性和方便性。卡牌游戏作为一个经典类型的游戏,已经在社会中产生了非常深远的影响。早在秦末楚汉争斗时期就已经出现了这种类型游戏的雏形,随后卡牌游戏发展到了西方,最后普及到全世界。这象征着卡牌游戏已经对全世界的娱乐文化产生了极其深远的影响。在游玩卡牌游戏的过程中,可以培养我们的思维逻辑能力,也可以增强我们的记忆力等,对人们的生活能够产生许多好的影响。因此,弘扬卡牌游戏成为了当今时代一个非常值得且有意义的活动。综上所述,设计实现一个纸牌游戏具有一定的研究意义。关键词:Unity;游戏引擎;纸牌游戏;android;手机游戏1绪论1.1本课题背景与意义自从21世纪以来,卡牌游戏作为一个经典类型的游戏,已经在社会中产生了非常深远的影响。早在秦末楚汉争斗时期就已经出现了这种类型游戏的雏形,随后卡牌游戏发展到了西方,最后普及到全世界。这象征着卡牌游戏已经对全世界的娱乐文化产生了极其深远的影响。在游戏圈中,卡牌游戏也是非常出名且在各种各样的类型中占着极大的比例。说起卡牌游戏,许多卡牌游戏都是我们生活中耳熟能详的存在,比如斗地主,21点,德州扑克,炉石传说等等,都属于卡牌游戏的范畴。卡牌游戏已经不知不觉走进了我们生活中的一点一滴,也给我们的生活带来了许多的乐趣。Unity是一个提供游戏引擎和框架的集成平台。Unity是目前最为专业的游戏引擎,它能够创建实时、可视化的2D或者3D游戏,同时也是目前最主流的游戏开发引擎之一[1]。Unity应用的领域也非常的全面,从生活中的各个方面都能感受到Unity的存在,小到看的影视软件,大到VR虚拟现实都能看到它的影子。尽管人们认为统一更适合于创建3D游戏,但也可以等同地用于开发2D游戏。在Unity中,无需依赖其他框架或引擎即可开发具有大量资产的游戏。在Unity的帮助下,游戏开发人员可以免费访问大量资源,例如直观的工具,现成的资产,清晰的文档,在线社区等,以在游戏中创建令人兴奋的3D内容[2]。资产跟踪和渲染,脚本编写是Unity游戏开发的一些功能,可用于减少时间和成本。本课题是基于Unity平台的纸牌游戏。此游戏操作起来非常简单,玩家只需要简短的试玩就可以快速掌握游戏的操作[3]。这款游戏可以在短时间内让玩家感受到玩卡牌游戏的那种刺激的感觉,同时也能够陶冶情操,深深感受到卡牌游戏的魅力。1.2研究现状目前,市场上大多数卡牌游戏都各不相同,各种玩法都层出不穷,正是这种丰富的玩法,使得卡牌游戏成为了游戏市场上一股潮流。卡牌游戏主要分为集换式和非集换式,但是没有明确的玩法,但是卡牌游戏凭借其方便快捷、操作简单、自动高效的特点迅速占领手机游戏的市场,受到了广大玩家的追捧。不管是学生族还是上班族,只要打开手机,就可以随时随地体验到不一样的感觉,这使得玩家们不再依赖于复杂笨重的设备,而使得每个玩家都能够直截了当地体验到移动端带来的妙处[4]。根据不完全的统计,我国卡牌游戏已经占领了手机游戏中超过三分之一的市场,这显然能够看出卡牌游戏在目前社会中的地位之高[5]。同时,卡牌游戏的用户基础也十分庞大,受众对象年龄分布也十分广泛,上到四五十岁的中年人,下到七八岁的孩童,都有可能成为卡牌游戏的受众对象。这正是卡牌游戏的优势所在,简单易于上手,适合不同人数,不同地域,都能够建立起一套完整的规则,所以卡牌游戏才能够经久不衰。卡牌游戏分为集换式卡牌游戏和非集换式卡牌游戏。其中电竞卡牌游戏是一种集换式卡牌游戏(Collectiblecardgame)[6]。而非集换式则包括了我们平常游玩的斗地主,21点等耳熟能详的卡牌游戏。大多数卡牌游戏玩法都不尽相同,而正是这种特性,导致了卡牌游戏成为游戏界中的极其重要的一部分。Unity是一个能够开发游戏、视频等等软件的平台,人们在Unity可以开发出属于自己的软件[7]。用户使用Unity自带的工具,可以让游戏更加稳定并且易于上手;音效系统可以控制游戏中的声音,让整个游戏充满节奏感和音乐感。同时,Unity可以打包到安卓端,方便手机端游玩本游戏。1.3本文主要研究内容与组织结构本文主要介绍了纸牌游戏的开发过程,首先进行系统分析,然后分析本游戏的基本目标和纸牌游戏的可行性以及纸牌游戏需要实现的功能,接着设计出系统架构,并设计出各个构成总模块的子模块,紧接着采用面向对象的方法对系统进行开发,最后对本系统进行测试,并分析测试结果。本文主要内容分为6个章节,大致上结构如下:第1章:绪论。介绍课题背景、意义、研究现状以及本文结构。第2章:需求分析。对系统开发的需求进行分析并得到本项目的可能性。第3章:总体设计。对本项目各个地方优先进行总体介绍,然后再初步分析设计。第4章:系统实现。详细介绍系统实现的过程,分析各个模块在系统中的作用。第5章:系统测试。制定测试方案,并对系统做出分析和测试,检查系统的完整性和可行性。第6章:总结与期望。总结本系统的特点,并对本系统进行缺点自审,做出对本系统的发展要求。 系统需求分析 系统需求分析2系统需求分析本章主要对系统开发的需求进行分析并得到本项目的可能性。大体上通过需求分析,可行性分析和功能分析三个方面来进行。2.1需求分析需求分析是系统开发中非常重要的一环。了解了用户对于本项目的需求,才能够做出符合用户需求的完整系统。当前社会,越来越多的人喜爱玩游戏,通过玩游戏来放松心情[8]。而纸牌游戏正是基于Unity3D的卡牌游戏,可以满足不同种类人群的娱乐需求。为了满足玩家的游玩需求,本项目特设计了如下要求:游戏场景中的风格设计要一致,不能过于突兀;用户可以通过手机接触屏幕来完成卡牌的交互;用户可以随时暂停游戏,并选择是否重新开始;实现菜单场景和游戏场景的交互切换;用户可以通过操作进行游戏;场景中应当有不同的音效系统,保证用户的游玩体验。2.2可行性分析下面进行本毕业设计的可行性分析。本系统采用了Unity自带开发工具进行研发,然后使用C#脚本实现系统功能,其中用VisualStudio来编辑C#脚本,最后打包到安卓平台。Unity技术发展的已经十分成熟和发达,在游戏开发领域中应用非常广泛,使用Unity的用户也日益增多[9]。再从操作上来讲,本游戏十分的简单易于上手,而且Unity本身是一款免费的软件,对于游戏的传播也是一件非常容易的事情。随着手机的普及,本毕业设计可在手机上运行,这大大拓宽了使用的途径。2.3功能分析本节将从卡牌游戏的各个模块出发,进行功能介绍。本游戏主要有五大不同的功能模块,分别是游戏菜单模块、玩法控制模块、游戏计分模块、开场动画模块和音效控制模块。游戏菜单模块:负责游戏中菜单场景的控制,玩家可以通过游戏菜单模块来进行退出游戏,重开游戏,开始游戏,暂停游戏等功能。玩家控制模块:玩家可以通过点击屏幕来选择卡牌,系统自动判断卡牌是否相同,相同则消除,不同则降低游戏难度自动重新开始。游戏计分模块:玩家通过翻开相同的卡牌来获得分数,并通过算法来计算出相应的得分和总分。开场动画模块:玩家开始游戏时,自动播放开场动画并开始计时。音效控制模块:实现玩家通过不同的翻牌来触发不同的音效效果。2.4本章小结本章主要通过需求分析、可行性分析和功能分析来对整个系统进行分析。从综合方面来看,本系统的开发是可行的。 总体设计总体设计 3总体设计本章主要介绍系统的设计过程[10]。系统设计中最至关重要的部分,就是总体设计了,这个部分对系统进行了详细分析,也详细讲述了各个模块的功能。下面将各个介绍各模块的设计。3.1架构设计本系统主要通过用户与客户端进行交互[11]。本系统总体上可以分为两层,一层是逻辑层,一层是表示层,这两层构成了本系统的整体框架。整体框架如图3.1所示:图3.1系统整体架构表示层主要是用户能够看到的界面,包括游戏界面,音效播放等玩家能够直接接触到的画面。通过玩家对屏幕进行的操作来进行逻辑层的反馈。另一层逻辑层的主要功能就是对脚本进行编辑,然后对脚本进行管理。在逻辑层中,可以使用脚本来实现一些功能,也可以用C#编写一些动态的实时反馈并通过表示层来反映。3.2功能模块设计纸牌游戏是一款休闲娱乐类的卡牌游戏,其主要分为五个模块,其中包括游戏游戏菜单模块、玩法控制模块、游戏计分模块、开场动画模块和音效控制模块,而每个模块都有其各自不同的功能。五个模块的总设计图如图3.2所示:图3.2系统的功能模块本游戏主要通过玩家不同的操作来进行,玩家的不同操作可以发挥出本系统不同的功能。下面将详细介绍各个模块的功能设计。3.2.1游戏菜单模块设计Unity中自带了一个UI系统,可以将UI中不同的元素和用户进行互动,用户也可以通过修改UI来达到一个交互的动态效果。这样玩家将会更加具有游戏参与感和体验感。Canvas是UI中的大类,而一个场景中存在着许多的Canvas,这样我们就可以管理场景中的界面。而作为用户,通过创建EventSystem对象,即可以处理场景中各种各样的事件了。Unity中有一个Text控件,主要用来设置游戏中的文本显示。并且通过设置各个UI的RectTransform来控制各个控件的位置、大小,使得窗口控件的相对位置保持不变。通过Unity的UI设置,我们便可以轻松地做出游戏的菜单系统模块了。值得注意的是,菜单的设计需要我们把界面游戏的主题保持一致,这样可以使得玩家能够迅速了解到游戏的大致玩法。本游戏的菜单主界面上有三个按钮,其分别是开始游戏、退出游戏和音量控制,每个按钮都有各自对应的功能[12]。开始游戏按钮的功能是让玩家能够直接进入游戏场景;音量控制可以控制游戏中的音效大小;退出按钮的功能是玩家能够退出游戏。除此之外,游戏场景中还存在两个UI界面,分别是游戏的暂停界面和游戏的结束界面。在游戏的过程中,右上角设立了一个暂停按钮,点击之后系统进入暂停界面。在暂停界面中有三个按钮,其分别是继续开始游戏、重新开始游戏和退出游戏。点击继续游戏按钮可以退出暂停游戏的界面面,进入游戏界面且继续游戏并继续开始计时;而点击重新开始按键则可以重新开始本局游戏,并重置计时;点击退出游戏按键可以退出游戏。游戏结束时也会有一个UI界面,有重新开始和退出两个按键。重新开始按键可以重新开始本局游戏并重新计时;退出按键可以退出本游戏。游戏菜单模块的详细设计如图3.3所示:图3.3游戏三种菜单模块的设计3.2.2玩法控制模块设计玩法控制模块是用户通过触摸卡牌来选择卡牌翻面,如果一样则得分,如果不一样则失败返回最初难度模式。最终计时结束时产生最终得分。图3.4玩家控制模块的设计3.2.3音效控制模块设计游戏中存在两种不同的音效,其中一种是背景音乐,这种背景音乐是一直在后台循环播放的;还有一种是互动的音效,通过点击翻牌时不同的反馈来触发不同的声音效果。音效控制模块的详细设计如图3.5所示:图3.5玩家控制模块的设计3.2.4游戏计分模块设计翻牌时系统将会自动判定,如果翻开的卡牌相同,那么将会得分;如果翻开的卡牌不相同,那么游戏会自动降低难度,得分也会减少。只有当玩家成功率很高的时候,才能够保证获得较高的得分。下面是游戏中计分模块的设计,如图3.6所示:图3.6游戏计分模块的设计3.2.5开场动画设计开局时游戏将自动播放一段开始动画,在动画放完时将自动开始计时,同时游戏开始。这样可以给玩家提供一个缓冲的准备时间,方便玩家进行准备活动。3.3本章小结本章详细介绍了本游戏的整体框架和各个不同模块之间的联系和功能,这给实现设计提供了框架结构的基础。 系统实现 系统实现4系统实现本章主要阐述了系统的开发环境,以及对本系统各个模块实现的代码进行编写。4.1开发环境本游戏是一款休闲类型的卡牌游戏,本系统开发环境如下:CPU:Intel(R)Core(R)i5-7300HQCPU@2.50GHz2.50GHz内存容量:12GB硬件容量:512GB操作系统:Windows10集成开发环境:Unity2018.4.34f1(64-bit)、VisualStudio2015游戏脚本语言:C#4.2功能模块实现本节将对游戏中各个功能模块进行功能讲解以及展示代码的实现过程。4.2.1游戏菜单模块实现本游戏模块的界面的搭建使用的是Unity自带的ugui系统[13],内部使用到了Button、Slider、Image、Text等相应的UI组件。主界面内各个按钮功能的具体实现过程如下:先选择File->BuildSettings,然后点击buildSettings设置,然后将菜单场景设为0,其中主界面设置为0,游戏场景设置为1,具体设置如图4.1点击Buildandrun,便可打开游戏。游戏开始菜单有三个按键,开始游戏使用了如图4.2的SceneManager.LoadScene函数;退出游戏使用了如图4.3的Application.Quit函数;界面的控制和显示是使用的如图4.4的setactive函数进行界面开启和关闭。图4.1场景序号设置图4.2SceneManager.LoadScene函数开始游戏图4.3Application.Quit函数退出游戏图4.4使用的setactive函数进行界面开启和关闭本游戏中点击右上角暂停键可进入暂停界面,界面中有三个选项,继续游戏、重新开始和退出游戏,分别具有继续游戏,重新开始游戏和退出游戏三个功能。其中在暂停中实现的代码为如图4.5所示。图4.5暂停模块的实现4.2.2游戏计分模块实现在本卡牌游戏的游玩中,玩家需要不断进行翻牌和判断的操作并且对玩家的操作进行一个判断打分的过程,这就要求系统能够实现自动计分的功能,而为了对游戏进行提高难度操作,每翻一次牌都会使得下次加分提高,如果翻错卡牌,则需要重新开始计分。在实现计分功能的时候,通过循环代码来进行加分处理。同时注意分数的进位,就可以实现游戏的加分功能,使得游戏更富有挑战性和随机性,并使得游戏的乏味性降低,激发起玩家的挑战欲望。主要代码如图4.6所示。图4.6游戏计分模块的实现4.2.3玩法控制模块实现纸牌游戏中,玩家需要点击卡牌来讲卡牌翻面,系统将通过判定,如果相同则消除,得到分数并且升级难度;如果不同,则不得分并且降低难度。这样一来,可以使得玩家可以在不断翻牌的过程中体验到更加完美的刺激感,使得玩家更加投入游戏。除此之外,游戏设立不同的难度也是使得游戏更加富有趣味性的必然要求,如果不能够设置不同的难度,则整个游戏会显得无趣且没有玩下去的动力。因此,设计一个合理的玩法显得尤为重要,这也将成为整个游戏的核心模块。游戏的计时模块如图4.7所示,采用了一个进度条模块。图4.7游戏计时模块的实现玩法模块中还有一个翻牌特效模块如图4.8所示,可以控制玩家翻牌时的特效显示。图4.8游戏计时模块的实现游戏中的特效效果如图4.9所示。4.9游戏中翻牌的特效实现游戏中翻牌的计分模块如图4.10所示。4.10游戏中计分模块的实现4.2.4开场动画模块实现为了给游玩本游戏的玩家一个更完美的体验,特为玩家设计了一个开场动画的模块,可以将玩家的注意力高度集中,迅速投入到游戏中来,这样可以使得玩家的游戏投入感更高,这样一来,游戏的可玩性和趣味性将大大提高。开场动画的部分代码如图4.11所示。4.11游戏中开场动画部分的实现4.2.5音效控制模块实现玩家在游玩游戏的时候,为了让玩家更加具有投入感和真实感,特加入了背景音乐系统和翻牌时候的音效系统。[15]这都是通过AudioSource组件来完成的,点击选择PlayOnAwake和Loop选项,背景音乐就会在游戏一开始的时候循环播放,这样就达成了背景音乐的目的。控制音乐的大小只需要将AudioSource组件通过Slider组件设置下如图4.11的AudioSource.volume函数,就能够自由调节音量的大小。这样一来,便实现了音量大小的控制。同时打包到安卓手机端,也可以通过修改系统媒体的音量,来改变游戏声音的大小。图4.11场景音量设置游戏场景中,玩家不同的翻牌会导致不同的音效,当系统检测到玩家翻牌后,会进行一个翻牌检测,检测到翻牌的正确性和难度的高低都会影响翻牌时候的音效,通过系统的计算,给翻牌活动加上相应的音效,然后对这些音效进行有效的管理和控制,可以让游戏的完整度更高。首先我创建了许多不同的音效,分别编号进行调用,不同的难度会调用不同的声音。菜单界面中音效设置菜单代码如图4.12所示。图4.12菜单界面音效界面的控制4.3本章小结本章详细介绍了本系统各个模块的功能和实现的过程,然后展示代码的编写,突出本系统的逻辑性和完整性,这样可以使得本系统的设计更加完美,令设计的完成度更高。系统测试系统测试 5系统测试本章主要进行本游戏的系统的检测,查看本游戏能否按照需求合理进行。因此设计了本系统测试环节。5.1测试方案系统测试中,首先要进行的,就是单元测试,这是由程序员来完成的,它可以将系统的最小单元格进行测试。它可以把单元内部算法和外部功能等等进行测试,如果算法或者外部的功能不达标可以则会将不达标的内容列举出来[16,17]。本系统主要进行了黑盒测试和白盒测试。在本游戏的开发中,我已经完成了游戏的单元测试环节。但是,测试各个模块功能能否达成也是非常重要且有必要的一环,这样如果将来发现问题,便可以迅速将其解决。5.2测试与结果分析本系统测试将从各个模块出发,来检测各个模块的不同功能。具体的功能测试如下:游戏菜单模块测试、玩法控制模块测试、游戏计分模块测试、开场动画模块测试和音效控制模块测试。(1)游戏菜单模块的测试,用来测试要求看看三种菜单界面和游戏界面能否相互切换,然后测试菜单中的各个按键能否实现对应的功能;(2)游戏计分模块的测试,用来测试游戏中积累的分数是否会成功自动累计;(3)玩法控制模块的测试,用来测试用户能否翻开卡牌,翻卡之后难度会不会升级,计时模块能否正常计时,翻卡失败之后系统能否自动降低难度等操作;(4)开场动画模块的测试,用来测试游戏开始时,开场的动画是否正常生成;(5)音效控制模块的测试,用来测试游戏中的背景音乐和音效系统能否正常运行。各个单元的模块测试结果如表5.1所示:表5.1测试用例表模块预计功能预期与实际结果游戏菜单模块三种菜单界面和游戏界面能相互切换,菜单中的各个按键能实现其功能一致游戏计分模块成功自动累计一致玩法控制模块用户能够进行翻牌,翻卡之后难度会升级,计时模块能正常计时,翻卡失败之后系统会自动降低难度等操作一致开场动画模块能够自动生成一致音效控制模块游戏中背景音乐和音效系统能正常运行一致在主菜单中,存在三个按键,开始,音量设置,退出游戏。点击开始游戏按键可以进入如图5.1的游戏场景;点击设置音量按键进入如图5.2音量设置界面;点击退出游戏按键,成功退出游戏。图5.1游戏主菜单界面图5.2音量控制菜单玩家可以通过拖动设置界面中的滑块,来改变游戏中的音量大小,点击具体效果如图5.3所示:图5.3改变滑块后界面效果玩家进入游戏后,系统会开始计时,如图5.4所示同时会自动翻开两张图片,点击相同的图片时,系统会自动计分,如果全部匹配完成,则进入下个难度,得分和难度都会增加,最高难度如图5.5所示。难度决定了系统同时翻开的图片数量,随着难度的不断提高,翻开的图片会越来越多。图5.4刚进游戏界面图5.4游戏最高难度界面在游戏中使用暂停按钮时,会出现如图5.5的暂停菜单。暂停菜单中包括了继续游戏、重新开始、退出游戏三个功能,同时游戏的计时也会暂停。如果选择继续游戏,则游戏恢复运行;如果选择重新开始,则游戏会重新开始计时和计分并且难度重置;如果选择退出游戏,则游戏会自动退出运行。图5.5游戏暂停界面当计时器计时结束,系统会自动进入如图5.6的游戏结束界面。这时系统会将游戏得分、重新开始、退出游戏显示在屏幕上。这时可以选择重新开始或者退出游戏。点击重新开始时会自动开始下一把游戏,而点击退出游戏,系统则会自动退出游戏。图5.6游戏结束界面5.3本章小结本章对系统进行了单元测试和集成测试,经测试,本系统的以上功能均已实现,达到预期效果。总结与展望6总结与展望6.1总结随着时代的不断进步和发展,游戏在市场中的份额也不断增大。作为市场中较为热门的卡牌游戏,可以让玩家真正的感受到休闲的感觉,使得玩家能够放松心情,陶冶情操。本次毕业设计主要先分析市场需求,然后分析各个模块功能的实现要求,采用面向对象的系统,最终打包发布到安卓平台,方可在手机上游玩。本次毕业设计打造了一个简单益智的纸牌游戏,轻松易于上手,难度阶梯划分也很明显。随着不断的翻牌,玩家的得分会越来越高,但是难度也会越来越高,这样的设计会使得游戏更加具有挑战性,并使得玩家更加喜欢上手。本次毕业设计主要使用unity平台进行设计,采用C#语言,分成五个不同的模块:游戏菜单模块,游戏玩法模块,音效控制模块,游戏开场动画模块和游戏计分模块。其中游戏菜单界面有继续游戏,重开游戏和退出游戏三个功能,使用了SceneManager.LoadScene函数,Application.Quit函数和setactive函数来实现。这次的毕业设计打造了一个休闲娱乐的卡牌游戏,我也希望能够将这个游戏做的更好。6.2展望本毕业设计还有很多需要改进的地方,可以使得本游戏变得更加具有趣味性和耐玩性。点击卡牌时的效果感也不够,需要更加流畅的动画和音效来提高玩家的游玩体验。画面感不够,需要提高画面感来提高游戏性需要游戏的复杂度也不够,玩法很单一,需要极大的提高游戏的丰富度。音效设计也不够多元化,这使得游戏有点枯燥,不够耐玩。致谢

温馨提示

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

评论

0/150

提交评论