周末时师弟说想要练习一下scala编程,让给找一些习题,想来习题比较枯燥,因而给他出了一个“大乐斗”的场景。这能够做为一个熟悉Scala编程的入门案例,源码在文末。java
- 出场左右【英雄】进行回合制对战,生命值先低于0者为败
- 【英雄】可使用【武器】或【技能】
- 【武器】在一局比赛中只能使用1次,【技能】有触发几率
- 【武器】使用完,使用基础攻击
花了些时间把Demo写出来,这里谈一下实现。git
普通的武器只形成固定伤害,如github
短棍只形成一个固定数额的伤害shell
"【短棍】出击!" + this.damage
复制代码
也有一些特点武器,如下短标题都是【武器】名称:编程
"武功再高,也怕【菜刀】!" 菜刀形成对手当前生命值一半的伤害!app
println(s"~~~一刀半管血,就问你怕不怕?##${this.damage}##")
复制代码
"Java和Scala关系密切" ,使用《Java编程思想》武器后对方增长必定血量分布式
"扔出一本《【JAVA】编程思想》!对方阅读后血量增长了[50]!o(╯□╰)o"
复制代码
"学完《快学【Scala】》,修改了本身的血量+100!O(∩_∩)O哈哈~\n 对方精神损失:" + this.damage测试
println(s"嘿嘿(*^▽^*),我发现修改血量的代码在第7行~~悄悄把本身血量改为了【${hero.current()}】")
复制代码
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
复制代码
源码传送门以下,有疑问的同窗欢迎留言交流:
疏漏之处请大佬指正