Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Classes e Herança

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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');
  }
}
1 resposta
solução!

Olá, Vinicius! Tudo bem?

Primeiramente peço desculpas pela demora em dar um retorno.

Parabéns pelo empenho e pela criatividade, ficou muito bom mesmo!

Sobre deixar o código formatadinho, se estiver falando sobre postar aqui e ficar em formato de código, basta usar 3 crases antes de começar e mais 3 ao terminar o código. Neste artigo você pode ver essas e outras dicas.

Se tiver alguma dúvida conte conosco.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado. ✓