From 14960477225c3f68b5c9d24c62231fae14556504 Mon Sep 17 00:00:00 2001 From: PhenixCeleste <vivien.d06@gmail.com> Date: Mon, 14 Feb 2022 15:29:32 +0100 Subject: [PATCH] new capacities added; capacity class upgraded --- src/main/scala/backend/Main.scala | 10 ++-- src/main/scala/backend/Pokemon/7 | 26 +++++++++ src/main/scala/backend/Pokemon/Capacity.scala | 11 +++- .../backend/Pokemon/CapacityFactory.scala | 20 ++++++- src/main/scala/backend/Pokemon/Pokemon.scala | 4 +- .../backend/Pokemon/PokemonFactory.scala | 54 +++++++++++++++++-- 6 files changed, 112 insertions(+), 13 deletions(-) create mode 100644 src/main/scala/backend/Pokemon/7 diff --git a/src/main/scala/backend/Main.scala b/src/main/scala/backend/Main.scala index 7561898..6d9363a 100644 --- a/src/main/scala/backend/Main.scala +++ b/src/main/scala/backend/Main.scala @@ -1,15 +1,15 @@ @main def main() = - val pkmn = PokemonFactory("Bulbasaur") + val pkmn1 = PokemonFactory("Bulbasaur") val pkmn2 = PokemonFactory("Charmander") val pkmn3 = PokemonFactory("Squirtle") - println(pkmn) + println(pkmn1) println(pkmn2) println(pkmn3) - pkmn.useCapacity(CapacityFactory("Vine Whip"), pkmn2) - pkmn.useCapacity(CapacityFactory("Vine Whip"), pkmn3) + pkmn1.useCapacity(CapacityFactory("Vine Whip"), pkmn2) + pkmn1.useCapacity(CapacityFactory("Vine Whip"), pkmn3) - println(pkmn) + println(pkmn1) println(pkmn2) println(pkmn3) diff --git a/src/main/scala/backend/Pokemon/7 b/src/main/scala/backend/Pokemon/7 new file mode 100644 index 0000000..9f3656a --- /dev/null +++ b/src/main/scala/backend/Pokemon/7 @@ -0,0 +1,26 @@ +object PokemonFactory: + + private case class Bulbasaur() + extends Pokemon( + "Bulbasaur", + 11, + List(Grass, Poison), + List(apply("Absorb"), apply("Vine Whip"), apply("Constrict"), apply("Bubble")), + 49, + 49, + 45, + 45, + 1 + ) + private case class Charmander() + extends Pokemon( + "Charmander", + 12, List(Fire), + List(apply("Bubble"), apply("Bubble Beam"), apply("Rock Throw"), apply("Absorb")), + 52, 43, 65, 39, 1) + private case class Squirtle() extends Pokemon("Squirtle", 11, List(Water), List(), 48, 65, 43, 44, 1) + + def apply(name: String): Pokemon = name match + case "Bulbasaur" => Bulbasaur() + case "Charmander" => Charmander() + case "Squirtle" => Squirtle() diff --git a/src/main/scala/backend/Pokemon/Capacity.scala b/src/main/scala/backend/Pokemon/Capacity.scala index 730eeef..a5855a7 100644 --- a/src/main/scala/backend/Pokemon/Capacity.scala +++ b/src/main/scala/backend/Pokemon/Capacity.scala @@ -1 +1,10 @@ -class Capacity(val name: String, val ctype: Type, val maxUses: Int, val power: Int) +class Capacity(val name: String, val ctype: Type, val maxUses: Int, private var _usesLeft: Int, val power: Int): + + // getter + def usesLeft: Int = this._usesLeft + + // setter + def usesLeft_=(uses: Int) = this._usesLeft = uses + + def useCapacity() = + this._usesLeft = this.usesLeft - 1 diff --git a/src/main/scala/backend/Pokemon/CapacityFactory.scala b/src/main/scala/backend/Pokemon/CapacityFactory.scala index 1c47d63..a87c1cd 100644 --- a/src/main/scala/backend/Pokemon/CapacityFactory.scala +++ b/src/main/scala/backend/Pokemon/CapacityFactory.scala @@ -1,6 +1,22 @@ object CapacityFactory: - private case class VineWhip() extends Capacity("Vine Whip", Grass, 10, 35) + private case class Absorb() extends Capacity("Absorb", Grass, 25, 25, 20) + private case class Bubble() extends Capacity("Bubble", Water, 30, 30, 40) + private case class BubbleBeam() extends Capacity("Bubble Beam", Water, 20, 20, 65) + private case class Constrict() extends Capacity("Constrict", Normal, 35, 35, 10) + private case class Ember() extends Capacity("Ember", Fire, 25, 25, 40) + private case class FireSpin() extends Capacity("Fire Spin", Fire, 15, 15, 35) + private case class RockThrow() extends Capacity("Rock Throw", Rock, 15, 15, 50) + private case class Thunder() extends Capacity("Thunder", Electric, 10, 10, 110) + private case class VineWhip() extends Capacity("Vine Whip", Grass, 25, 25, 45) def apply(name: String): Capacity = name match - case "Vine Whip" => VineWhip() + case "Absorb" => Absorb() + case "Bubble" => Bubble() + case "Bubble Beam" => BubbleBeam() + case "Constrict" => Constrict() + case "Ember" => Ember() + case "Fire Spin" => FireSpin() + case "Rock Throw" => RockThrow() + case "Thunder" => Thunder() + case "Vine Whip" => VineWhip() diff --git a/src/main/scala/backend/Pokemon/Pokemon.scala b/src/main/scala/backend/Pokemon/Pokemon.scala index 8490be2..fe6deae 100644 --- a/src/main/scala/backend/Pokemon/Pokemon.scala +++ b/src/main/scala/backend/Pokemon/Pokemon.scala @@ -1,4 +1,4 @@ -trait Pokemon( // TODO: must add later max_life... +trait Pokemon( private var _name: String, private var _life: Int, val ptype: List[Type], @@ -34,7 +34,7 @@ trait Pokemon( // TODO: must add later max_life... other.decreaseLife(Math.round(damage.toFloat)) - def decreaseLife(x: Int) = this._life = this._life - x + def decreaseLife(x: Int) = this._life = this.life - x override def toString(): String = s"[${this.name}] Life: ${this.life}\nMaxLife: ${this.maxLife}\nAttack: ${this.attack}\nDefense: ${this.defense}\nSpeed: ${this.speed}\n" diff --git a/src/main/scala/backend/Pokemon/PokemonFactory.scala b/src/main/scala/backend/Pokemon/PokemonFactory.scala index 23f8126..88c608a 100644 --- a/src/main/scala/backend/Pokemon/PokemonFactory.scala +++ b/src/main/scala/backend/Pokemon/PokemonFactory.scala @@ -1,8 +1,56 @@ object PokemonFactory: - private case class Bulbasaur() extends Pokemon("Bulbasaur", 11, List(Grass, Poison), List(), 49, 49, 45, 45, 1) - private case class Charmander() extends Pokemon("Charmander", 12, List(Fire), List(), 52, 43, 65, 39, 1) - private case class Squirtle() extends Pokemon("Squirtle", 11, List(Water), List(), 48, 65, 43, 44, 1) + private case class Bulbasaur() + extends Pokemon( + "Bulbasaur", + 11, + List(Grass, Poison), + List( + CapacityFactory("Absorb"), + CapacityFactory("Vine Whip"), + CapacityFactory("Constrict"), + CapacityFactory("Bubble") + ), + 49, + 49, + 45, + 45, + 1 + ) + private case class Charmander() + extends Pokemon( + "Charmander", + 12, + List(Fire), + List( + CapacityFactory("Fire Spin"), + CapacityFactory("Ember"), + CapacityFactory("Rock Throw"), + CapacityFactory("Thunder") + ), + 52, + 43, + 65, + 39, + 1 + ) + private case class Squirtle() + extends Pokemon( + "Squirtle", + 11, + List(Water), + List( + CapacityFactory("Bubble"), + CapacityFactory("Bubble Beam"), + CapacityFactory("Rock Throw"), + CapacityFactory("Absorb") + ), + 48, + 65, + 43, + 44, + 1 + ) def apply(name: String): Pokemon = name match case "Bulbasaur" => Bulbasaur() -- GitLab