secminhr cb4ce44ea3 Kotlin core finished
Finish basic function
Update card's effect
2018-08-26 13:43:22 +00:00

128 lines
5.0 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import java.util.*
abstract class AggressiveCard: Card {
override fun startSkill() {
println(activeString)
owner.enemy.effectBuffer = this.effects
owner.enemy.attackingCard = this
owner.enemy.effectBuffer.forEach { it.apply() }
owner.enemy.effectBuffer = emptyArray()
owner.enemy.attackingCard = null
}
override fun toString(): String {
return "${this.id}. ${this.name}"
}
}
abstract class DefensiveCard: Card {
class NotInPassiveContextException: Exception()
override fun startSkill() {
if(owner.effectBuffer.isEmpty()) {
throw NotInPassiveContextException()
}
println(activeString)
this.effects.forEach { it.apply() }
}
override fun toString(): String {
return "${this.id}. ${this.name}"
}
}
abstract class GeneralCard: Card {
override fun startSkill() {
println(activeString)
this.effects.forEach { it.apply() }
}
override fun toString(): String {
return "${this.id}. ${this.name}"
}
}
class AttackCard(override val owner: Character): AggressiveCard() {
override val name = "攻擊"
override val id = 1
override val effects: Array<Effect> = arrayOf(Damage(owner.enemy, decreaseLife = 2))
override val activeString = "$owner 攻擊 ${owner.enemy}"
}
class DefendCard(override val owner: Character): DefensiveCard() {
override val name = "防禦"
override val id = 2
override val effects: Array<Effect> = arrayOf(Defense(owner))
override val activeString = "$owner 防禦成功"
}
class HealCard(override val owner: Character): GeneralCard() {
override val name = "治癒"
override val id = 3
override val effects: Array<Effect> = arrayOf(Heal(owner, increaseLife = 2))
override val activeString = "$owner 回復2點生命"
}
class SupplyCard(override val owner: Character): GeneralCard() {
override val name = "補給"
override val id = 4
override val effects: Array<Effect> = arrayOf(DrawFromDeck(owner, numberOfCards = 2))
override val activeString = "$owner 增加2張手牌"
}
class RobbingCard(override val owner: Character): AggressiveCard() {
override val name = "強奪"
override val id = 5
override val effects: Array<Effect> = arrayOf(ChooseFromCharacterHand(owner, owner.enemy))
override val activeString = "$owner 正在對 ${owner.enemy} 行搶"
}
class SurpriceCard(override val owner: Character): AggressiveCard() {
override val name = "奇襲"
override val id = 6
override val effects: Array<Effect> = arrayOf(Damage(owner.enemy, decreaseLife = 2),
LoseCard(owner.enemy))
override val activeString = "$owner 發動奇襲"
}
class AwareCard(override val owner: Character): DefensiveCard() {
override val name = "洞悉"
override val id = 7
override val effects: Array<Effect> = arrayOf(Defense(owner), DrawFromDeck(owner, numberOfCards = 2))
override val activeString = "$owner 洞悉了 ${owner.enemy}${owner.attackingCard}並抽取2張手牌"
}
class PlanCard(override val owner: Character): GeneralCard() {
override val name = "妙策"
override val id = 8
override val effects: Array<Effect> = arrayOf(ChooseFromDeck(owner))
override val activeString = "$owner 有個妙策"
}
class SweepCard(override val owner: Character): AggressiveCard() {
override val name = "掃射"
override val id = 9
private val damage = Random().nextInt(6)
override val effects: Array<Effect>
get() = arrayOf(Damage(owner.enemy, decreaseLife = damage))
override val activeString = "$owner${owner.enemy} 進行掃射,威力是 $damage"
}
class BlessCard(override val owner: Character): GeneralCard() {
override val name = "加護"
override val id = 10
override val effects: Array<Effect> = arrayOf(Heal(owner, increaseLife = 3), SolvePoison(owner))
override val activeString = "$owner 獲得加護身上的毒素一掃而空並回復3點生命"
}
class PoisonCard(override val owner: Character): GeneralCard() {
override val name = "劇毒"
override val id = 11
override val effects: Array<Effect> = arrayOf(Poison(owner.enemy))
override val activeString = "$owner 在食物下毒,${owner.enemy} 中毒了"
}
class ChaosCard(override val owner: Character): AggressiveCard() {
override val name = "狂亂"
override val id = 12
override val effects: Array<Effect> = arrayOf(Heal(owner, increaseLife = 3),
Damage(owner.enemy, decreaseLife = 3))
override val activeString = "$owner 進入狂亂模式,回復三點生命,並對 ${owner.enemy} 造成三點傷害"
}
class ReverseCard(override val owner: Character): DefensiveCard() {
override val name = "反制"
override val id = 13
override val effects: Array<Effect> = arrayOf(Reverse(owner), Defense(owner))
override val activeString = "$owner 反制了 ${owner.enemy} 的攻擊,反彈了其效果"
}