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"大樂鬥"練習源碼

疏漏之處請大佬指正

相關文章
相關標籤/搜索