Mão na massa

Seu primeiro robô na arena

Do computador desligado até ver o seu robô lutando. São cinco passos e leva menos de dez minutos. O VS Code e o jogo já estão instalados na máquina do laboratório.

1. Abrir o projeto no VS Code

O Visual Studio Code, ou VS Code, é o programa onde se escreve o código. Procure este ícone azul na barra de tarefas ou na área de trabalho. Talvez ele já esteja aberto na máquina.

Ícone do Visual Studio Code

Com o VS Code aberto, vá em File → Open Folder e escolha a pasta Python-Robocode. Essa pasta é o jogo em si.

No VS Code, menu File, opção Open Folder, e a seleção da pasta Python-Robocode
animação Abrindo a pasta do projeto. Escolha a pasta Python-Robocode inteira, não um arquivo solto de dentro dela.
Se aparecer uma pergunta sobre confiar nos autores

O VS Code pergunta se você confia na pasta que está abrindo. Responda que sim, senão ele abre o projeto num modo restrito e o botão de rodar não funciona.

Do lado esquerdo aparece a lista de pastas do projeto, o Explorer. As duas coisas que interessam são:

Robots/
Onde ficam os robôs. É aqui que o seu arquivo vai. Tudo que estiver nesta pasta aparece na lista de robôs do jogo.
main.py
O arquivo que liga o jogo. É ele que você manda rodar.
Explorer do VS Code com a pasta Robots e o arquivo main.py destacados em vermelho
Onde encontrar a pasta Robots e o arquivo main.py.

As outras pastas (Objects/, GUI/, robotImages/) são o motor do jogo. Não precisa mexer em nada ali.

2. Criar o arquivo do seu robô

Clique com o botão direito na pasta Robots e escolha New File. Digite o nome do arquivo com o .py no final e aperte Enter.

Botão direito na pasta Robots, opção New File, e o nome do arquivo sendo digitado
animação Criando o arquivo dentro de Robots/. Repare que o nome é digitado por inteiro, extensão incluída.
Regras para o nome do arquivo
  • Só letras e números, começando por letra. Exemplo: RoboDoTime7.py.
  • Sem espaço, sem acento, sem hífen e sem cedilha. Robô-Caçador.py dá problema; RoboCacador.py funciona.
  • Digite o .py você mesmo. O VS Code não acrescenta sozinho, e sem essa terminação o jogo ignora o arquivo.
  • O arquivo precisa estar dentro de Robots/. Se cair em outra pasta, o jogo não acha ele.

3. Colar um robô que já funciona

Não comece da página em branco. Vá ao kit inicial, copie o RoboAndarilho (ou o RoboVigia, se quiser um que já atire), cole no seu arquivo e mude duas coisas:

Robots/RoboDoTime7.py
from robot import Robot


class RoboDoTime7(Robot):     # troque aqui pelo nome do SEU robô

    def init(self):
        self.setColor(66, 185, 193)    # e troque as cores para as do seu time
        ...
O nome que aparece na arena é o nome da classe

Aquilo que vem depois de class é o nome que vai aparecer em cima do seu robô na arena e na tabela final. Deixe igual ao nome do arquivo, que é o jeito de não se perder. E lembre: um arquivo, um robô. Se você colocar duas classes no mesmo arquivo, o jogo só carrega a primeira.

Depois de colar, salve com Ctrl + S. Enquanto o arquivo tiver alterações não salvas, o VS Code mostra uma bolinha no lugar do X na aba, e o jogo continua carregando a versão antiga.

4. Rodar a arena

Abra o main.py com um clique e depois clique no botão ▷ (Run Python File), no canto superior direito.

Arquivo main.py aberto no VS Code e o botão de play Run Python File sendo clicado
animação Rodando o main.py. O botão fica no alto, à direita, e tem forma de triângulo de play.

A janela do Python Robocode abre. A partir dela:

  1. No menu de cima, vá em Battle → New.
  2. Abre a janela Battle Settings, com as regras da partida. Para testar, pode aceitar tudo como está. Clique em Next: Select Robots.
  3. Na lista da esquerda estão todos os robôs disponíveis. Selecione o seu, clique na seta >> para mandá-lo para a lista da direita, e faça o mesmo com um ou dois adversários. O botão Select All >> joga todos de uma vez.
  4. Clique em Start Battle.
Janela Robot Selection do Python Robocode, com robôs sendo movidos para a lista da direita e o botão Start Battle
animação Escolhendo os robôs e começando a batalha. Só entra na arena quem estiver na lista da direita.

O que tem na janela Battle Settings

CampoO que fazPadrão
Arena sizeTamanho da arena em pixels700 × 500
Number of battlesQuantas partidas seguidas o torneio teráno duelo serão 5
Battle durationTempo máximo de cada partida180 s
Inactive afterQuanto tempo parado até começar a punição15 s
Penalty intervalDe quanto em quanto tempo a punição se repete5 s
Penalty damageVida perdida em cada punição2 HP

Esses são os valores que valem no duelo das 17h00. Enquanto testa, vale mexer: aumentar a duração ajuda a ver o robô por mais tempo, e desligar a punição por inatividade evita ruído enquanto você depura.

Não achou o seu robô na lista?

Quase sempre é uma destas três: o arquivo não está dentro de Robots/; o arquivo não foi salvo; ou o código tem um erro que impediu o jogo de carregá-lo. Nesse último caso, o VS Code mostra no painel Terminal, embaixo, uma linha começando com Problem with bot file e o motivo. Leia essa linha: ela aponta o problema.

5. Entender a tela do jogo

A arena, no centro

Onde a luta acontece. Cada robô mostra o nome em cima e a vida (HP) embaixo. As manchas alaranjadas são os campos de visão dos radares, e elas só aparecem se o robô chamou radarVisible(True).

O painel da direita

Um bloco por robô, com o nome e uma barra de vida que vai do verde ao vermelho. Clique no nome do robô e abre uma janela com as mensagens que ele escreveu com rPrint(). É aqui que você descobre o que ele está pensando.

Game Speed

O controle deslizante que muda a velocidade da partida. Deixe rápido para ver o resultado logo; deixe lento para entender o que o seu robô está fazendo de errado.

Battle's Number

Quantas partidas seguidas serão disputadas. No duelo das 17h00 esse número será 5. Para testar, deixe em 1.

Start Last Battle

Repete a última configuração sem passar pelos menus de novo. Este é o botão que você mais vai usar enquanto ajusta o robô.

Terminate Current Battle

Encerra a partida na hora. Útil quando dois robôs ficam se encarando sem nada acontecer.

O ciclo de trabalho

Daqui para a frente, é sempre a mesma volta, rápida de propósito:

  1. Muda uma coisa no código (uma só, para saber o que causou o quê).
  2. Ctrl + S para salvar.
  3. Fecha a janela do jogo e roda o main.py de novo.
  4. Start Last Battle.
  5. Assiste. Melhorou? Mantém. Piorou? Volta atrás.
Alterou o código? Reinicie o jogo.

A janela do jogo carrega o seu robô quando abre. Mudanças feitas com o jogo aberto não valem para a batalha em andamento. Sempre feche e rode o main.py de novo.