MC336 - Paradigmas de Programação

Turma A - Segundo Semestre de 2009

Voltar à pagina inicial da disciplina

Space Football


O Jogo

Em comemoração ao bicentenário da primeira missão tripulada à Lua, a recém inaugurada plataforma espacial Maracanã II, localizada na órbita de Marte, sediará o primeiro campeonato de Space Football. O esporte substituiu o futebol (e o futebol americano) que foram banidos da Terra no final do século XXI.

O Space Football é disputado por dois times de robôs gigantes, de armaduras azuis e vermelhas (em homenagem aos planetas que disputaram a primeira partida oficial do esporte). Cada robô ocupa uma posição de um campo de batalha quadriculado, formado por n+2 linhas (numeradas de 0 a n+1) e m colunas (numeradas de 1 a m). Cada time possui inicialmente entre m e 2 × m robôs (mesmo número de robôs para cada time).

As posições do campo de batalha são identificadas usando o formato (linha, coluna). Cada time numera as posições do campo de batalha a partir da posição (0,1) que corresponde ao canto inferior esquerdo.

Uma bola é colocada numa posição próxima ao centro do campo. A primeira e a última linha do campo (numeradas como 0 e n+1, respectivamente) representam as áreas de gol (equivalente as end zones, do extinto futebol americano).

Vence o jogo o time que conseguir carregar a bola até a área de gol do jogador adversário (goal victory) ou conseguir matar todos os robôs adversários (destruction victory).

Os times se revezam na realização de jogadas, sendo que cada time realiza uma única jogada de cada vez. Uma jogada pode ser um movimento, um ataque ou um passe.

Um robô pode se movimentar para uma posição livre (sem robôs) à sua frente ou para as diagonais, mas sempre em direção ao gol adversário. Um robô jamais retrocede ou se movimenta para os lados.

Um robô ao ocupar a posição onde se encontra a bola, pega a bola e carrega-a consigo, a menos que seja destruído por um robô adversário ou decida passar a bola para outro robô.

Um robô, que não está carregando a bola, pode destruir (e remover do campo de batalha) um robô adversário que esteja em uma das diagonais a sua frente (a uma posição de distância), ocupando assim a posição onde o robô adversário estava.

O robô que carrega a bola pode se movimentar normalmente, mas não pode atacar nenhum robô adversário.

O robô que carrega a bola pode passar a bola para outro robô que esteja localizado em qualquer posição à sua frente (inclusive nas diagonais), a uma posição de distância.

Caso um robô passe a bola para um robô adversário, o robô que carregava a bola será destruído (e removido do campo de batalha).

Caso um robô alcance a área de gol do jogador adversário, mas não esteja de posse da bola, ele será destruído e removido de campo.

As figuras abaixo ilustram as regras básicas de movimentação, ataque e passe.

Figura 1: Possível configuração inicial do campo de batalha e numeração das posições.
Figura 2: Exemplos de movimentos válidos para robôs brancos sem bola. A seta azul indica os movimentos para posições livres, a seta vermelha para ataques válidos e a seta laranja para ataques suicidas válidos.
Figura 3: Exemplos de movimentos válidos para um robô branco com bola. A seta azul indica os movimentos para posições livres e a seta amarela para passes válidos.
Figura 4: Exemplos de movimentos válidos para um robô branco com a bola. A seta azul indica os movimentos para posições livres e a seta vermelha para ataques válidos.
Figura 5: Todos os ataques válidos de robôs azuis, nesta configuração do campo de batalha.
Figura 6: Exemplos de ataques inválidos.
Figura 7: Todos os passes válidos, nesta configuração do campo de batalha. Note que nos passes feitos para robôs inimigos, o robô azul seria destruído.

Para ajudar o melhor entendimento sobre as regras do jogo, foi desenvolvido um Campo de Batalha Interativo, desenvolvido em Flash.


O Campeonato

Introdução

Cada aluno será reponsável pela implementação de um jogador de Space Football. A competição dar-se-á da seguinte forma. Escolhe-se aleatoriamente uma configuração inicial para o tabuleiro de todas as partidas da competição. Depois, para cada par de alunos, serão realizadas duas partidas:

  1. Jogador 1 com o time azul x Jogador 2 com o time vermelho
  2. Jogador 1 com o time vermelho x Jogador 2 com o time azul

Haverá ainda uma partida extra para cada aluno, onde ele conduzirá o time azul e o time vermelho.

Configuração Inicial do Campo de Batalha

A configuração inicial do campo de batalha seguirá as seguintes regras:

  1. As dimensões do campo de batalha serão escolhidas aleatoriamente. Os números de linhas (n) e de colunas (m) devem estar no intervalo de 5 a 10.
  2. O número de robôs de cada equipe será sorteado no intervalo de m a 2 × m.
  3. Os robôs azuis serão distribuídos aleatoriamente entre as linhas 1 a (n-1)/2 (arredondado para baixo).
  4. Os robôs vermelhos serão distribuídos aleatoriamente entre as linhas (n+1)/2 + 1 (arredondado para cima) a n.
  5. A posição inicial da bola será definida aleatoriamente entre as linhas (n-1)/2 + 1 (arredondado para baixo) e (n+1)/2 (arredondado para cima).

Ou seja, bola e robôs serão sorteados conforme o seguinte quadro:

Linhas (n) Robôs Azuis Bola Robôs Vermelhos
5 1 a 2 3 4 a 5
6 1 a 2 3 a 4 5 a 6
7 1 a 3 4 5 a 7
8 1 a 3 4 a 5 6 a 8
9 1 a 4 5 6 a 9
10 1 a 4 5 a 6 7 a 10

Pontuação nos Campeonatos

Alguns conceitos são necessários para entender a pontuação no campeonato.

A pontuação no campeonato será calculada da forma mostrada a seguir.

  1. Para cada partida, o vencedor recebe um ponto.
  2. Os jogadores são separados em dois grupos:
    • Grupo A: Jogadores com pelo menos 90% de partidas válidas
    • Grupo B: Jogadores com menos de 90% de partidas válidas
  3. Em relação aos jogados do Grupo A, a nota final do campeonato será atribuída da seguinte forma:
    1. O jogador com maior pontuação receberá nota 10.
    2. O jogador com menor pontuação receberá nota 5.
    3. As notas dos demais jogadores serão calculadas proporcionalmente à pontuação obtida em relação aos jogadores com maior e menor pontuação do campeonato.
  4. Os jogadores do Grupo B receberão nota de acordo com a fórmula: 5,0*PV, onde PV é o percentual de partidas válidas realizadas pelo jogador no campeonato.

Nota Final do Aluno

As notas finais de cada projeto de implementação serão calculadas através da média de todos os campeonatos realizados durante 8 dias consecutivos (veja página inicial da disciplina para detalhes sobre as datas dos campeonatos).

O cálculo da média será efetuado da seguinte forma:

  1. Seja C o número de campeonatos realizados no período.
  2. Seja Si a pontuação normalizada de um dado jogador no campeonato i. A pontuação normalizada é dada pela nota no campeonato dividida por 10.
  3. Para cada aluno soma-se a sua pontuação normalizada em todos os campeonatos. O valor do somatório será a pontuação total normalizada do aluno (P).
  4. Seja Max a maior pontuação normalizada total existente (e equivalente a nota 10).
  5. Seja Min = C/2 o score mínimo para um aluno obter nota 5.
  6. A nota final (N) de cada jogador é obtida da seguinte forma:
    1. Se a pontuação normalizada total for menor que Min:
      • N = (P/Min) * 5
    2. Se a pontuação normalizada total for maior ou igual a Min:
      • N = (((P - Min)/(Max - Min)) * 5) + 5

Para submeter um jogador ou acompanhar os resultados dos campeonatos, vá para Marte.