Não conseguir deixar o código formatadinho mas ele esta aqui caso queiram testas. ps: sei que existem algumas redundâncias porém o projeto foi realizado para aplicar as praticas aprendidas, espero q gostem da ideia ;D
void main() {
Batman batman = Batman('Bruce wayne', 38, 1.88, 'dinheiro', 100);
Bane bane = Bane('Bane', 40, 1.98, 'Superforça');
batman.setArquiinimigo(bane);
print(batman.armas);
batman.addArmas('katana');
print(batman.armas);
batman.jargao();
if (batman.arquiinimigo != null) {
print(batman.arquiinimigo?.nome);
}
print('\n\n');
bane.setArquiinimigo(batman);
bane.ligarVeneno();
bane.desligarVeneno();
print(bane.nivelForca);
if (bane.arquiinimigo != null) {
print(bane.arquiinimigo?.nome);
}
}
class Personagem {
String nome;
int idade;
double altura;
String superpoder;
Personagem(this.nome, this.idade, this.altura, this.superpoder);
}
abstract class falasCaracteristicas {
void falaAoEntrarEmCombate();
void falaAoGanharOCombate();
void falaAoPerderOCombate();
void jargao();
}
class Heroi extends Personagem {
Vilao? arquiinimigo;
Heroi(String nome, int idade, double altura, String superpoder,
{this.arquiinimigo})
: super(nome, idade, altura, superpoder);
void setArquiinimigo(Vilao arquiinimigo) {
this.arquiinimigo = arquiinimigo;
}
}
class Vilao extends Personagem {
Heroi? arquiinimigo;
Vilao(String nome, int idade, double altura, String superpoder,
{this.arquiinimigo})
: super(nome, idade, altura, superpoder);
void setArquiinimigo(Heroi arquiinimigo) {
this.arquiinimigo = arquiinimigo;
}
}
class Batman extends Heroi implements falasCaracteristicas {
List<String> armas = [
'batarangue',
'bat-garra',
'granade de fumaça',
'taser'
];
int nivelPreparo;
Batman(String nome, int idade, double altura, String superpoder,
this.nivelPreparo,
{super.arquiinimigo})
: super(nome, idade, altura, superpoder);
void addArmas(String arma) {
armas.add(arma);
}
@override
void falaAoEntrarEmCombate() {
print(' I\'m batman');
}
@override
void falaAoGanharOCombate() {
// TODO: implement falaAoGanharOCombate
print(
'Sua compaixão é uma fraqueza que seus inimigos não irão compartilhar');
}
@override
void falaAoPerderOCombate() {
// TODO: implement falaAoPerderOCombate
print('aargh');
}
@override
void jargao() {
print(
'Ou você morre como um herói, ou vive o bastante para se tornar um vilão');
}
}
class Bane extends Vilao implements falasCaracteristicas {
bool isVenonOn = false;
int nivelForca = 10;
Bane(super.nome, super.idade, super.altura, super.superpoder);
@override
void falaAoEntrarEmCombate() {
print('tsss *venon on');
}
@override
void falaAoGanharOCombate() {
print('A paz lhe custou sua força. A vitória derrotou você!');
}
@override
void falaAoPerderOCombate() {
print('nao é... po..ssivel');
}
@override
void jargao() {
print(
'Eu sou a Liga das Sombras. Eu vim cumprir o destino de Ra\'s Al Ghul!');
}
void ligarVeneno() {
isVenonOn = true;
nivelForca += 50;
print('força aumentada para $nivelForca');
}
void desligarVeneno() {
isVenonOn = false;
nivelForca -= 50;
print('veneno desligada, forca atual: $nivelForca');
}
}