这条博客用来记录一下课程最后的作业……
写的挺扯淡就是了……

严肃游戏设计——《机器人对决》

〇、目录

  • 游戏设计思路
  • 游戏受众与学习目标分析
  • 游戏背景与基础设定
  • 游戏模式
  • 游戏机制
  • 游戏流程模拟
  • 参考资料与相关链接

一、游戏设计思路

​ 这是一款融入了计算思维以及计算机知识的游戏,我的设计灵感来源于一些既有的游戏或平台。

​ 在这一部分,我将分析三个真实的游戏或网页的部分特点与机制,进而呈现我设计《机器人对决》的思路。

【1】编程解谜游戏:《Human Resource Machine》1

图1 《Human Resource Machine》 游戏界面

​ 这是一款益智解谜游戏,其核心的玩法是通过拖动指令块,操纵小人的行为,把输入部分的数字或字母的盒子进行处理,最后把盒子按照要求放置到输出区域。

​ 可以从游戏界面看出,玩家拖动的指令块的功能设计来自于计算机底层的指令集。

​ 游戏内置数十个关卡,在一个个解谜的关卡中,玩家会逐渐掌握用指令实现一些计算操作,进而学习到一些计算思维与算法。

​ 这样一款游戏的优点在于:很好的将计算机知识与算法融入到了解谜过程中,拖动方块以及可视化的程序运行过程对玩家来说十分友好。但同时,还存在一些缺陷:游戏内容较为有限,游戏挑战性过高,一旦陷入困境,玩家缺少指导,极其容易失去兴趣。

【2】算法竞赛学习平台:CodeForeces2

图2 CodeForces 用户信息界面

​ CodeForces简称CF。CF是一个用于举办程序设计竞赛的网络平台,同时也是世界级的算法竞赛交流社区。在这个平台上,用户们可以参加程序设计比赛,交流算法的学习。基于此特点,可以将该平台归结为完全的学习平台。

​ 尽管CF是一个学习平台,但其也尝试添加了许多机制,增强其趣味性。

  • Rating及称号机制:每一位用户都有一个分值,称为Rating。每当用户参加完一场比赛之后,系统会根据用户当前的分值以及在比赛中的表现对其Rating进行增加或者减少。并且每一段Rating会对应用户的荣誉称号,如:pupil(1200~1400)、 specialist(1400~1600)、 expert(1600~1900)、 master(2100~2300) 等。Rating一定程度上可以对应用户的程序设计水平,这样的机制能给予玩家荣誉的获得感。
  • 比赛中的玩家对抗机制:CF的比赛,形式上是给出程序设计题目以及基本的测试数据,让参与者编写程序来解决题目,并且通过测试数据。如果参与者发现其他用户的参赛程序存在bug,那么他可以自己制作一组特殊的测试数据,诱发其他用户的bug,让其他用户不能通过该测试数据,也就不能通过该道题目。这样的进攻行为称为hack,在比赛中成功hack将会获得加分。这样的机制不但能提升测试数据的强度,同时更增加了比赛的趣味性,增加了参与者的操作空间。

​ 此外,作为一个学习平台,CF有着庞大的用户社区,可以较好的帮助遇到困难的学习者解决困难,而不是束手无策。然而参与CF平台的学习有着较大的门槛,参与者必须掌握一门程序设计语言。事实上,CF是专门面向编程学习者开放的,对于外行人,根本不会认识页不会尝试这个平台。

【3】多人联机竞技游戏:以《王者荣耀》为例

​ 作为热门的多人竞技游戏,《王者荣耀》有着日均一亿的活跃用户。该游戏娱乐化程度高,一定程度上缺少教育意义,这里仅对其部分游戏机制略做分析。

​ 《王者荣耀》的以下机制,在一定程度上对玩家具有吸引力。

  • 角色扮演: 在每一场竞技中,玩家可以选择自己的英雄并且扮演该英雄。不同的英雄具有不同的技能,在竞技中具有独特的价值。
  • 即时反馈: 在每一场游戏中,玩家将与对手对抗,而玩家所做的操作都是能立刻得到反馈的。即时的反馈增强了游戏体验和操作感。
  • 团队协作:《王者荣耀》主要的玩法是5V5团队协作对战,团队的沟通与配合在游戏中至关重要。与队友的交流,能在一定程度上满足玩家的社交需求。

《机器人对决》设计思路

​ 我将设计的游戏暂时命名为《机器人对决》。

​ 我希望结合上述的游戏、平台的部分优势,设计一款学习计算思维与算法,门槛较低,并且能够以单人练习配合多人竞技的形式呈现的游戏。我希望这款游戏能够吸引编程爱好者或是喜欢思考的玩家,希望他们能在游戏中体验到竞技的快感,同时训练自己的思维语团队协作能力。

​ 《机器人对决》将会拥有类似于《Human Resource Machine》的基本游戏形式,同时将会拥有类似于CodeForces的社区。社区成员将会提供源源不断的关卡保持该游戏的活力。此外该游戏还将拥有类似于《王者荣耀》的竞技形式,以吸引玩家。


二、游戏受众与学习目标分析

游戏类型

​ 解谜,角色扮演,多人竞技

游戏受众

​ 游戏的主要受众是15岁以上的学生,对编程感兴趣或是喜欢思考问题。

​ 事实上,该游戏本身具有对玩家能力进行评估分类的机制,对于不同水平的玩家,游戏的复杂性与难度都会不同。

学习目标

​ 学习游戏中接近于计算机底层的各种指令,学习使用指令来完成游戏中的任务,学习使用指令实现一些基础算法,在多人竞技中强化运用所学知识。增强学习者的思维能力。


三、游戏背景与基础设定

游戏背景:

​ 人类社会进入到了一个机器人时代,世界上许许多多的工作都将由机器人取代。但是,世界上有两大机器人集团,他们势均力敌。为了促使机器人的任务完成水平不断提高,两大集团将会不断的举行任务挑战赛,相互切磋,相互竞争。游戏的玩家作为一个普通人,需要学习如何用指令操纵机器人完成任务,提高自己的水平,并且在一些比赛中加入到两大集团中的一方,通过比赛来获取赏金和荣誉。

基础设定:

关卡界面

​ 游戏的主要关卡界面由三个区域组成:输入区、输出区、堆砌区。

​ 游戏中每一个数字都是32位带符号整型,每一个数字都是一个盒子。盒子上会显示一个整数来表示数字。

输入区大小有限(不妨设置为10个位置),每个位置可以放置一个数字。输入区整体代表的是任务的输入数据。

输出区大小不加限制(但不能超过一个较大的值),在关卡开始时,该区域是空的。玩家用指令操作机器人,将一些数字放置在输出区。

​ 对于每组输入数据,有一组对应的标准输出数据(也就是答案)。通过比对玩家的机器人构造的输出数据和标准的输出数据,就可以判断玩家是否通过该任务。

堆砌区因关卡而异,具有一定的大小,机器人可以将数字暂时堆砌在该区域的某个位置,还可以通过指令对数字进行复制、粘贴、运算等操作。

用指令操作机器人

​ 游戏中机器人的行为是由指令控制的。玩家需要做的,是从自己可以选择的指令集中,拖动指令,组成一条从上到下的指令序列。机器人将按照从上到下的顺序执行指令。此外,通过jump指令,玩家可以让机器人执行的下一条指令跳转到序列中的任何一个位置,这样可以构成指令的循环。

​ 但是玩家并不具有无限的创作空间。所有机器人都具有两项基本属性:“脑容量”和“续航力”,他们都以数值的形式呈现。“脑容量”表示机器人能够储存的指令的条数,也就是玩家编写的一段指令序列的长度最大值。“续航力”表示机器人在一个任务或一场比赛中,能够执行的总指令的最大数量,当机器人执行了该数量的指令之后,就会自动停止,这避免了死循环的出现。

​ 此外,机器人还具有属性“携带量”。“携带量”表示机器人自身可以携带的数字的数量。机器人可以对自身携带的数字做运算操作,或是用堆砌区的数字更新自己携带的数字,又或是将携带的数字放置到输出区域等等。为了增加挑战度,携带量一般情况下为1.

​ 下面介绍游戏中机器人基本指令集中的指令:

  • 【input x y】:机器人到达输入区第x个位置,用这个位置上的数字,替换自己携带的第y个数字。
  • 【output x y】:机器人到达输出区的第x个位置,将自己携带的第y个数字,放置在输出区的这个位置。
  • 【copyto x y】:机器人到达堆砌区的第x个位置,将自己携带的第y个数字,拷贝到堆砌区的这个位置。
  • 【copyfrom x y】:机器人到达堆砌区的第x个位置,用这个位置上的数字,替换自己携带的第y个数字。
  • 【add x y】:机器人到达堆砌区的第x个位置,将其上面的数字与自己携带的第y个数字相加,并把结果存在自己携带的第y个数字。
  • 【sub x y】:与上面类似,换做减法。
  • 【jump x】:机器人查找指令序列的第x条指令,将不再执行该指令之后的指令,而是把第x条指令当作下一条指令执行。
  • 【jumpifzero x y】:机器人查找指令序列的第x条指令,如果机器人携带的第y个数字是0,那么机器人将不再执行该指令之后的指令,而是把第x条指令当作下一条指令执行。

​ 上面的指令称为基础指令,使用基础指令,已经可以解决很多简单的问题。但是对于高阶的玩家,还会解锁一些额外的指令。比如对运算指令进行拓展,加入xor,and,or等位运算。玩家也可以将自己编辑的一段指令序列打包、命名,以提高指令的复用性。

​ 此外,在竞技模式中,玩家可以选择不同的机器人作为自己本场参赛机器人,不同的机器人有各自的特点,也会有一些独特的指令。


四、游戏模式

​ 游戏主要设计三种模式,其中有完成单人任务的【试炼之路】模式,有多人同时进行的【任务挑战赛】模式,还有较为激烈的5V5对抗的【针锋对决】模式。

【试炼之路】

简要介绍

​ 这是单人游戏模式,并且该模式作为游戏的一系列教程。在试炼之路中,有数十个关卡,每个关卡都设置了任务,要求玩家拖动指令块构造指令序列,操纵机器人完成任务。随着关卡的推进,任务难度会逐步提升,帮助玩家逐步掌握指令的基本用法。

​ 每一个关卡都会设置讨论区,玩家们可以在讨论区分享心得与方法。

关卡实例

​ 这里给出一些设想的关卡实例。

​ 【输入与输出】编写指令,让机器人将输入区的数字原封不动的搬运到输出区。只使用inputoutput指令即可。

​ 【输入与倒序输出】编写指令,让机器人将输入区的数字以倒序搬运到输出区。可以借用堆砌区实现,需要用到copytocopyfrom指令。

​ 【输出相反数】编写指令,让机器人将输入区的数字的相反数搬运到输出区。需要用到计算指令sub来求相反数。

​ ……

【任务挑战赛】

简要介绍

​ 这个模式类似于单人游戏模式,但是参赛的玩家将会同时进行单人挑战,并根据挑战的情况给出排名。这个模式的灵感来自于CodeForces举办比赛的方式。官方或者高阶玩家每星期将会创建一场比赛,设计一系列具有难度梯度的关卡。玩家参加挑战赛将会获得奖励。每场挑战赛会将参赛玩家完成比赛关卡的表现做统计并且排名,然后计算出玩家的得分(可能是负数)。玩家的总积分将会用于划分玩家段位。

​ 在比赛中,玩家在自己完成关卡之后,可以查看其他玩家指令序列,如果发现其他玩家的方法存在bug,那么他可以自己构造一组输入输出数据,来“攻击”其他玩家。这样有利于增强关卡的测试数据。

​ 每一场比赛都会设置讨论区,在比赛结束后,玩家们可以在讨论区分享心得与方法。

​ 这样一种比赛方式将会不断更新关卡,让游戏保持活力。

比赛实例

​ 这里给出一场设想的比赛实例。可以看到,关卡难度是逐渐递增的,具有梯度,能区分玩家水平,锻炼玩家思维。

​ 【RC Contest Round 5】

​ 本场比赛由高阶玩家George_Plover设计关卡。

​ 比赛时间:2021.01.15 20:00~21:00

​ 比赛关卡:

​ 【1.数字交换】编写指令控制机器人,将输入区的两个数字进行交换,分别放置到输出区。

​ 【2.最大数字】编写指令控制机器人,将输入区最大的数字搬运到输出区。

​ 【3.中位数】编写指令控制机器人,将输入区的输入序列的中位数放置到输出区。

【争锋对决】

简要介绍

​ 这是最刺激的模式,10名水平接近的玩家在一局游戏匹配到一起,分为两个队伍,进行5V5对决。

​ 在一局游戏中玩家需要选择各自出战的机器人,类似于《王者荣耀》中玩家选择自己的英雄。不同的机器人具有不同的属性和自己的专属指令。

​ 在一局5V5游戏中,将不会有输入区。在游戏场景中央,会有一个很大的堆砌区,上面已经堆上了一些数字。对于双方玩家,各自会有一个输出区。双方玩家需要在公用的堆砌区获取数字,进行运算等操作,完成团队任务,最后将结果放置到己方的输出区。最后比较双方完成任务的结果,评定出获胜方。由于堆砌区是公用的,双方玩家在执行任务中将会遇到冲突,这时候游戏就具有对抗性了。

​ 一局5V5游戏分为三个阶段。

​ 第一阶段,各方的前两位队员,同时构造自己机器人的指令序列,同队的玩家可以相互看到队友正在构造的序列。第一阶段结束后,游戏场景会播放第一阶段双方共四个机器人并行的执行结果,这四个机器人的指令序列已经固定,不可修改。这时候双方都可以看到对手在第一阶段的布局和策略。

​ 第二阶段,又是各方的两位队员,同时构造自己机器人的指令序列。和第一阶段类似。当这阶段结束后,游戏场景会播放第一、二阶段双方共八个机器人并行的执行结果。由于相比于第一阶段,加入了四个机器人的并行执行,所以执行结果会发生变化。

​ 第三阶段,各方的最后一位队员,同时构造自己机器人的指令序列。这时候他们的操作将影响最终的结局,当这阶段结束后,游戏场景会播放第一、二、三阶段双方共十个机器人并行的执行结果,根据结果决出胜者。

机器人属性介绍

​ 机器人的属性设计十分重要,需要让机器人具有自己的特性,在团队赛中发挥出自己的特长,强调团队配合的重要性。

​ 【脑容量】一个整数值,代表一局游戏中,该机器人的指令序列的最大长度。

​ 【续航力】一个整数值,代表一局游戏中,该机器人执行指令的最大数量,执行完该数量的指令后,机器人自动停止。

​ 【携带量】一个整数值,代表一局游戏中,该机器人自身能携带的数字的个数。一般为0~2。

​ 【权限度】一个整数值,用于解决对抗并行中的冲突问题。例如两个机器人同时修改一个堆砌区的数字,那么权限度高的机器人能够成功修改。如果两者权限相同,则都不能成功修改。

​ 【专属指令】每个机器人的专属指令,像是一个专属的技能,可以让机器人在任务中体现自己的优势。

机器人实例

​ 这里给出三个设计好的机器人实例,来显示不同机器人的特性。

属性 Robot A Robot B Robot C
脑容量 50 70 100
续航力 300 200 500
携带量 1 2 0
权限度 20 15 22
专属指令1 add v :v是一个自定义的在-128~127的数字,执行该指令可以让自己携带的数字加上v。 addload:将自己携带的两个数字相加,替换掉自己携带的第一个数字。 change x v:将堆砌区第x个数字修改为自定义的数字v
专属指令2 subload:将自己携带的两个数字相减,替换掉自己携带的第一个数字。 cpartner x v:将队友机器人x携带的第一个数字修改为自定义的数字v

​ 可以看到,在三个机器人相比之下,Robot A具有较为全面综合的性能,Robot B 具有较大的携带量,能够对自己携带的两个数字进行运算,具有突出的数子处理和搬运能力,Robot C没有携带量,不能携带数字,这是一大劣势,但是它具有较高的修改权限,并且拥有修改队友携带数字或者堆砌区数字的能力,可以增强与队友之间的配合,而且他较大的脑容量和续航力也是一大优势。

​ 在此基础上,还可以设计更多具有特色的机器人,让玩家进行多种配合,不断探索。

比赛任务实例

​ 这里给出一局游戏中可能的一个任务实例。

​ 【输出最大值】在这个任务中,双方要充分利用堆砌区已经存在的数字,对他们进行运算,处理,最后放置到己方的输出区。由于堆砌区是公用的,双方可以相互干扰对抗。最后输出数字最大的一方获胜。(注:所有数字是32位带符号整型,小心溢出!)

​ 那么在这样一个可能的任务中,双方要合理设计自己的战术,充分利用前两个阶段试探对方的战术,可以去干扰对方,也要时刻提防对方的干扰。同时还需要评估自己机器人的属性,设计出适合的指令序列。这充分训练了玩家的思维能力和战术沟通能力,加强了玩家对指令的熟悉程度和应用能力。


五、游戏机制

​ 为了让游戏更耐玩,让玩家在游戏中学到知识,提升能力,游戏中会添加一些系统机制。

【等级、金币与商店】

​ 玩家账号具有等级,每局游戏结束后都会获得经验,当经验满后,会升至下一级,并获得升级奖励。升级奖励可以是金币、商店物品、物品体验卡。玩家在游戏后也会获得金币,金币可以用于购买商店商品。

​ 商店商品包含不同属性的机器人、机器人的装饰、玩家形象的装饰品等等。

【比赛积分机制】

​ 任何一场多人赛都会根据比赛结果,调整玩家的积分。这用来划分玩家的段位和称号。同时这也是玩家匹配的根据和任务难度调整的依据。对于高阶玩家,游戏中的任务会更具有挑战性,或是更具有对抗性,对于初级玩家,任务和比赛会相对友好。合理的难度设定能让玩家感觉到适中的挑战性,保持对游戏的兴趣。

【每日任务】

​ 每天会从以往的比赛任务中推送一个符合玩家水平的任务,玩家完成后会获得奖励。

【社区】

​ 游戏自带社区功能,玩家可以添加自己的好友,与好友一同游戏。也可以在社区上查找单人游戏的攻略,学习通关方法。这能够提高玩家的水平,促进玩家交流与平台发展,满足玩家的社交需求。

【融入算法知识】

​ 指令只是游戏的基础,但是指令能够表达、实现许许多多的算法。那么,只要在关卡设计中融入算法,设计一些经典算法的问题(例如二分查找、冒泡排序),就能够让玩家在游戏中学到算法。

【包装指令】

​ 可以发现,在多人对抗模式中,现场编写大量的指令会比较繁琐。因此,游戏添加了自定义包装指令的功能。在游戏之外,玩家可以在客户端内编辑自己的自定义指令。自定义指令是由一条的指令序列构成,在游戏中拖动一条自定义指令,等价于把指令替换成对应的序列。这样,玩家可以在游戏外预先设计一些指令块,在游戏时可以直接拖动这些块,加快设计效率,这体现出了函数的思想。

【更多机制】

​ 游戏还具有添加其他机制的空间,不再赘述。


六、游戏流程模拟

​ 玩家加入了游戏,注册了自己的第一个账号,开始了解游戏背景,接受新手教程。

​ 这时玩家拥有一个1级账号,只能玩单人模式,增加经验,提升等级,在玩单人游戏的过程中,玩家了解到了基础指令,并逐渐学会使用它们操控机器人解决一些基本问题。在这过程中,玩家遇到了一些困难,但通过在社区上寻求帮助,玩家度过了难关。

​ 当玩家到达5级之后,玩家可以加入任务挑战赛,每一场比赛都会计算玩家积分。在任务挑战赛中玩家能学到一些算法的思维模式。

​ 当玩家到达10级之后,将会解锁5V5对抗的基础模式,玩家在对抗中的任务都比较简单,允许使用的机器人类型也有限。在这里玩家体验到了竞技的乐趣,也能够熟练运用基本指令了。到达15级,将会解锁5V5的正常模式,游戏中的任务也会变得复杂,并且开放所有的机器人类型,玩家可以尝试多种整容搭配。

​ 当玩家的积分、等级达到非常高时,已经成为了高阶玩家,若想要对游戏进行一些贡献,可以加入到设计任务挑战赛题目的队伍中。


七、参考资料与相关链接


  1. 人力资源机器:Human Resource Machine ↩︎

  2. CodeForces官网 ↩︎

【课程论文】严肃游戏设计与运用相关推荐

  1. 计算机思维游戏推理论文,基于严肃游戏的计算思维培养

    摘要:在分析严肃游戏这一新兴的教学方式的基础上,提出基于严肃游戏培养计算思维能力的观点,以案例的形式讨论严肃游戏与计算思维能力培养的几种结合方式.介绍以各门专业知识为目的跨学科的严肃游戏文案设计训练. ...

  2. 游戏设计行业标准测试:秘密收集

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:30节课(4h 5m) |大小解压后:2.68 GB ...

  3. 基于 python 的德云消消乐益智小游戏设计论文+源码

    计科在读分享自己做过的课题设计作业 有意可私信了解 目录 第一章 引言 II 1.1 课题背景 1 1.2 目的和意义 1 1.3 国内外的发展现状 1 1.4 开发环境 1 第二章系统开发平台的阐述 ...

  4. 基于java的扫雷论文_毕业论文基于JAVA的扫雷游戏设计

    毕业论文基于JAVA的扫雷游戏设计 课 程 设 计 报 告 课程名称: 计算机技术综合课程设计 题 目: 基于JAVA语言的扫雷游戏设计 学 院: 信息工程 系: 计算机 专 业: 计算机科学与技术 ...

  5. 信息系html5论文,基于HTML5的智力游戏设计电子信息工程本科学生毕业论文.doc

    基于HTML5的智力游戏设计电子信息工程本科学生毕业论文 本科学生毕业论文(设计) 题目(中文):基于HTML5的智力游戏设计 (英文):Design of Intelligent Game Base ...

  6. android 拼图课程设计,拼图游戏设计_课程设计报告.docx

    Il Il Il Il 学号 1608220203 2016-2017学年 第一学期 <Windows程序设计> 课程设计报告 题目:拼图游戏设计 专业: 班级: 姓名: 指导教师: 成绩 ...

  7. 酷跑游戏C语言,毕业设计(论文)-跑酷游戏设计(源程序).doc

    重庆理工大学毕业设计论文跑酷游戏 毕业设计(论文) 题目 跑酷游戏 二级学院 计算机科学与工程 专 业 软件工程 班 级 学生姓名 学号 指导教师 职称 时 间 2014.5.20 目 录 TOC \ ...

  8. 相关旅游专业的计算机课程,高职旅游管理专业计算机课程项目化教学设计论文...

    高职旅游管理专业计算机课程项目化教学设计论文 近年来,各高职院校不断深化计算机课程的教学改革,但目前仍然存在着诸多问题,例如学生学习兴趣不大.教学手段单一.教学与实践分离.无法真正服务服务需求和岗位需 ...

  9. 学生宿舍管理系统的设计与实现(课程论文)

    学生宿舍管理系统的设计与实现 摘  要:现如今高校大学生越来越多,寝室压力巨大,学生不好管理.学生宿舍管理系统对于一个学校来说是必不可少的组成部分.目前好多学校还停留在宿舍管理人员手工记录数据的最初阶 ...

最新文章

  1. 破译手势在对话中的意义
  2. 机器学习博主推荐、博文推荐
  3. 一文带你学C语言,详细知识点思维导图!
  4. LOAD DATA INFILE句法
  5. 学成在线--6.CMS页面管理开发(删除页面)
  6. Spring模块介绍
  7. 为什么Python循环变慢?
  8. android课程设计实训目的,汽车专业实习目的与意义
  9. 小程序 云函数 python_小程序云函数
  10. 实习成长之路——设计原则三:里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?
  11. 机器人研究方向的自我学习[2] Matlab机器人工具箱 欧拉角 参考书:《机器人学导论》第四版
  12. AD9如何创建原理图元件
  13. Word基础(三十六)题注与标题样式
  14. 某移动版网页源码留存
  15. ECS云服务器详细配置
  16. 招聘:赴微软工作SharePoint技术专家(V-,北京)
  17. C语言_递归_计算x的y次方
  18. git远程分支强制覆盖本地分支
  19. Js高级单利模式理论模型
  20. 调用腾讯云语音转文本

热门文章

  1. 2019石油大学西方艺术赏析在线考试(答案)
  2. Android编程心得---捕捉Home键事件的完美解决方法
  3. sql索引失效和优化
  4. 短线的高手一般看什么,盯盘需要关注哪些内容
  5. move_base源码解析
  6. 滴滴攻打美团外卖,外卖“护城河”轻易被攻破的背后
  7. UML 活动图 ---- 建模业务过程
  8. SpringBoot实现服务器PDF文件的下载和预览功能
  9. 计算机视觉小白的心声
  10. 南阳理工学院OJ 擅长排列的小明