Introdução a Ciência da Computação

Documentos relacionados
INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL I.E.F.P CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA. Guião do Trabalho Prático

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL I.E.F.P CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA. Guião do Trabalho Prático

Programação Orientada a Objetos. Prof. André Gustavo Duarte de Almeida www3.ifrn.edu.br/~andrealmeida Robocode

Robocode. Manual de Instruções

TT3 TUTORIAL DE ROBOCODE

Administração Central. Unidade do Ensino Médio e Técnico Cetec Capacitações São Paulo

Tutorial ROBOCODE. Quando você executar o Robocode a seguinte tela será exibida:

Administração Central. Unidade do Ensino Médio e Técnico Cetec Capacitações São Paulo

Curso EFA Tecnológico - Técnico de Informática e Sistemas -

Administração Central 2019 São Paulo

Programação de Computadores e Robocode.

Administração Central. Unidade do Ensino Médio e Técnico Cetec Capacitações São Paulo

Introdução ao Robocode: Utilizando Java para construir e destruir robôs. Darielson A. de Souza Luis Bruno P. do Nascimento George Max P.

Tópicos Especiais I - Jogos IA para Jogos

Artigo. Introdução ao Robocode. Versão 1.0 Página 1 de 6

Computação II Orientação a Objetos

Disciplina de Introdução aos Sistemas Robóticos SSC-5887

Material Didático sobre Robocode Tema: Criando Nosso Primeiro Robô

Robocode Build the best, destroy the rest!

Batalhando e Aprendendo com Robocode. Conheça a ti e ao teu inimigo. - Zun Tzu

MOBILE-FURBOT: UMA VERSÃO DO FURBOT PARA CRIAÇÃO DE JOGOS EM DISPOSITIVOS MÓVEIS


Técnicas de Programação II

Disciplina de. Robôs Móveis Autônomos SSC-0714

I Semana de Capacitação. Robocode. Build the Best, Destroy the Rest

Linguagem de Programação II Implementação

Tela Principal do ArgoUML. ArgoUML: Diagrama de Casos de Uso. Elementos do diagrama. Criar um novo diagrama. Elementos do diagrama

OO - Orientação a Objetos

Fís. Semana. Leonardo Gomes (Arthur Vieira)

package especificadores1; public class Alpha { public static void alphapublic(){ System.out.println("Alpha public!"); }

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Fazer explodir a espaçonave inimiga quando um tiro acertá-la.

MARINE COMMANDER 2000

JAVA. Professor: Bruno Toledo

Linguagem de Programação III

Instituto Politécnico de Setúbal. Escola Superior de Tecnologia. Departamento de Sistemas e Informática. Guia para codificação em JAVA

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Programação Gráfica Parte 2 Versão em Java 2006 PUCPR Tutoria de Jogos 1º Ano

Instituto Federal de Educação, Ciência e Tecnologia da Bahia Campus Irecê Disciplina: Linguagem Técnica II Prof o Jonatas Bastos

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Disciplina de. Robôs Móveis Autônomos SSC-0714

Manual do KSpaceDuel. Andreas Zehender Eugene Trounev Tradução: Stephen Killing

ROBÓTICA EDUCACIONAL UTILIZANDO ROBOCODE COMO FERRAMENTA DE ENSINO PARA DIMINUIR A EVASÃO DE ALUNOS NO CURSO DE ENGENHARIA ELÉTRICA.

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Fazer desaparecer da tela do jogo a espaçonave inimiga quando um tiro acertá-la.

Disciplina de. Robôs Móveis Autônomos SSC-0714

Tratamento de Exceções, Multithreads e arquivos (em Java) Programação Orientada a Objetos

Linguagem de Programação III

3. Animação com a metodologia clássica de programação.

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Linguagem de Programação II Implementação

Utilizando Threads em Java

Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista

Reproduzir sons em Java. import java.net.url; import javax.swing.*; import javax.sound.sampled.*; public class ReproduzSons {

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Programação Orientada a Objetos SANTOS, Rafael (PLT)

LÓGICA DE PROGRAMAÇÃO (JAVA) POLIMORFISMO. Professor Carlos Muniz

Orientação a Objetos Básica

Crie seu próprio mundo


Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA

POO29004 Programação Orientada a Objetos

Testes Unitários com JUnit

TIMTec. Introdução à programação em linguagem JAVA

Classes e Objetos. Prof. Fernando V. Paulovich 9 de agosto de 2010

Palavras Reservadas da Linguagem Java

Mecânica 2007/ ª Série

Computação II Orientação a Objetos

Problema do Caminho Hamiltoniano

PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA I

Programação Orientada pelos Objectos. Code Invaders

DELEGAÇÃO REGIONAL DO ALENTEJO CENTRO DE FORMAÇÃO PROFISSIONAL DE ÉVORA

Acertou no que não viu

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Encapsulamento. Alberto Costa Neto DComp - UFS

Composição e Herança. carro meucarro = new carro();

final class UltimosDiasMeses{ static final int[] DIAS_DO_MES = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; }

Modificadores de Acesso e Atributos de Classe

Computação II Orientação a Objetos

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

Introdução à Programação. Estruturas de Repetição

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: insira as propriedades escolhidas aqui FACULDADE DE TECNOLOGIA SENAC PELOTAS

HANDS-ON PROGRAMAÇÃO DE JOGOS PARA CRIANÇAS

Computação II Orientação a Objetos

Recursividade. Objetivos do módulo. O que é recursividade

Interfaces e Classes Internas

EXERCICIO DE JAVA PARA FIXAÇÃO DE CONTEÚDO - Introdução a Prática de Programação Docente Pedro F. Carvalho /

05 Como utilizar POO no ambiente gráfico do C#?

Mapa de Frames: FINAL 1 FINAL 2

Threads. Leonardo Gresta Paulino Murta

Conceitos básicos de Java AULA 02

Linguagem de Programação II Importando Classes/Pacotes

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Comente este desenho (em particular o ciclista).

Transcrição:

Introdução a Ciência da Computação RoboCode Professor: Jairo de Souza / DCC-UFJF 1

Introdução Aplicativo para implementação de estratégia de jogos Cenário: Um campo de batalha entre robôs Para baixar: http://robocode.sourceforge.net/ 2

Abaixo temos a anatomia de um robô Como funciona? 3

O que o robô pode fazer? Pode se movimentar o corpo ou o canhão Pode atirar Pode identificar um inimigo mas só se o canhão estiver apontando pra ele! Sabe se foi atingido por um tiro inimigo Sabe se seu tiro atingiu ou não um inimigo Sabe se bateu no chassi de outro inimigo Sabe se bateu ou não numa parede/muro Sensores do robô 4

Código inicial package Robo1; import robocode.*; import java.awt.color; public class Robo1 extends Robot { public void run() { // A inicialização do robô deve ser colocada aqui e seu código básico também public void onscannedrobot(scannedrobotevent e) { // O que o robô vai fazer quando estiver com outro na mira public void onhitbybullet(hitbybulletevent e) { // O que o robô vai fazer quando for atingido por um tiro public void onbullethit(bullethitevent e) { // O que o robô vai fazer quando seu tiro atinge um robô public void onbulletmissed(bulletmissedevent e) { // O que o robô vai fazer quando o tiro disparado errou o alvo public void onhitwall(hitwallevent e) { // O que o robô vai fazer quando bater um uma parede public void onhitrobot(hitrobotevent e) { // O que o robô vai fazer quando seu robô colide com outro robô 5

Ângulos sempre em sentido horário Sistema de coordenadas 6

Para criar seu primeiro robô: Robot Source Editor File New Robot Nome do robo: MeuPrimeiroRobo Pacote: ufjf Criando seu primeiro robô 7

Criando seu primeiro robô package ufjf; import robocode.*; import java.awt.color; public class MeuPrimeiroRobo extends Robot { public void run() { while(true) { ahead(100); turngunright(360); back(100); turngunright(360); public void onscannedrobot(scannedrobotevent e) { fire(1); public void onhitbybullet(hitbybulletevent e) { back(10); public void onbullethit(bullethitevent e) { public void onbulletmissed(bulletmissedevent e) { public void onhitwall(hitwallevent e) { back(20); public void onhitrobot(hitrobotevent e) { 8

Batalhando Vamos criar uma batalha pra entender o comportamento do seu robô: Atenção: se alterar o código do robô, lembre-se de compilar o código antes de começar a batalha! Battle New Escolha os robôs MeuPrimeiroRobo e Crazy Veja eles batalhando... Repare: Cada tiro disparado pelo seu robô consome uma unidade de energia O robô vai pra frente e pra trás e gira o canhão 360 graus (código em run()) Quando vê o inimigo, atira. Se for atingido pelo tiro, retrocede. 9

Várias funções podem ser usadas: Melhorando seu robô fire(int): quando maior o valor, maior o dono e maior o gasto de energia do robô turnradarleft(double) e turnradarright(double) getbearing(): pega o ângulo do robo escaneado (em relação ao seu robô) getdistance(): pega a distância do robô escaneado (em relação ao seu robô) e.getenergy(): retorna quanto de energia tem o adversário getenergy(): retorna a energia do seu robô E pode programar igual C: variáveis, if, for, while, etc. Dica: quando usar uma função com e. na frente, você está consultando dados do inimigo. Quando não tiver o e. você está consultando dados do seu robô. Exemplo: e.getenergy() vs getenergy() 10

Modificando: só atira se valer a pena package ufjf; import robocode.*; import java.awt.color; public class MeuPrimeiroRobo extends Robot { public void run() { while(true) { ahead(100); turngunright(360); back(100); turngunright(360); public void onscannedrobot(scannedrobotevent e) { if(e.getdistance() < 250) { fire(3); public void onhitbybullet(hitbybulletevent e) { back(10); public void onbullethit(bullethitevent e) { public void onbulletmissed(bulletmissedevent e) { public void onhitwall(hitwallevent e) { back(20); public void onhitrobot(hitrobotevent e) { 11

Modificando: robô perseguidor de tiros package ufjf; import robocode.*; import java.awt.color; import static robocode.util.utils.normalrelativeangledegrees; public class MeuPrimeiroRobo extends Robot { public void run() { while(true) { turngunright(10); public void onscannedrobot(scannedrobotevent e) { if(e.getdistance() < 250) { fire(3); public void onhitbybullet(hitbybulletevent e) { turnright(e.getbearing()); ahead(50); public void onbullethit(bullethitevent e) { public void onbulletmissed(bulletmissedevent e) { public void onhitwall(hitwallevent e) { back(20); public void onhitrobot(hitrobotevent e) { 12

Modificando: robô perseguidor de robôs package ufjf; import robocode.*; import java.awt.color; import static robocode.util.utils.normalrelativeangledegrees; public class MeuPrimeiroRobo extends Robot { public void run() { while(true) { turngunright(10); public void onscannedrobot(scannedrobotevent e) { if(e.getdistance() < 250) { fire(3); double distancia = e.getdistance(); double angulo = e.getbearing(); turnright(angulo); ahead(distancia/2); public void onhitbybullet(hitbybulletevent e) { turnright(e.getbearing()); ahead(50); public void onbullethit(bullethitevent e) { public void onbulletmissed(bulletmissedevent e) { public void onhitwall(hitwallevent e) { back(20); public void onhitrobot(hitrobotevent e) { 13