Complete lab2

This commit is contained in:
Ivan Zinchenko 2023-10-17 11:23:24 +03:00
parent a8b51c559a
commit e50b766563
Signed by: zinch
GPG Key ID: 6D45AA2C8FD6A37E
19 changed files with 311 additions and 4 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*.iml
out
.idea

View File

@ -1,9 +1,17 @@
import Pokemons.Gallade;
import Pokemons.Kirlia;
import Pokemons.Volcanion;
import ru.ifmo.se.pokemon.*;
// Вариант 6310199
public class Main {
static public void main(String args[]) {
System.out.println("Hello world");
};
}
static public void main(String[] args) {
Battle b = new Battle();
Pokemon p1 = new Gallade("Чужой", 1);
Pokemon p2 = new Volcanion("Хищник", 1);
b.addAlly(p1);
b.addFoe(p2);
b.go();
}
}

24
Moves/Blizzard.java Normal file
View File

@ -0,0 +1,24 @@
package Moves;
import ru.ifmo.se.pokemon.Effect;
import ru.ifmo.se.pokemon.Pokemon;
import ru.ifmo.se.pokemon.SpecialMove;
import ru.ifmo.se.pokemon.Type;
public class Blizzard extends SpecialMove {
public Blizzard() {
super(Type.ICE, 110, 70);
}
@Override
public void applyOppEffects(Pokemon p) {
if (Math.random() < 0.1) {
Effect.freeze(p);
}
}
@Override
public String describe() {
return "близзует";
}
}

24
Moves/BodySlam.java Normal file
View File

@ -0,0 +1,24 @@
package Moves;
import ru.ifmo.se.pokemon.Effect;
import ru.ifmo.se.pokemon.PhysicalMove;
import ru.ifmo.se.pokemon.Pokemon;
import ru.ifmo.se.pokemon.Type;
public class BodySlam extends PhysicalMove {
public BodySlam() {
super(Type.NORMAL, 85, 100);
}
@Override
public void applyOppEffects(Pokemon p) {
if (Math.random() < 0.3) {
Effect.paralyze(p);
}
}
@Override
public String describe() {
return "слэмит";
}
}

18
Moves/CalmMind.java Normal file
View File

@ -0,0 +1,18 @@
package Moves;
import ru.ifmo.se.pokemon.Effect;
import ru.ifmo.se.pokemon.Pokemon;
import ru.ifmo.se.pokemon.Stat;
import ru.ifmo.se.pokemon.StatusMove;
public class CalmMind extends StatusMove {
@Override
public void applySelfEffects(Pokemon p) {
p.addEffect(new Effect().stat(Stat.SPECIAL_ATTACK, 1).stat(Stat.SPECIAL_DEFENSE, 1));
}
@Override
public String describe() {
return "выносит мозг";
}
}

15
Moves/DazzlingGleam.java Normal file
View File

@ -0,0 +1,15 @@
package Moves;
import ru.ifmo.se.pokemon.SpecialMove;
import ru.ifmo.se.pokemon.Type;
public class DazzlingGleam extends SpecialMove {
public DazzlingGleam() {
super(Type.FAIRY, 80, 100);
}
@Override
public String describe() {
return "глемует";
}
}

18
Moves/DoubleTeam.java Normal file
View File

@ -0,0 +1,18 @@
package Moves;
import ru.ifmo.se.pokemon.Effect;
import ru.ifmo.se.pokemon.Pokemon;
import ru.ifmo.se.pokemon.Stat;
import ru.ifmo.se.pokemon.StatusMove;
public class DoubleTeam extends StatusMove {
@Override
public void applyOppEffects(Pokemon p) {
p.addEffect(new Effect().stat(Stat.EVASION, 1));
}
@Override
public String describe() {
return "кооперируется";
}
}

19
Moves/DrainingKiss.java Normal file
View File

@ -0,0 +1,19 @@
package Moves;
import ru.ifmo.se.pokemon.*;
public class DrainingKiss extends SpecialMove {
public DrainingKiss() {
super(Type.FAIRY, 50, 100);
}
@Override
public void applySelfEffects(Pokemon p) {
p.setMod(Stat.HP, -(int)(p.getHP()*0.75));
}
@Override
public String describe() {
return "целует";
}
}

19
Moves/FocusBlast.java Normal file
View File

@ -0,0 +1,19 @@
package Moves;
import ru.ifmo.se.pokemon.*;
public class FocusBlast extends SpecialMove {
public FocusBlast() {
super(Type.FIGHTING, 120, 70);
}
@Override
public void applyOppEffects(Pokemon p) {
p.addEffect(new Effect().chance(0.1).stat(Stat.SPECIAL_DEFENSE, -1));
}
@Override
public String describe() {
return "фокусируется";
}
}

18
Moves/Growl.java Normal file
View File

@ -0,0 +1,18 @@
package Moves;
import ru.ifmo.se.pokemon.Effect;
import ru.ifmo.se.pokemon.Pokemon;
import ru.ifmo.se.pokemon.Stat;
import ru.ifmo.se.pokemon.StatusMove;
public class Growl extends StatusMove {
@Override
public void applyOppEffects(Pokemon p) {
p.addEffect(new Effect().stat(Stat.ATTACK, -6).turns(1));
}
@Override
public String describe() {
return "орёт";
}
}

15
Moves/HydroPump.java Normal file
View File

@ -0,0 +1,15 @@
package Moves;
import ru.ifmo.se.pokemon.SpecialMove;
import ru.ifmo.se.pokemon.Type;
public class HydroPump extends SpecialMove {
public HydroPump() {
super(Type.WATER, 110, 80);
}
@Override
public String describe() {
return "плюётся";
}
}

19
Moves/Swagger.java Normal file
View File

@ -0,0 +1,19 @@
package Moves;
import ru.ifmo.se.pokemon.Effect;
import ru.ifmo.se.pokemon.Pokemon;
import ru.ifmo.se.pokemon.Stat;
import ru.ifmo.se.pokemon.StatusMove;
public class Swagger extends StatusMove {
@Override
public void applyOppEffects(Pokemon p) {
Effect.confuse(p);
p.addEffect(new Effect().stat(Stat.ATTACK, 2));
}
@Override
public String describe() {
return "кичлюет";
}
}

23
Moves/ZenHeadbutt.java Normal file
View File

@ -0,0 +1,23 @@
package Moves;
import ru.ifmo.se.pokemon.Effect;
import ru.ifmo.se.pokemon.PhysicalMove;
import ru.ifmo.se.pokemon.Pokemon;
import ru.ifmo.se.pokemon.Type;
public class ZenHeadbutt extends PhysicalMove {
public ZenHeadbutt() {
super(Type.PSYCHIC, 80, 90);
}
@Override
public void applyOppEffects(Pokemon p) {
if (Math.random() < 0.2) {
Effect.flinch(p);
}
}
@Override
public String describe() {
return "головокрушит";
}
}

14
Pokemons/Gallade.java Normal file
View File

@ -0,0 +1,14 @@
package Pokemons;
import Moves.Swagger;
import ru.ifmo.se.pokemon.Type;
public class Gallade extends Kirlia {
public Gallade(String name, int level) {
super(name, level);
setType(Type.PSYCHIC, Type.FIGHTING);
setStats(68, 125, 65, 65, 115, 80);
addMove(new Swagger());
}
}

12
Pokemons/Kirlia.java Normal file
View File

@ -0,0 +1,12 @@
package Pokemons;
import Moves.DrainingKiss;
public class Kirlia extends Ralts {
public Kirlia(String name, int level) {
super(name, level);
setStats(38, 35, 35, 65, 55, 50);
addMove(new DrainingKiss());
}
}

15
Pokemons/Ralts.java Normal file
View File

@ -0,0 +1,15 @@
package Pokemons;
import Moves.CalmMind;
import Moves.DazzlingGleam;
import ru.ifmo.se.pokemon.Pokemon;
import ru.ifmo.se.pokemon.Type;
public class Ralts extends Pokemon {
public Ralts(String name, int level) {
super(name, level);
setType(Type.PSYCHIC, Type.FAIRY);
setStats(28, 25, 25, 45, 35, 40);
setMove(new CalmMind(), new DazzlingGleam());
}
}

11
Pokemons/Slowking.java Normal file
View File

@ -0,0 +1,11 @@
package Pokemons;
import Moves.FocusBlast;
public class Slowking extends Slowpoke {
public Slowking(String name, int level) {
super(name, level);
setStats(95, 75, 80, 110, 110, 30);
addMove(new FocusBlast());
}
}

16
Pokemons/Slowpoke.java Normal file
View File

@ -0,0 +1,16 @@
package Pokemons;
import Moves.Blizzard;
import Moves.Growl;
import Moves.ZenHeadbutt;
import ru.ifmo.se.pokemon.Pokemon;
import ru.ifmo.se.pokemon.Type;
public class Slowpoke extends Pokemon {
public Slowpoke(String name, int level) {
super(name, level);
setType(Type.WATER, Type.PSYCHIC);
setStats(90, 65, 65, 40, 40, 15);
setMove(new ZenHeadbutt(), new Growl(), new Blizzard());
}
}

16
Pokemons/Volcanion.java Normal file
View File

@ -0,0 +1,16 @@
package Pokemons;
import Moves.BodySlam;
import Moves.DoubleTeam;
import Moves.HydroPump;
import Moves.Swagger;
import ru.ifmo.se.pokemon.*;
public class Volcanion extends Pokemon {
public Volcanion(String name, int level) {
super(name, level);
setType(Type.FIRE, Type.WATER);
setStats(80, 110, 120, 130, 90, 70);
setMove(new Swagger(), new HydroPump(), new BodySlam(), new DoubleTeam());
}
}