public override Acao Executar(Acao animalAntigo) { string animal = this.INTERACAO_COM_USUARIO.aprender("Qual animal você pensou?"); string habilidade = this.INTERACAO_COM_USUARIO.aprender("O que um(uma) " + animal + " faz que o " + animalAntigo.Descricao + " não?"); return criaNovaHabilidadeComAnimais(animalAntigo, animal, habilidade); }
public override Acao Executar(Acao habilidade) { //Mostra pergunta para tentar advinhar o animal, caso advinhe o jogo ganha. //Em caso de erro, o jogo pede para ser ensinado retornando assim o nó de //habilidade e animal aprendido if (MostraPergunta(_PERGUNTA, this.Descricao)) return this.afirmaVitoria.Executar(this); else return this.aprende.Executar(this); }
public override Acao Executar(Acao animal) { //Mostra a pergunta com a habilidade para tentar advinhar o animal //em caso qualquer das resposta, é aqui que acontece a mágia do jogo //ao atribuir o retorno o método Executar para _respostaSim e _respostaNao //o código substitui o nó de animal por um nó de habilidade, fazendo com //que o nó de animal se torne a resposta não do animal pensado. if (MostraPergunta(_PERGUNTA, this.Descricao)) this._respostaSim = this._respostaSim.Executar(null); else this._respostaNao = this._respostaNao.Executar(null); return this; }
private Habilitadade criaNovaHabilidadeComAnimais(Acao animalAntigo, string animal, string habilidade) { Animal novoAnimal = new Animal(new AfirmaVitoria(this.INTERACAO_COM_USUARIO), this, animal, this.INTERACAO_COM_USUARIO); return new Habilitadade(novoAnimal, animalAntigo, habilidade, this.INTERACAO_COM_USUARIO); }
public Habilitadade(Acao respostaSim, Acao respostaNao, string caracteristica, GUI.IInteracaoComUsuario interacaoComUsuario) : base(caracteristica, interacaoComUsuario) { this._respostaSim = respostaSim; this._respostaNao = respostaNao; }
public Animal(AfirmaVitoria afirmaVitoria, Aprende aprende, string descricao, GUI.IInteracaoComUsuario interacaoComUsuario) : base(descricao, interacaoComUsuario) { this.afirmaVitoria = afirmaVitoria; this.aprende = aprende; }
public override Acao Executar(Acao animal) { this.INTERACAO_COM_USUARIO.mostraVitoria(); return animal; }
public abstract Acao Executar(Acao acao);