COMO PROGRAMAR SEU TIME



Documentos relacionados
Desenvolvimento de Estratégia para Programação do Futebol de Robôs da Mauá

MATERIAL DE APRESENTAÇÃO DO SCRATCH

Quimibol - Revisando a Tabela Periódica

Portal do Projeto Tempo de Ser

Usando o do-file editor Automatizando o Stata

1. A corrida de vetores numa folha de papel.

O momento do gol. Parece muito fácil marcar um gol de pênalti, mas na verdade o espaço que a bola tem para entrar é pequeno. Observe na Figura 1:

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Cobrança Bancária. Contas / Manutenção.

O QUE É A CENTRAL DE JOGOS?

Olá, Professores e Professoras. É um prazer estar aqui com vocês novamente. Sejam bem-vindos!

Como fazer um jogo usando o editor de apresentação

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

TÉCNICAS DE PROGRAMAÇÃO

Manual do Usuário CMS WordPress Versão atual: 3.0

Como produzir e publicar uma apresentação online dinâmica (Prezi)

Configurando o Controle dos Pais no Windows Vista

As 10 Melhores Dicas de Como Fazer um Planejamento Financeiro Pessoal Poderoso

Manual do Software Pctel Supervisor Desktop

Equipe OC- Olimpíadas Científicas

Manual do Instar Mail v2.0

1ºTorneio Bancário Society de Clubes Paulista REGULAMENTO 2015

IMPRESSÃO DE DADOS VARIÁVEIS usando Adobe InDesign e OpenOffice.org

Virtual Box. Guia. Instalação E Utilização. Criado por Wancleber Vieira wancleber.vieira@ibest.com.br

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

4Distribuição de. freqüência

UTILIZAÇÃO DE RECURSOS AVANÇADOS DO EXCEL EM FINANÇAS (PARTE II): ATINGIR META E SOLVER

Início Rápido para o Templo

APÊNDICE. Planejando a mudança. O kit correto

Manual de Publicação Wordpress

Curso destinado à preparação para Concursos Públicos e Aprimoramento Profissional via INTERNET INFORMÁTICA AULA 11

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Manual do Utilizador. Manual do Utilizador Modelo10 no sisgep. Data última versão: Versão : 1.2. Data criação:

TUDO QUE VOCÊ PRECISA SABER PARA GRAVAR SUA ENTREVISTA

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

Unidade 3: Personalizando o Excel *

MANUAL DA SECRETARIA

Programação em papel quadriculado

Montagem e Manutenção. Luís Guilherme A. Pontes

DICAS DE BURACO ONLINE

Manual de Utilizador. Caderno. Recursos da Unidade Curricular. Gabinete de Ensino à Distância do IPP.

Um jogo de preencher casas

MANUAL DE INSCRIÇÃO NAS LINHAS DE AÇÃO PROGRAMA DE INVESTIMENTO SPCINE E BRASIL DE TODAS AS TELAS

DESENVOLVIMENTODE APLICAÇÕESPARAINTERNET:PHP. VitorFariasCoreia

Exemplo: Na figura 1, abaixo, temos: Clique aqui para continuar, que é a primeira atividade que você precisa realizar para iniciar seus estudos.

BSI Letramento Digital Prof. André Di Thommazo. Organização pessoal

OpenOffice Calc Aula 4

PROGRAMAÇÃO BÁSICA DE CLP

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Manual Fácil 1 DOWNLOAD E INSTALAÇÃO. 1. Como faço o download do Jimbo Mobile?

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

MANUAL WEBDRIVE. webdrive.whirlpool.com.br

Tutorial ConvertXtoDVD 3

Inicialmente, faça seu cadastro, depois, use seu CPF e sua Senha para fazer o Login e entrar no sistema quantas vezes quiser.

Como enviar e receber correio eletrónico utilizando o Gmail

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Sumário. 1. Instalando a Chave de Proteção Novas características da versão Instalando o PhotoFacil Álbum 4

Imagens Mentais Por Alexandre Afonso

Movie Maker. Fazer download de vídeos no You Tube. Para publicar no You Tube. O Windows Movie Maker 2 torna fácil para qualquer pessoa

MINISTÉRIO DA SAÚDE. Secretária de Gestão Estratégica e Participativa da Saúde SGEP. Coordenação de Desenvolvimento dos Sistemas de Saúde - CDESS

Mas, como utilizar essa ferramenta tão útil e que está à sua disposição?

Passo a Passo do Cadastro Funcionários no SIGLA Digital

Simulado Informática Concurso Correios - IDEAL INFO

Implementando uma Classe e Criando Objetos a partir dela

Manual do Teclado de Satisfação Online WebOpinião

Curso de Informática Básica

Primeiros passos das Planilhas de Obra v2.6

Apostila 1. (Make Directory AMY - Fazer pasta AMY) C:>CD AMY

Tutorial 7 Fóruns no Moodle

Abordagens Matemáticas e Estatísticas para o Futebol

Esse documento tem como finalidade instruir o usuário de como utilizar e compreender o sistema da Multwear The Best Brands.

Acessando o SVN. Soluções em Vendas Ninfa 2

COMO COMEÇAR 2016 se organizando?

Manual de Utilização do PDV Klavix

MOODLE NA PRÁTICA PEDAGÓGICA

Obedecer é sempre certo

ONG S E ASSOCIAÇÕES. Aproveite bem todas as dicas, fotos e textos deste guia, pois eles são muito importantes.

ALGORITMOS E FLUXOGRAMAS

Manual do Cliente. Alu Tracker Monitoramento Veicular

Curso Juventude Brasileira e Ensino Médio Inovador. Manual do ambiente Moodle

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Notas de Aplicação. Utilização do Driver DDE com Microsoft Excel. HI Tecnologia. Documento de acesso público

Especificação do Trabalho Prático

Personalizações do mysuite

Usando um Simulador da Máquina de Turing Claudio Kirner 2010

Introdução. Introdução. Objetivos da Aula. Bases Computacionais da Ciência(BC-0005)

Laboratório de Engenharia de Software. Tutorial TortoiseSVN

Unidade 1: Em Treinamento

TML 2.3 MANUAL DO PROGRAMA DE ENVIO DE TML RIP Tela 1 - Início Apenas apresentação do Programa

1 ACESSO PARA SECRETÁRIA CONFIGURAR HORÁRIOS DE ATENDIMENTO BLOQUEANDO E HABILITANDO HORÁRIOS PRÉ-DEFININDO PARÂMETROS DE

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

INTRODUÇÃO À ENGENHARIA

Projeto Matemática 5º ano 4ª série. Objetivos

PARADOXO DA REALIZAÇÃO DE TRABALHO PELA FORÇA MAGNÉTICA

Exemplo: O pedido tem a finalidade de atender as necessidades previstas. O pedido tem a finalidade de atender às necessidades previstas.

Índice. 5. Editar as seções de um curso 6. Estruturar o curso 7. Publicar o curso 8. Resumo do Fluxo de criação de um curso no educommons

Treinamento - Union Web

Transcrição:

COMO PROGRAMAR SEU TIME 1) INSTALAÇÃO: Instale o simulador da categoria SIMUROSOT da FIRA. O simulador é gratuito e está disponível para download no site da FIRA (www.fira.net) ou no site da competição (www.campeonato.gprufs.org). 2) ONDE COLOCAR AS ESTRATÉGIAS: Ao instalar o simulador, será criada automaticamente a pasta "Strategy" no diretório "C:\". Dentro dessa pasta existem duas outras pastas: "\blue" "\yellow" Na pasta "C:\Strategy\blue" devem ser colocadas as estratégias para o time azul e na pasta "C:\Strategy\yellow" as estratégias do time amarelo. O simulador só conseguirá ler a estratégias se elas estiverem na pasta correta. 3) ESTRATÉGIAS = ARQUIVOS ".TXT": A estratégia de jogo deve ser escrita em um arquivo ".txt" usando a linguagem lingo, cuja sintaxe é bastante simples e será apresentada no curso preparatório ministrado para os alunos inscritos na competição. O arquivo da apresentação será disponibilizado para os alunos após o curso para que eles possam rever a sintaxe caso tenham alguma dúvida. 4) O CÓDIGO BASE: A organização do campeonato irá fornecer um código base com algumas funções de controle primitivas que permitem controlar mais facilmente o movimento dos robôs do seu time. Esse código base será disponibilizado no site da competição (www.campeonato.gprufs.org) após o término do curso preparatório, onde o uso do código base e suas funções serão apresentados. Para utilizar o código base, faça o download do mesmo no site do campeonato e substitua a pasta "C:\Strategy\" do seu computador pela pasta "Strategy" com os códigos base. Na pasta do código base existe um código base para o time amarelo e um para o time azul. Os dois códigos possuem as mesmas funções de controle. IMPORTANTE: Não troque os códigos do time azul com o do time amarelo, pois isso pode gerar erros na compilação da estratégia por parte do simulador. IMPORTANTE 2: Sempre faça cópias de segurança antes de alterar seu código. Caso algo dê errado será mais fácil de voltar a trás.

5) SOBRE O CÓDIGO BASE: II Campeonato Sergipano de Futebol de Robôs por Simulação Existem algumas regras importantes sobre a programação das estratégias. Leia-as com atenção nas regras da competição!!! Eis aqui algumas das regras mais importantes: Só é permitido mandar comando de velocidade para os robôs utilizando as funções de controle disponibilizadas no código base; Não é permitido modificar ou atribuir valores para as variáveis do jogo (destacadas no começo do código base); Não é permitido passar comandos para os robôs do time adversário; Não é permitido alterar as funções de controle disponibilizadas no código base; Apenas modifique o código base nas partes indicadas, evitando assim que seu time seja punido ou mesmo eliminado da competição! Essas e outras regras de programação serão verificadas antes e depois de cada jogo. Se alguma infração for cometida, a equipe poderá ser punida de acordo com as regras da competição e a gravidade da falta, a ser julgada pela comissão organizadora. Portanto tenha cuidado e siga as regras!!!! 6) SOBRE O SIMULADOR: O uso do simulador é bastante simples e suas funções serão demonstradas durante a apresentação do curso preparatório. O arquivo da apresentação será disponibilizado pela organização após o curso. Com ele os alunos podem rever o que foi mostrado. 7) PLANTÃO DE DÚVIDAS: A organização do campeonato disponibilizará monitores em diversos horários para tirar dúvidas sobre quaisquer questões do campeonato, das estratégias, do código base e/ou do simulador. O horário do plantão de dúvidas será disponibilizado no site da competição após o curso preparatório. Nos horários indicados, os monitores ficarão no Laboratório de Pesquisa do Departamento de Engenharia Elétrica da UFS (LABIC-DEL/UFS) à disposição dos alunos de todas as equipes. Outra forma de tirar as suas dúvidas sem precisar ir à universidade é através do nosso e-mail (campeonato@gprufs.org) ou através do Facebook do campeonato.

8) AS VARIÁVEIS DO JOGO: II Campeonato Sergipano de Futebol de Robôs por Simulação O jogo possui algumas variáveis que não devem ser alteradas, mas podem, e devem, ser utilizadas na elaboração das estratégias. A principal delas é a bola (variável "ball"). Além da bola temos os robôs e algumas coordenadas do campo, mostradas a seguir. a) Variáveis dos robôs do time amarelo: Imagem Do robô Nome da variável Y1 Y2 Y3 Y4 Y5 b) Variáveis dos robôs do time azul: Imagem Do robô Nome da variável B1 B2 B3 B4 B5 c) Variáveis que definem posições fixas do campo:

FTOP: é a coordenada y da linha que delimita a parte de cima do campo, representada no plano cartesiano indicado na figura; FBOT: é a coordenada y da linha que delimita a parte de baixo do campo, representada no plano cartesiano indicado na figura; GTOP: é a coordenada y da trave superior do gol, representada no plano cartesiano indicado na figura; GBOT: é a coordenada y da trave inferior do gol, representada no plano cartesiano indicado na figura; FLEFTX: é a coordenada x da linha que delimita o campo pela esquerda, representada no plano cartesiano indicado na figura; FRIGHTX: é a coordenada x da linha que delimita o campo pela direita, representada no plano cartesiano indicado na figura. 9) COMO USAR AS VARIÁVEIS DO JOGO: As variáveis do jogo podem ser utilizadas de diferentes formas, como mostrado no curso preparatório. Alguns exemplos são mostrados aqui: y4.pos.x ---> é a posição x do robô y4 no plano cartesiano do campo; y4.pos.y ---> é a posição y do robô y4 no plano cartesiano do campo; y4.rot.z ---> é o ângulo θ do robô y4 em relação ao eixo x do plano cartesiano do campo; A coordenada x da linha do meio do campo pode ser calculada por = (frightx + fleftx)/2.

10) O TIME AZUL E O TIME AMARELO: Em cada partida, a equipe irá disputar dois tempos de jogo. No primeiro tempo jogará com uma cor e no segundo tempo jogará com a outra cor, sendo que o amarelo sempre ataca para a direita e o azul sempre ataca para a esquerda. Tendo isso em conta, é importante lembrar às equipes que elas devem preparar as estratégias da forma mais geral possível, permitindo assim uma adaptação mais fácil da estratégia para as duas cores de time. IMPORTANTE: Cuidado ao "traduzir" a estratégia do azul para o amarelo e vice-versa. Se você, por exemplo, esquecer um comando para um jogador do time azul no meio da sua estratégia para o amarelo sua equipe poderá ser desclassificada. 11) SINTAXE BÁSICA: A sintaxe de uma linguagem de programação é a forma utilizada para definir os comandos dentro dessa linguagem. No caso do LINGO, que é a linguagem utilizada no nosso simulador, alguns comandos são muito importantes e úteis e são listados na tabela a seguir (outros comandos podem ser encontrados na apresentação do curso preparatório e no help do simulador). COMANDO SIGNIFICADO + Operação de adição - Operação de subtração * Operação de multiplicação / Operação de divisão sqrt(a) -- Indica um comentário (utilize isso nas linhas que você quiser que o simulador não leia), por exemplo: --Essa linha não faz parte da estratégia! > Comparação: maior que < Comparação: menor que = Pode ser usado como comparação: igual a = Pode ser usado como operação de atribuição, utilizada para guardar um valor em uma variável qualquer, por exemplo: Tamanho = 5

12) AS FUNÇÕES DE CONTROLE: As funções de controle são aquelas funções definidas no código base e que não devem ser alteradas. Essas funções são a única forma possível de movimentar os seus robôs respeitando as regras. Na categoria SIMUROSOT da FIRA para mandar um robô se movimentar é utilizado o comando "velocity(robô,vr,vl)". A sua sintaxe não é detalhada pois, na nossa competição, esse comando é proibido. A única forma de mandar velocidade para os robôs é utilizando as funções de controle definidas no código base. Essas funções e suas características são apresentadas a seguir. a) Função vai_para: sintaxe: vai_para(robô, posicao.x, posicao.y, aceleração) faz com que o "robô" vá para a posição do plano cartesiano especificada por "posicao.x" e "posicao.y" com a "aceleração" indicada. "robô" = deve ser um robô do seu time. "posicao.x" e "posicao.y" = podem representar um ponto fixo (por exemplo, o meio do campo ou o centro do gol) ou até a bola, fazendo com que o robô vá até ela. "aceleração" = define o quão rápido o robô ganha velocidade. Deve ser um valor entre 0 (aceleração mínima) e 125 (aceleração máxima). A função vai_para possui uma velocidade mínima definida para o robô. Dessa forma, mesmo enviando um comando com "aceleração = 0" o robô, ainda assim irá se movimentar com a velocidade mínima definida na função. A velocidade mínima da função vai_para não pode ser alterada. b) Função olhar_para: sintaxe: olhar_para(robô, posicao.x, posicao.y) faz com que o "robô" "olhe" para a posição do plano cartesiano especificada por "posicao.x" e "posicao.y", sem sair do seu lugar. "robô" = deve ser um robô do seu time. "posicao.x" e "posicao.y" = podem representar um ponto fixo (por exemplo, o meio do campo ou o centro do gol) ou até a bola, fazendo com que o robô vá até ela. c) Função andar_frente: sintaxe: andar_frente(robô, velocidade) faz com que o "robô" ande para frente com a "velocidade" especificada. "robô" = deve ser um robô do seu time. "velocidade" = define a velocidade do robô. Deve ser um valor entre 0 (velocidade mínima) e 125 (velocidade máxima).

*** ONDE É A FRENTE DO ROBÔ??? é possível identificar a frente pela posição das rodas (pequeno círculo vermelho na lateral do robô) e pela cor do robô, com indicado no exemplo da figura abaixo. d) Função andar_fundo: sintaxe: andar_fundo(robô, velocidade) faz com que o "robô" ande para trás com a "velocidade" especificada. "robô" = deve ser um robô do seu time. "velocidade" = define a velocidade do robô. Deve ser um valor entre 0 (velocidade mínima) e 125 (velocidade máxima). e) Função girar_horario: sintaxe: girar_horario(robô, velocidade) faz com que o "robô" gire em torno do próprio eixo no sentido horário com a "velocidade" especificada. "robô" = deve ser um robô do seu time. "velocidade" = define a velocidade de rotação do robô. Deve ser um valor entre 0 (velocidade mínima) e 125 (velocidade máxima). f) Função girar_antihorario: sintaxe: girar_antihorario(robô, velocidade) faz com que o "robô" gire em torno do próprio eixo no sentido anti-horário com a "velocidade" especificada. "robô" = deve ser um robô do seu time. "velocidade" = define a velocidade de rotação do robô. Deve ser um valor entre 0 (velocidade mínima) e 125 (velocidade máxima). g) Outras funções: Existem outras funções definidas no código base que não as funções de controle. Estas funções são funções auxiliares utilizadas dentro das funções de controle aqui definidas. Os parâmetros, e para que servem essas funções, são definidos no próprio código base na forma de comentários.

13) PROGRAMA PARA ESCREVER A ESTRATÉGIA (opcional): Uma vez que a estratégia e feita utilizando um arquivo ".txt", qualquer editor de bloco de notas pode ser utilizado para escrever as estratégias. No entanto, existem algumas vantagens em utilizar um editor um pouco melhor, mesmo dando um pouco mais de trabalho. A principal vantagem é que, utilizando um bloco de notas padrão, um fragmento do seu código ficaria assim:... ----------------------------- AQUI COMEÇA A SUA ESTRATÉGIA ------------------------ andar_frente(y2,10) andar_fundo(y3,10)... Utilizando um editor de texto que "entenda" que o que você está escrevendo é um programa em LINGO, seu fragmento de programa ficaria assim:... ----------------------------- AQUI COMEÇA A SUA ESTRATÉGIA ------------------------ andar_frente(y2,10) andar_fundo(y3,10)... Apesar de a diferença ser apenas visual, as cores inseridas por um editor especializado podem ajudar muito a encontrar erros no seu programa e a escrever um código mais organizado, além de separar bem o que é comentário do que é estratégia de fato. Infelizmente, um editor para LINGO não é algo muito fácil de encontrar. Por isso, fizemos uma pequena modificação para o programa "notepad++" que permite algumas facilidades visuais para a edição do seu programa. Caso se interesse, o programa para editar o código com cores pode ser baixado no nosso site (www.campeonato.gprufs.org) juntamente com as instruções de instalação.

14) EXEMPLO DE ESTRATÉGIA: II Campeonato Sergipano de Futebol de Robôs por Simulação Nessa seção final faremos um exemplo de uma estratégia básica, apenas para ilustrar a utilização das funções e mostrar que, mesmo não podendo utilizar o comando "velocity" (como explicado anteriormente), é possível criar funções que ajudam na organização do código. Por questão de simplicidade, faremos um exemplo de estratégia para o time azul. Nesse caso utilizaremos o arquivo "codigobaseazul.txt" que se encontra na pasta "C:\Strategy\blue". A parte destinada para a estratégia está destacada no código (ver figura abaixo). Vamos fazer inicialmente o robô b2 ir atrás da bola com uma aceleração igual a 80. Para isso usaremos a função "vai_para" da seguinte forma: vai_para(b2, ball.x, ball.y, 80) Faremos também o robô b3 e o robô b4 ficarem apenas olhando para a bola. para isso usaremos a função "olhar_para" da seguinte forma: olhar_para(b3, ball.x, ball.y) olhar_para(b4, ball.x, ball.y) Como não foram mandados comandos para os outros robôs, eles irão continuar fazendo a última ação que foi ordenada. Como eles estavam parados continuarão parados quando começar o jogo. A estratégia então ficaria da seguinte forma:

É possível ainda fazer com que, a depender de uma condição, o robô faça coisas diferentes. Por exemplo, vamos fazer com que o robô b5 corra atrás da bola com aceleração máxima se ela estiver no seu campo de ataque (campo da esquerda) e se ela estiver no seu campo de defesa (campo da direita) ele fique parado. Para montar este código, primeiro precisamos saber onde é o meio de campo no jogo. Precisamos apenas da coordenada x do meio de campo. Podemos calcular o valor do meio de campo a partir dos valores da parede da esquerda ("fleftx") e da parede da direita ("frightx"). Como o meio de campo fica exatamente na metade do campo, o valor da sua coordenada x pode ser obtido pela média entre "fleftx" e "fright". Assim, o código para isso seria: meio_de_campo = (fleftx + frightx)/2 Agora que temos a posição do meio campo em uma variável podemos utilizar um "if" para comparar com a posição da bola (também no eixo x). Então o código ficaria: if ball.x > meio_de_campo then -- se a bola estiver na defesa andar_frente(b5,0) -- o robô fica parado (anda com velocidade zero) else -- senão vai_para(b5, ball.x, ball.y, 125) -- vai para a bola com aceleração máxima end if -- final do "se"

Isso no nosso programa ficaria assim: Essa é a ideia de estratégia que vocês precisam. A partir daqui fica por conta da criatividade de vocês!!! Testem as possibilidades! Pensem em todas as perguntas e variáveis que envolvem um jogo de futebol e tentem respondê-las. Como defender? Como atacar? Quantos zagueiros? E atacantes? Que comportamento um goleiro precisa ter? Enfim... divirtam-se e elaborem um grande time de futebol de robôs para ganhar essa competição!!!!