void main() {
Axe machado = Axe('Machado Comum', 1.5, 30);
HandAxe handAxe = HandAxe('Hand Axe', 1.0, 45);
machado.infGuns();
machado.pAtaque();
machado.mAtaque();
machado.ataque();
handAxe.infGuns();
handAxe.pAtaque();
handAxe.mAtaque();
handAxe.ataque();
}
class Guns implements Attack {
String name;
double weight;
double pCut;
Guns(this.name, this.weight, this.pCut);
void infGuns() {
print(
'Sua arma $name que pesa $weight kg e tem a porcetagem de corte $pCut %\n');
}
@override
void pAtaque() {
print('Você pega o $name e o(a) levanta\n');
}
@override
void mAtaque() {
print('Após levantar você curva os braços segurando o $name com força\n');
}
@override
void ataque() {
print('Em um golpe curto e seco você crava o $name em seu inimigo\n');
}
}
class Axe extends Guns {
Axe(String name, double weight, double pCut) : super(name, weight, pCut);
}
class HandAxe extends Axe {
HandAxe(String name, double weight, double pCut) : super(name, weight, pCut);
@override
void mAtaque() {
print(
'Ao levantar você percebe um racho no cabo, mas mesmo assim continua\n');
super.mAtaque();
}
@override
void ataque() {
print(
' Ao tentar atacar com a fissura presente no cabo, ele acaba quebrando, e seu inimigo lhe bate!');
}
}
abstract class Attack {
void pAtaque();
void mAtaque();
void ataque();
}