Scala编程练习素材-实现[大乐斗]逻辑

周末时师弟说想要练习一下scala编程,让给找一些习题,想来习题比较枯燥,因而给他出了一个“大乐斗”的场景。这能够做为一个熟悉Scala编程的入门案例,源码在文末java

需求

  • 出场左右【英雄】进行回合制对战,生命值先低于0者为败
  • 【英雄】可使用【武器】或【技能】
  • 【武器】在一局比赛中只能使用1次,【技能】有触发几率
  • 【武器】使用完,使用基础攻击

实现细节

花了些时间把Demo写出来,这里谈一下实现。git

普通的武器只形成固定伤害,如github

【短棍】

短棍只形成一个固定数额的伤害shell

"【短棍】出击!" + this.damage
复制代码

也有一些特点武器,如下短标题都是【武器】名称:编程

【菜刀】

"武功再高,也怕【菜刀】!" 菜刀形成对手当前生命值一半的伤害!app

println(s"~~~一刀半管血,就问你怕不怕?##${this.damage}##")
复制代码

【JAVA】

"Java和Scala关系密切" ,使用《Java编程思想》武器后对方增长必定血量分布式

"扔出一本《【JAVA】编程思想》!对方阅读后血量增长了[50]!o(╯□╰)o"
复制代码

【Scala】

"学完《快学【Scala】》,修改了本身的血量+100!O(∩_∩)O哈哈~\n 对方精神损失:" + this.damage测试

println(s"嘿嘿(*^▽^*),我发现修改血量的代码在第7行~~悄悄把本身血量改为了【${hero.current()}】")
复制代码

【Spark】

Spark是一个分布式计算引擎,这里若是使用到了【Spark】,则从一个基础武器库里随机挑选3种武器发动攻击。this

"使用【SPARK】分布式攻击,导弹三连发!"spa

println(s"【Spark】引擎的第${i}次攻击↓")
复制代码

测试类

初始生命值都是300

package com.happy.battle

object BattleTest {
  def main(args: Array[String]): Unit = {
    val left = Hero("奔波儿灞")
    val right = Hero("灞波儿奔")
    println("获胜者是:" + left.battle(right) + "✿✿ヽ(°▽°)ノ✿!")
  }
}
复制代码

测试效果展现

github源码有大量更新,打印有所不一样

信息: ###########第1回合############
左方出手:→_→ →_→ 
拿出武器:一【砖头】下去,可能冒星星(✖人✖) !35
对手的血量还有265

右方出手:←_← ←_← 
拿出武器:【短棍】出击!30
对手的血量还有270
中场休息: ================================================== |100%

左方出手:→_→ →_→ 
信息: ###########第2回合############
拿出武器:使用【SPARK】分布式系统,导弹三连发!
【Spark】分布式计算引擎的第1次攻击↓
拿出武器:抛出一行【代码】:急急如律令 ╭(╯^╰)╮ Run:
✿✿ヽ(°▽°)ノ✿人品爆发,形成大量伤害:【53】
【Spark】分布式计算引擎的第2次攻击↓
拿出武器:【短棍】出击!30
【Spark】分布式计算引擎的第3次攻击↓
拿出武器:【长棍】更容易打到人!40
对手的血量还有142

右方出手:←_← ←_← 
拿出武器:学完《快学【Scala】》,修改了本身的血量+90!O(∩_∩)O哈哈~ 
对方精神损失:10
嘿嘿(*^▽^*),发现修改血量的代码在第7行~~我悄悄把本身血量改为【232】
对手的血量还有260
中场休息: ================================================== |100%

左方出手:→_→ →_→ 
信息: ###########第3回合############
拿出武器:一颗【LC-100炸弹】!100
对手的血量还有132

右方出手:←_← ←_← 
拿出武器:一【砖头】下去,可能冒星星(✖人✖) !35
对手的血量还有225
中场休息: ================================================== |100%

左方出手:→_→ →_→ 
信息: ###########第4回合############
拿出武器:扔出一本《【JAVA】编程思想》!
不料对方[空手接白书],阅读后血量增长了[50]!o(╯□╰)o
对手的血量还有182

右方出手:←_← ←_← 
拿出武器:使用【SPARK】分布式系统,导弹三连发!
【Spark】分布式计算引擎的第1次攻击↓
拿出武器:【长棍】更容易打到人!40
【Spark】分布式计算引擎的第2次攻击↓
拿出武器:【短棍】出击!30
【Spark】分布式计算引擎的第3次攻击↓
拿出武器:【短棍】出击!30
对手的血量还有125
中场休息: ================================================== |100%

信息: ###########第5回合############
左方出手:→_→ →_→ 
拿出武器:【短棍】出击!30
对手的血量还有152

右方出手:←_← ←_← 
拿出武器:武功再高,也怕【菜刀】!
~一刀半管血,问你怕不怕?##62##
对手的血量还有63
中场休息: ================================================== |100%

左方出手:→_→ →_→ 
信息: ###########第6回合############
拿出武器:【长棍】更容易打到人!40
对手的血量还有112

右方出手:←_← ←_← 
拿出武器:一颗【LC-100炸弹】!100
对手使用法术:【回天术】!!!
惋惜,对手差一丢丢就挂啦!
对手的血量还有1
中场休息: ================================================== |100%

左方出手:→_→ →_→ 
信息: ###########第7回合############
拿出武器:学完《快学【Scala】》,修改了本身的血量+90!O(∩_∩)O哈哈~ 
对方精神损失:10
嘿嘿(*^▽^*),发现修改血量的代码在第7行~~我悄悄把本身血量改为【91】
对手的血量还有102

右方出手:←_← ←_← 
拿出武器:扔出一本《【JAVA】编程思想》!
不料对方[空手接白书],阅读后血量增长了[50]!o(╯□╰)o
对手的血量还有141
中场休息: ================================================== |100%

信息: ###########第8回合############
左方出手:→_→ →_→ 
拿出武器:抛出一行【代码】:急急如律令 ╭(╯^╰)╮ Run:
✿✿ヽ(°▽°)ノ✿人品爆发,形成大量伤害:【71】
对手的血量还有31

右方出手:←_← ←_← 
拿出武器:【长棍】更容易打到人!40
对手的血量还有101
中场休息: ================================================== |100%

左方出手:→_→ →_→ 
信息: ###########第9回合############
拿出武器:人生苦短,我用【Python】~80
[杀敌一千,自损八百!]~ 
本身还剩【61】血量!
对手使用法术:【回天术】!!!
惋惜,对手差一丢丢就挂啦!
对手的血量还有1

右方出手:←_← ←_← 
拿出武器:抛出一行【代码】:急急如律令 ╭(╯^╰)╮ Run:
o(╥﹏╥)o代码出了问题,只形成一点伤害:【39】
对手的血量还有22
中场休息: ================================================== |100%

信息: ###########第10回合############
左方出手:→_→ →_→ 
拿出武器:武功再高,也怕【菜刀】!
~一刀半管血,问你怕不怕?##0##
对手的血量还有1

右方出手:←_← ←_← 
拿出武器:人生苦短,我用【Python】~80
[杀敌一千,自损八百!]~ 
本身还剩【1】血量!
对手的血量还有-58
中场休息: ================================================== |100%

信息: 右方灞波儿奔胜利!
获胜者是:灞波儿奔 ✿✿ヽ(°▽°)ノ✿

Process finished with exit code 0
复制代码

源代码

源码传送门以下,有疑问的同窗欢迎留言交流:

Scala"大乐斗"练习源码

疏漏之处请大佬指正

相关文章
相关标签/搜索