0
respostas

Lista de exercícios = Organizando times de vôlei

import 'dart:convert';
import 'package:http/http.dart';

const String urlGist = 'https://gist.githubusercontent.com/JACursino/13a5ea0140581c345715ab5462c0cb63/raw/03af70f2aed4b5fc874ba4c721fba0cedf2d6df6/players.json';

Future<Map<String, dynamic>> buscarDados() async {
  final resposta = await get(Uri.parse(urlGist));
  if (resposta.statusCode == 200) {
    return jsonDecode(resposta.body);
  } else {
    throw Exception('Falha ao carregar dados (${resposta.statusCode})');
  }
}

Future<void> main() async {
  print('=== Organizador de Times de Vôlei ===\n');

  try {
    Map<String, dynamic> dados = await buscarDados();

    Map<String, dynamic> regras = dados['rules'];
    List<dynamic> jogadores = dados['players'];

    int jogadoresPorTime = regras['playersPerTeam'];

    // Remover quem está descansando
    jogadores = jogadores.where((j) => j['isResting'] == false).toList();

    // Ordenar por quem esperou mais rodadas, e depois por nível de habilidade
    jogadores.sort((a, b) {
      if (a['roundsWaiting'] != b['roundsWaiting']) {
        return b['roundsWaiting'].compareTo(a['roundsWaiting']);
      }
      return b['skillRate'].compareTo(a['skillRate']);
    });

    List<List<dynamic>> times = [];
    for (int i = 0; i < jogadores.length; i += jogadoresPorTime) {
      int fim = (i + jogadoresPorTime < jogadores.length)
          ? i + jogadoresPorTime
          : jogadores.length;
      times.add(jogadores.sublist(i, fim));
    }

    print('\n=== Times formados ===\n');
    for (int i = 0; i < times.length; i++) {
      print('Time ${i + 1}');
      for (var jogador in times[i]) {
        print('  - ${jogador['name']} '
              '(${jogador['position']}, '
              'nível: ${jogador['skillRate']}, '
              'esperas: ${jogador['roundsWaiting']})');
      }
      print('');
    }

  } catch (erro) {
    print('Ocorreu um erro: $erro');
  }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR