1
resposta

Consegui fazer o exercicio 3 porem algumas duvidas.

Achei muito interessante o exercicio 3 e tentei faze-lo.

import 'dart:io';

class WhatYouCanToDoQuestions{
  String whatQuestion = 'oque voce sabe?';
  String question;
  String kakoBot = 'KakoBOT:\n';
  bool isThisAWhatQuestion = false;

  WhatYouCanToDoQuestions(this.question);

  bool isThisAWhatQuestionFunc(){
    //verificar se estamos numa pergunta sobre o time que o robo torce
    if (
    question.contains('sabe') ||
        question.contains('fazer')) {
      isThisAWhatQuestion = true;
    }
    return isThisAWhatQuestion;
  }

  whatCanQuestion() {

    if (question == whatQuestion) {

      String _botAnswer = kakoBot + ' Eu sei muitas coisas, sei te dizer as horas, o ano, ate torco para um clube. Porem estou sempre aprendendo.';
      print(_botAnswer);
    } else {
      unsure();
    }
  }

  unsure() {
    if (question.contains('o que') || question.contains('sabe')) {

      String _botQuestion =
          kakoBot + ' Não entendi, você quer saber o que consigo fazer?';
      print(_botQuestion);
      String answer = stdin.readLineSync().toString();
      if (answer.contains('Sim') || answer.contains('sim')) {

        String _botAnswer = kakoBot + ' Entendi, Eu sei muitas coisas, sei te dizer as horas, o ano, ate torco para um clube. Porem estou sempre aprendendo.';
        print(_botAnswer);
      } else {
        String _botAnswer = kakoBot + ' Ah, foi mal... entendi errado.';
        print(_botAnswer);
      }
    }
  }
}

import 'dart:io';

import 'questions/time_questions.dart';
import 'questions/club_questions.dart';
import 'questions/what_can_it_to_do.dart';
import 'timing/waiting_time.dart';



void main() async {
  String kakoBot = 'KakoBOT:\n';
  var a = true;
  String usuario = '';
  
  // var myStream = BotClock().kakoBotStrem(1, 10); // no intervalo de 1 segundo por 10 segundos vai ficar aberto.
  // var subscriber = myStream.listen((event) { // quando o subscriber tiver escutando vai printar que o kakobot vai ta ativo por tantos segundos
  //   print('                                             Kakobot is activated for $event seconds.');
  // }, onDone: () {
  //   print('KakoBot is finishing its works, ask the last question');
  //   a = false;
  // });
  
  print('-- Iniciando o KakoBOT, aguarde..--');
  await BotClock().clock(2);
  print('KakoBOT:\n Oi :) \n Como posso ajudar?');
  do {
    usuario = stdin.readLineSync().toString();
    print('-- Processando pergunta, aguarde..--');
    await BotClock().clock(1);
    if (usuario.contains('xau') ||
        usuario.contains('Xau') ||
        usuario.contains('Adeus') ||
        usuario.contains('adeus')) {
      a = false;
      print(kakoBot + ' Até a proxima!!');
    } else if (TimeQuestions(usuario).isThisTime()) {
      // verificar antes, assim não fazemos toda a função sem precisar.
      await BotClock().clock(2);
      TimeQuestions(usuario).timeQuestion();
    } else if (ClubQuestions(usuario).isThisClub()) {
      //Basta adicionar novas perguntas aqui!
      ClubQuestions(usuario).clubQuestion();
    } else if (WhatYouCanToDoQuestions(usuario).isThisAWhatQuestionFunc()){
      WhatYouCanToDoQuestions(usuario).whatCanQuestion();
    }else {
      await BotClock().clock(2);
      print(kakoBot +
          ' Não fui treinado para responder a essa pergunta \n Desculpe :( ');
      print(kakoBot + ' Você pode fazer outra pergunta ou dizer Adeus');
    }
  } while (a);

  print('--Encerrando KakoBOT--');
}

Tentei fazer os exercicios de calcular e jokenpo, porem no exercicio de calcular nao consegui pegar os numeros do user, e do jokenpo nao entendi a logica.

1 resposta

Olá, Wesley!

Fico feliz em saber que você está se interessando pelos exercícios do curso Dart: entendendo assincronismo. Vou tentar ajudar com suas dúvidas sobre os exercícios de calcular e jokenpo.

No exercício de calcular, você mencionou que não conseguiu pegar os números do usuário. Para resolver esse problema, você pode utilizar a função stdin.readLineSync() para ler a entrada do usuário e, em seguida, converter essa entrada para o tipo de dado que você precisa. Por exemplo, se você precisa ler dois números inteiros, você pode fazer algo assim:

print('Digite o primeiro número:');
int numero1 = int.parse(stdin.readLineSync());

print('Digite o segundo número:');
int numero2 = int.parse(stdin.readLineSync());

// Agora você pode fazer as operações matemáticas com os números lidos

No exercício do jokenpo, você mencionou que não entendeu a lógica. Para implementar o jogo de pedra, papel e tesoura, você pode utilizar uma estrutura condicional (if/else) para verificar as possíveis combinações de jogadas e determinar o vencedor. Aqui está um exemplo básico de como você pode fazer isso:

print('Escolha sua jogada: pedra, papel ou tesoura');
String jogadaUsuario = stdin.readLineSync();

// Gere uma jogada aleatória para o KakoBot
List<String> jogadasPossiveis = ['pedra', 'papel', 'tesoura'];
String jogadaKakoBot = jogadasPossiveis[Random().nextInt(jogadasPossiveis.length)];

// Verifique quem venceu
if (jogadaUsuario == jogadaKakoBot) {
  print('Empate!');
} else if ((jogadaUsuario == 'pedra' && jogadaKakoBot == 'tesoura') ||
           (jogadaUsuario == 'papel' && jogadaKakoBot == 'pedra') ||
           (jogadaUsuario == 'tesoura' && jogadaKakoBot == 'papel')) {
  print('Você venceu!');
} else {
  print('KakoBot venceu!');
}

Espero que essas dicas te ajudem a resolver suas dúvidas nos exercícios. Se tiver mais alguma pergunta, é só me dizer. Espero ter ajudado e bons estudos!