The document discusses developing applications for the PolarFire® System on Chip (SoC) field programmable gate array (FPGA). It notes that developing for the PolarFire SoC is less complicated than it seems. It covers the functionality of the application and monitor cores, how to develop bare metal applications using SoftConsole IDE, and how to develop FPGA applications using the Libero SoC Design Suite. Examples of driver code and build systems are also provided to simplify the development process for the PolarFire SoC.
Receive side scaling (RSS) with eBPF in QEMU and virtio-netYan Vugenfirer
eBPF is a revolutionary technology that can run sandboxed programs in the Linux kernel without changing kernel source code or loading a kernel module. Receive side scaling (RSS) is the mechanism of packet steering for multi-queue NICs optimizing multiple CPU utilization. The first usage of eBPF in QEMU is the optimization of the RSS packet steering in virtio-net. During this session, Yan will provide the motives for the RSS optimization using eBPF, review the technical solution, describe integration with libvirt, and discuss future development and additional usages of eBPF in QEMU.
This document discusses the SDSoC development environment for designing systems using Xilinx Zynq devices. It provides:
- An overview of the Zynq architecture and its processing system and programmable logic.
- A description of the SDSoC environment which provides an Eclipse-based IDE, compiler toolchain, and infrastructure to develop applications combining a processing system with hardware accelerators.
- An explanation of the SDSoC development flow which allows software functions to be selected for hardware acceleration with automated generation of hardware systems, software stubs, and configuration.
Velodyne VLP-16 and HDL-32 Interface BoxBrett Johnson
The interface box contains circuitry to protect sensors from over and reverse voltage by kicking in protections at 34V and 0.6V that will blow the 3A fuse. When integrating sensors into a custom system, similar circuit protections must be included to prevent damage. The sensors can synchronize data with an external GPS/INS system using a pulse-per-second signal and $GPRMC NMEA message issued at 9600 baud on specified terminals.
This document discusses SR-IOV (Single Root I/O Virtualization) in ACRN. It begins with an introduction to SR-IOV, describing how it allows PCIe devices to be isolated and have near bare-metal performance through the use of Physical Functions (PFs) and Virtual Functions (VFs). It then outlines the SR-IOV architecture in ACRN, including how it detects and initializes SR-IOV devices, assigns VFs to VMs, and manages the lifecycle of VFs. Finally, it provides an agenda for an SR-IOV demo using an Intel 82576 NIC and concludes with a Q&A section.
Tips on High Performance Server ProgrammingJoshua Zhu
This document provides tips and best practices for high performance server programming. It discusses avoiding blocking, using efficient algorithms and data structures, separating I/O from business logic, and tuning for bottlenecks. It also covers various I/O models like blocking, non-blocking, and asynchronous I/O. Key aspects of designing high performance servers include using non-blocking I/O, event-driven architectures, and avoiding excessive threading.
The document discusses developing applications for the PolarFire® System on Chip (SoC) field programmable gate array (FPGA). It notes that developing for the PolarFire SoC is less complicated than it seems. It covers the functionality of the application and monitor cores, how to develop bare metal applications using SoftConsole IDE, and how to develop FPGA applications using the Libero SoC Design Suite. Examples of driver code and build systems are also provided to simplify the development process for the PolarFire SoC.
Receive side scaling (RSS) with eBPF in QEMU and virtio-netYan Vugenfirer
eBPF is a revolutionary technology that can run sandboxed programs in the Linux kernel without changing kernel source code or loading a kernel module. Receive side scaling (RSS) is the mechanism of packet steering for multi-queue NICs optimizing multiple CPU utilization. The first usage of eBPF in QEMU is the optimization of the RSS packet steering in virtio-net. During this session, Yan will provide the motives for the RSS optimization using eBPF, review the technical solution, describe integration with libvirt, and discuss future development and additional usages of eBPF in QEMU.
This document discusses the SDSoC development environment for designing systems using Xilinx Zynq devices. It provides:
- An overview of the Zynq architecture and its processing system and programmable logic.
- A description of the SDSoC environment which provides an Eclipse-based IDE, compiler toolchain, and infrastructure to develop applications combining a processing system with hardware accelerators.
- An explanation of the SDSoC development flow which allows software functions to be selected for hardware acceleration with automated generation of hardware systems, software stubs, and configuration.
Velodyne VLP-16 and HDL-32 Interface BoxBrett Johnson
The interface box contains circuitry to protect sensors from over and reverse voltage by kicking in protections at 34V and 0.6V that will blow the 3A fuse. When integrating sensors into a custom system, similar circuit protections must be included to prevent damage. The sensors can synchronize data with an external GPS/INS system using a pulse-per-second signal and $GPRMC NMEA message issued at 9600 baud on specified terminals.
This document discusses SR-IOV (Single Root I/O Virtualization) in ACRN. It begins with an introduction to SR-IOV, describing how it allows PCIe devices to be isolated and have near bare-metal performance through the use of Physical Functions (PFs) and Virtual Functions (VFs). It then outlines the SR-IOV architecture in ACRN, including how it detects and initializes SR-IOV devices, assigns VFs to VMs, and manages the lifecycle of VFs. Finally, it provides an agenda for an SR-IOV demo using an Intel 82576 NIC and concludes with a Q&A section.
Tips on High Performance Server ProgrammingJoshua Zhu
This document provides tips and best practices for high performance server programming. It discusses avoiding blocking, using efficient algorithms and data structures, separating I/O from business logic, and tuning for bottlenecks. It also covers various I/O models like blocking, non-blocking, and asynchronous I/O. Key aspects of designing high performance servers include using non-blocking I/O, event-driven architectures, and avoiding excessive threading.
O documento discute o jogo Robocode, que é um jogo de programação onde os jogadores criam robôs de batalha em Java para competirem em uma arena virtual. O documento explica:
1) O objetivo de Robocode é desenvolver habilidades de programação através da criação de robôs que competem em batalhas;
2) Os robôs são programados para se movimentarem, atirarem e reagirem a eventos como detectar inimigos ou colidirem com paredes;
3) O jogo é composto por arenas de batal
O documento descreve o jogo Robocode, no qual os jogadores programam robôs autônomos para batalhar em um campo de batalha virtual. Robocode ensina conceitos de programação ao exigir que os jogadores programem robôs para se movimentarem, atirarem e reagirem a eventos durante as batalhas.
O documento apresenta o jogo Robocode, descrevendo seu funcionamento, componentes, métodos e eventos. Explica como instalar e configurar o jogo, criar e personalizar robôs, e participar de batalhas programando a inteligência artificial dos tanques.
O documento apresenta o jogo Robocode, explicando seu funcionamento, componentes, métodos e eventos. Resume os principais pontos como: (1) Robocode é um jogo de programação onde se desenvolve um robô de tanque de guerra; (2) Os robôs são programados para reagirem a eventos em uma arena de batalha; (3) Os componentes principais de um robô são o corpo, arma e radar.
O documento apresenta o jogo Robocode, que ensina programação orientada a objetos de forma divertida através de batalhas entre robôs programados em Java. Robocode permite criar robôs simples e avançados que se movimentam e atiram em uma arena virtual, enquanto aplicam conceitos como classes, herança, eventos e inteligência artificial. O texto também explica como formar equipes de robôs para as batalhas.
O documento apresenta os conceitos e funcionalidades básicas da plataforma de programação de robôs Robocode. Descreve a anatomia de um robô, seus comportamentos, movimentação, disparo, navegação e tratamento de eventos. Também fornece exemplos simples de código para criação de robôs.
Apresentação sobre Robocode que fiz para meus colegas da Faculdade SENAC-RS Pelotas em preparação para a disputa de um campeonato de Robocode durante a semana acadêmica.
O documento discute os desafios da pesquisa e desenvolvimento de robôs móveis e veículos autônomos, apresentando experimentos realizados com veículos terrestres no campus da USP para validar técnicas de localização, mapeamento e navegação autônoma utilizando sensores como laser, câmera e GPS.
Rastreamento 3D de objetos para realidade virtualpichiliani
Esta palestra foi apresentada na trilha de Realidade Virtual do evento TDC 2016 (The Developers Conference) realizado em São Paulo, Brazil. O conteúdo aborda como realizar o rastreamento de objetos 3D para interação em tempo real com realidade virtual
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenziejonathanblacknight
The document provides an introduction to game development using Ogre 3D. It discusses the author's background and game projects, describes key features of Ogre 3D including its multiplatform support and large community, and gives an overview of initializing and using the Ogre 3D API for graphics, input, animation and more.
O documento discute a utilização da realidade aumentada no controle de um drone. Apresenta openFrameworks, Arduino e Firmata para controlar o drone via interface em openFrameworks. Também aborda capturar informações de marcadores via openFrameworks e movimento autônomo de drone com realidade aumentada no loop de controle.
O documento discute o desenvolvimento de jogos usando a engine Ogre 3D. Em três frases, o documento aborda: (1) o contexto da indústria de jogos e curiosidades sobre a área; (2) as principais APIs gráficas, engines físicas e game engines como Ogre 3D; (3) conceitos básicos de computação gráfica para desenvolvimento de jogos.
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santosjonathanblacknight
O documento apresenta as credenciais do autor como desenvolvedor de jogos e descreve dois de seus projetos, Shyds e PontoV. Também fornece detalhes sobre o motor de jogo Ogre 3D e conceitos relacionados ao desenvolvimento de jogos como APIs gráficas, game engines e computação gráfica.
O documento discute os paradigmas de programação imperativo e estruturado, apresentando as linguagens BASIC e FORTRAN como exemplos históricos. Inclui detalhes sobre recursos, comandos, variáveis, entrada/saída e exemplos de código nas duas linguagens.
O documento discute os paradigmas de programação imperativo e estruturado, apresentando as linguagens BASIC e FORTRAN como exemplos históricos. Inclui detalhes sobre recursos, comandos, variáveis, entrada/saída e exemplos de código nas duas linguagens.
O documento resume uma palestra sobre robótica e inteligência artificial, incluindo aplicações da robótica, a plataforma Arduino, impressão 3D, competições de robótica e como a inteligência artificial é usada no projeto RobôCIn.
[MobiTrends] Desenvolvimento de Jogos para Dispositivos MóveisAlvaro Cavalcanti
Palestra sobre desenvolvimento de jogos para dispositivos móveis, apresentada durante o evento MobiTrends, realizado na Faculdade Marista (Recife/PE) em pareceria com o CESAR.Edu.
http://www.cesar.edu,br
http://www.faculdademarista.com.br/
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Praia Grandejonathanblacknight
O documento fornece uma introdução abrangente sobre desenvolvimento de jogos, incluindo a indústria, curiosidades, mitos, ferramentas como Ogre 3D e APIs gráficas, e conceitos básicos de computação gráfica.
RAW é um formato de arquivo bruto que captura todos os dados do sensor da câmera, permitindo maior controle e edição da imagem. Existem vários formatos RAW proprietários de fabricantes como Canon, Nikon, Sony e outros. Arquivos RAW contêm pixels da imagem e metadados sobre configurações da câmera no momento da captura.
O documento descreve as funcionalidades do Microsoft Power BI, uma ferramenta de Business Intelligence que permite transformar dados em informações visuais através de dashboards e relatórios interativos. O Power BI inclui aplicativos para desktop, web e dispositivos móveis que facilitam a análise visual de grandes volumes de dados provenientes de diferentes fontes.
O documento discute o jogo Robocode, que é um jogo de programação onde os jogadores criam robôs de batalha em Java para competirem em uma arena virtual. O documento explica:
1) O objetivo de Robocode é desenvolver habilidades de programação através da criação de robôs que competem em batalhas;
2) Os robôs são programados para se movimentarem, atirarem e reagirem a eventos como detectar inimigos ou colidirem com paredes;
3) O jogo é composto por arenas de batal
O documento descreve o jogo Robocode, no qual os jogadores programam robôs autônomos para batalhar em um campo de batalha virtual. Robocode ensina conceitos de programação ao exigir que os jogadores programem robôs para se movimentarem, atirarem e reagirem a eventos durante as batalhas.
O documento apresenta o jogo Robocode, descrevendo seu funcionamento, componentes, métodos e eventos. Explica como instalar e configurar o jogo, criar e personalizar robôs, e participar de batalhas programando a inteligência artificial dos tanques.
O documento apresenta o jogo Robocode, explicando seu funcionamento, componentes, métodos e eventos. Resume os principais pontos como: (1) Robocode é um jogo de programação onde se desenvolve um robô de tanque de guerra; (2) Os robôs são programados para reagirem a eventos em uma arena de batalha; (3) Os componentes principais de um robô são o corpo, arma e radar.
O documento apresenta o jogo Robocode, que ensina programação orientada a objetos de forma divertida através de batalhas entre robôs programados em Java. Robocode permite criar robôs simples e avançados que se movimentam e atiram em uma arena virtual, enquanto aplicam conceitos como classes, herança, eventos e inteligência artificial. O texto também explica como formar equipes de robôs para as batalhas.
O documento apresenta os conceitos e funcionalidades básicas da plataforma de programação de robôs Robocode. Descreve a anatomia de um robô, seus comportamentos, movimentação, disparo, navegação e tratamento de eventos. Também fornece exemplos simples de código para criação de robôs.
Apresentação sobre Robocode que fiz para meus colegas da Faculdade SENAC-RS Pelotas em preparação para a disputa de um campeonato de Robocode durante a semana acadêmica.
O documento discute os desafios da pesquisa e desenvolvimento de robôs móveis e veículos autônomos, apresentando experimentos realizados com veículos terrestres no campus da USP para validar técnicas de localização, mapeamento e navegação autônoma utilizando sensores como laser, câmera e GPS.
Rastreamento 3D de objetos para realidade virtualpichiliani
Esta palestra foi apresentada na trilha de Realidade Virtual do evento TDC 2016 (The Developers Conference) realizado em São Paulo, Brazil. O conteúdo aborda como realizar o rastreamento de objetos 3D para interação em tempo real com realidade virtual
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenziejonathanblacknight
The document provides an introduction to game development using Ogre 3D. It discusses the author's background and game projects, describes key features of Ogre 3D including its multiplatform support and large community, and gives an overview of initializing and using the Ogre 3D API for graphics, input, animation and more.
O documento discute a utilização da realidade aumentada no controle de um drone. Apresenta openFrameworks, Arduino e Firmata para controlar o drone via interface em openFrameworks. Também aborda capturar informações de marcadores via openFrameworks e movimento autônomo de drone com realidade aumentada no loop de controle.
O documento discute o desenvolvimento de jogos usando a engine Ogre 3D. Em três frases, o documento aborda: (1) o contexto da indústria de jogos e curiosidades sobre a área; (2) as principais APIs gráficas, engines físicas e game engines como Ogre 3D; (3) conceitos básicos de computação gráfica para desenvolvimento de jogos.
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santosjonathanblacknight
O documento apresenta as credenciais do autor como desenvolvedor de jogos e descreve dois de seus projetos, Shyds e PontoV. Também fornece detalhes sobre o motor de jogo Ogre 3D e conceitos relacionados ao desenvolvimento de jogos como APIs gráficas, game engines e computação gráfica.
O documento discute os paradigmas de programação imperativo e estruturado, apresentando as linguagens BASIC e FORTRAN como exemplos históricos. Inclui detalhes sobre recursos, comandos, variáveis, entrada/saída e exemplos de código nas duas linguagens.
O documento discute os paradigmas de programação imperativo e estruturado, apresentando as linguagens BASIC e FORTRAN como exemplos históricos. Inclui detalhes sobre recursos, comandos, variáveis, entrada/saída e exemplos de código nas duas linguagens.
O documento resume uma palestra sobre robótica e inteligência artificial, incluindo aplicações da robótica, a plataforma Arduino, impressão 3D, competições de robótica e como a inteligência artificial é usada no projeto RobôCIn.
[MobiTrends] Desenvolvimento de Jogos para Dispositivos MóveisAlvaro Cavalcanti
Palestra sobre desenvolvimento de jogos para dispositivos móveis, apresentada durante o evento MobiTrends, realizado na Faculdade Marista (Recife/PE) em pareceria com o CESAR.Edu.
http://www.cesar.edu,br
http://www.faculdademarista.com.br/
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Praia Grandejonathanblacknight
O documento fornece uma introdução abrangente sobre desenvolvimento de jogos, incluindo a indústria, curiosidades, mitos, ferramentas como Ogre 3D e APIs gráficas, e conceitos básicos de computação gráfica.
RAW é um formato de arquivo bruto que captura todos os dados do sensor da câmera, permitindo maior controle e edição da imagem. Existem vários formatos RAW proprietários de fabricantes como Canon, Nikon, Sony e outros. Arquivos RAW contêm pixels da imagem e metadados sobre configurações da câmera no momento da captura.
O documento descreve as funcionalidades do Microsoft Power BI, uma ferramenta de Business Intelligence que permite transformar dados em informações visuais através de dashboards e relatórios interativos. O Power BI inclui aplicativos para desktop, web e dispositivos móveis que facilitam a análise visual de grandes volumes de dados provenientes de diferentes fontes.
O documento apresenta um resumo de um minicurso sobre C++. É dividido em sete partes, cobrindo visão geral, fundamentos, estruturas de dados, funções, programação orientada a objetos básica, intermediária e avançada.
O documento discute o papel do arquiteto de software, incluindo a definição de arquitetura de software e estilos arquiteturais. Também aborda a descrição de arquiteturas usando linguagens como ADL e o papel importante do arquiteto de software no projeto de sistemas.
O documento discute os riscos ambientais e à saúde relacionados ao descarte inadequado de resíduos de equipamentos eletroeletrônicos. Ele destaca como países em desenvolvimento, como Gana, Nigéria, Índia, Paquistão e China, recebem grandes quantidades desses resíduos de países desenvolvidos e os processam em condições precárias que expõem trabalhadores e comunidades locais a substâncias tóxicas.
O documento discute o conceito de virtualização, definindo-a como a abstração de uma camada física em diversas camadas lógicas, permitindo que recursos sejam utilizados de forma independente. Explica como a virtualização divide e consolida recursos de hardware e software para criar máquinas virtuais. Apresenta também os benefícios da virtualização como a economia de recursos e a possibilidade de executar múltiplos sistemas operacionais em uma mesma máquina.
Novidades da versão 8 do Java: métodos de extensão para interfaces; expressões lambda; referências para métodos; streams e operações em massa para coleções; e nova API DateTime.
O documento discute o conceito de virtualização, definindo-a como a criação de versões virtuais de hardware, sistemas operacionais ou outros recursos. Explica que a virtualização surgiu na década de 1960 para permitir a divisão de recursos de mainframes entre vários sistemas lógicos. Também apresenta exemplos de aplicações da virtualização como armazenamento, servidores e sistemas operacionais virtuais, além de enumerar vantagens como economia e segurança.
O documento discute carreiras profissionais, incluindo definições, tipos e planejamento de carreira. Também aborda fatores que motivam e desmotivam profissionais, além de dicas sobre educação e especialização.
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfenpfilosofiaufu
Caderno de Resumos XVIII Encontro de Pesquisa em Filosofia da UFU, IX Encontro de Pós-Graduação em Filosofia da UFU e VII Encontro de Pesquisa em Filosofia no Ensino Médio
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoMateusTavares54
Quer aprender inglês e espanhol de um jeito divertido? Aqui você encontra atividades legais para imprimir e usar. É só imprimir e começar a brincar enquanto aprende!
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, Betel, Ordenança para buscar a paz e fazer o bem, 2Tr24, Pr Henrique, EBD NA TV, 2° TRIMESTRE DE 2024, ADULTOS, EDITORA BETEL, TEMA, ORDENANÇAS BÍBLICAS, Doutrina Fundamentais Imperativas aos Cristãos para uma vida bem-sucedida e de Comunhão com DEUS, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Comentários, Bispo Abner Ferreira, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Atividade - Letra da música "Tem Que Sorrir" - Jorge e MateusMary Alvarenga
A música 'Tem Que Sorrir', da dupla sertaneja Jorge & Mateus, é um apelo à reflexão sobre a simplicidade e a importância dos sentimentos positivos na vida. A letra transmite uma mensagem de superação, esperança e otimismo. Ela destaca a importância de enfrentar as adversidades da vida com um sorriso no rosto, mesmo quando a jornada é difícil.
LIVRO MPARADIDATICO SOBRE BULLYING PARA TRABALHAR COM ALUNOS EM SALA DE AULA OU LEITURA EXTRA CLASSE, COM FOCO NUM PROBLEMA CRUCIAL E QUE ESTÁ TÃO PRESENTE NAS ESCOLAS BRASILEIRAS. OS ALUNOS PODEM LER EM SALA DE AULA. MATERIAL EXCELENTE PARA SER ADOTADO NAS ESCOLAS
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...Biblioteca UCS
A biblioteca abriga, em seu acervo de coleções especiais o terceiro volume da obra editada em Lisboa, em 1843. Sua exibe
detalhes dourados e vermelhos. A obra narra um romance de cavalaria, relatando a
vida e façanhas do cavaleiro Clarimundo,
que se torna Rei da Hungria e Imperador
de Constantinopla.
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Revisitando o Robocode
1. Prof. Ms. Peter Jandl Junior
Aula Aberta
Análise e Desenvolvimento de Sistemas
FATEC JundiaíFATEC Jundiaí
2. Já sabemos queJá sabemos que
Matemática,
Física e
Programação
podem ser
uma mistura
09/09/2016(C) 2016 PeterJandlJr 2
uma mistura
muito
interessante!
4. Build the best, destroy the rest!
09/09/2016 4(C) 2016 PeterJandlJr
5. O que é? Jogo de
programação
Objetivo?
programação
Codificar um robô
de batalha para
competir com
outros robôs num
campo de batalha.
Jogadores?
campo de batalha.
Os robôs.
Programador não
controla seu robô!
09/09/2016 5(C) 2016 PeterJandlJr
6. Criador? Mathew Nelson
Onde?
Por que?
Quando?
AlphaWorks/IBM
Performance de
aplicações Java
Competição entre Quando?
2000/2001
Competição entre
desenvolvedores
Ensino de
Programação
09/09/2016 6(C) 2016 PeterJandlJr
Mas vem evoluindo
desde então!
7. Robôs são tanques, capazes de
movimentar-se; movimentar-se;
localizar adversários; e
atirar!
Robôs são dispostos aleatoriamente em
um campo de batalha (battlefield)
retangular sem entradas ou saídas.retangular sem entradas ou saídas.
Controle interno do jogo garante a
distribuição uniforme e regular do tempo
entre os robôs, além de prover sua
visualização (rendering).
09/09/2016 7(C) 2016 PeterJandlJr
8. Robôs são programados via Java para ataque
e defesa. Pontuam ao longo do combate.e defesa. Pontuam ao longo do combate.
Objetivos:
Principal: não ser destruído!
Secundário: destruir!
Vence o robô que acumular mais pontos ao
longo dos diversos rounds da batalha.longo dos diversos rounds da batalha.
O jogador (programador) não tem influência
direta no jogo. Ele deve escrever algum
código "inteligente" para que o robô enfrente
as batalhas realizadas em tempo real.
09/09/2016 8(C) 2016 PeterJandlJr
10. Ambiente
Janela principal com campo de batalha (arena) e Janela principal com campo de batalha (arena) e
controles.
Editor de robôs
Janela secundária independente com acesso a
ferramentas básicas de desenvolvimento.
API (Application Programming Interface) do Robocode
Documentação dos pacotes, classes, interfaces e
exceções que compõem o sistema.
09/09/2016(C) 2016 PeterJandlJr 10
11. Permite:
Criar, abrir e salvar batalhas; Criar, abrir e salvar batalhas;
Pausar, continuar e finalizar batalhas;
Visualizar estatísticas e destruir qualquer robô.
É possível customizar:
Tamanho da arena Tamanho da arena
Número de robôs participantes das batalhas
Número de rounds de cada batalha
E um bom número de outros detalhes.
09/09/2016(C) 2016 PeterJandlJr 11
16. Tamanho default do
campo de batalha 800 x 600 pixelscampo de batalha 800 x 600 pixels
Então:
Distância máxima entre quaisquer dois robôs no
battlefield padrão é menor que 1000.
Qualquer robô pode ser localizado neste tamanho
de campo (raio de varredura = 1200 pixels).de campo (raio de varredura = 1200 pixels).
Além disso:
Radar não detecta balas.
Canhão aquece e impede sequência ilimitada de
tiros.
09/09/2016(C) 2016 PeterJandlJr 16
18. Acerto +3*energia
Erro -energia Erro -energia
Dano -4*energia-2*(energia-1)
Atropelar (ram) +1.2
Colisão (parede) -0.6
Destruição de robô
Por meio de tiro(s) +20% dano causado
Por atropelamento +30% dano causado
Vitória no round +10
09/09/2016(C) 2016 PeterJandlJr 18
19. Uso extensivo de threads.
Gerenciador de Batalha [thread de controle central] Gerenciador de Batalha [thread de controle central]
Controla os robôs e seus disparos.
Efetua a renderização dos robôs na arena.
Robô [thread individual]
Cada robô utiliza uma thread independente.
Método run() contém a lógica executada pelo robô, ou seja,
determina seu comportamento.
Cada robô intercepta e processa seus próprio eventos, utilizando Cada robô intercepta e processa seus próprio eventos, utilizando
uma fila de eventos própria.
Subsistema de Renderização
Baseado no Java2D API.
09/09/2016(C) 2016 PeterJandlJr 19
22. Componentes:
Veículo Veículo
(base móvel)
Canhão giratório
Radar giratório
Elementos do
tanque têmtanque têm
movimento
independente.
09/09/2016(C) 2016 PeterJandlJr 22
23. Energia Inicial 100
Velocidade 8 pixels/turn Velocidade 8 pixels/turn
Velocidade de giro 20°/turn
Velocidade da bala 20 pixels/turn
Energia da bala 0.1 a 3.0
(maior a bala, menor a velocidade)
Raio de varredura 1200 pixels
Dados de varredura distância, nome, Dados de varredura distância, nome,
velocidade,
heading, bearing
e energia
09/09/2016(C) 2016 PeterJandlJr 23
Direção absoluta
do robô e direção
relativa ao robô.
24. Os robôs são construídos a partir de uma
classe padronizada:classe padronizada:
robocode.Robot
Esta classe oferece a infraestrutura básica
para o funcionamento do robô, o que inclui:
informações do robô
ações do robô
controle de eventos
informações do ambiente
09/09/2016(C) 2016 PeterJandlJr 24
25. getX() | getY()
coordenada do robô
getWidth () | getHeight()
ahead(double)|back(double)
movimentação
turnRight(double) | getWidth () | getHeight()
dimensões do robô
getHeading() |
getGunHeading() |
getRadarHeading()
direção do robô, do
canhão e do radar
getVelocity()
turnRight(double) |
turnLeft(double)
gira o robô
turnGunRight(double) |
turnGunLeft(double)
gira o canhão
turnRadarRight(double) |
turnRadarLeft(double)
Informações do Robô Ações do Robô
getVelocity()
velocidade do robô
getEnergy()
energia do robô
turnRadarLeft(double)
gira o radar
scan()
varredura por outros robôs
09/09/2016(C) 2016 PeterJandlJr 25
26. onScannedRobot(
ScannedRobotEvent)
detecção de robô
getBattleFieldWidth() |
getBattleFieldHeight()
largura e altura da arenadetecção de robô
onHitByBullet(
HitByBulletEvent)
robô alvejado por tiro
onHitByRobot(
HitByBulletEvent)
robô colide com robô
onHitWall(
largura e altura da arena
getNumRounds()
núm. de rounds da batalha
getRoundNum()
round da batalha
getTime()
tempo batalha
getOthers()
Controle de Eventos do Robô Informações do Ambiente
onHitWall(
HitWallEvent)
robô colide com parede
getOthers()
núm. atual de oponentes
09/09/2016(C) 2016 PeterJandlJr 26
28. Robôs melhores podem ser construídos a partir de
robocode.AdvancedRobot.robocode.AdvancedRobot.
Esta classe oferece a mesma infraestrutura básica
disponível em robocode.Robot.
Adicionalmente possibilita:
A chamada de ações não bloqueantes, ou seja, permite
que o robô execute ações em paralelo, por exemplo,
andar e atirar.
Operações paralelizáveis tem prefixo set. Operações paralelizáveis tem prefixo set.
Métodos execute() ou waitFor() acionam conjunto
prévio de operações set em paralelo.
Ajustes mais sofisticados, além de obtenção de
informações mais detalhadas.
09/09/2016(C) 2016 PeterJandlJr 28
29. setAhead(double)|
setBack(double)
movimentação para
setTurnRight(double) |
setTurnLeft(double)
gira o robômovimentação para
frente e para trás
setFire(double) |
setFireBullet(double)
dispara o canhão
execute()
executa as ações
agendadas
gira o robô
setTurnGunRight(double)|
setTurnGunLeft(double)
gira o canhão
setTurnRadarRight(double)|
setTurnRadarLeft(double)
gira o radar
Ações Paralelas do Robô Ações Paralelas do Robô
agendadas
waitFor(Condition)
não retorna até a
condição ser alcançada
09/09/2016(C) 2016 PeterJandlJr 29
31. Onde os fracos não tem vez!
09/09/2016(C) 2016 PeterJandlJr 31
32. Batalhas podem
ser:
Como criar:
Janela principalser:
mano a mano ou
com múltiplos
oponentes.
Duração:
Um ou
Janela principal
Battle | New
Selecione os robôs
que competirão
Next
Ajuste número de Um ou
muitos rounds.
Ajuste número de
rounds, tamanho do
campo de batalha e
outros detalhes.
Start Battle
09/09/2016(C) 2016 PeterJandlJr 32
Quanto mais rounds,
menor é a influência da
sorte no resultado final!
34. Na janela
principal:
Escolha um nome:
MFRprincipal:
Robot
Source Editor
Na janela do
editor:
File
MFR
Defina um pacote:
jandl
Edite o código.
File
New
Robot
09/09/2016(C) 2016 PeterJandlJr 34
Aqui começa a diversão!
35. (1) Inicialização
(0) Campos
(2) Loop principal
(1) Inicialização
(3) Varredura
09/09/2016(C) 2016 PeterJandlJr 35
(4) Alvejado por bala
(5) Colisão com parede
36. Área que permite a definição de:
Variáveis e estruturas de dados Variáveis e estruturas de dados
(da classe) do robô.
Podem ser livremente declaradas para
auxiliar no controle do robô e de suas
estratégias de defesa e ataque.
Elementos declarados nesta área serão Elementos declarados nesta área serão
acessíveis em todo código do robô.
09/09/2016(C) 2016 PeterJandlJr 36
38. A inicialização do código de controle do robô
pode ser feita na seção inicial do métodopode ser feita na seção inicial do método
run().
Elementos locais (i.e., válidos apenas neste
método) podem ser acrescentados.
Aqui é colocado o código que necessita ser
executado apenas uma vez para cadaexecutado apenas uma vez para cada
instância do robô, ou seja, para determinar
seu estado inicial.
09/09/2016(C) 2016 PeterJandlJr 38
39. (1) Inicialização Este robô(1) Inicialização Este robô
simples não
requer cuidados
especiais.
09/09/2016(C) 2016 PeterJandlJr 39
40. Laço infinito que determina o
comportamento normal do robô, i.e., aquilocomportamento normal do robô, i.e., aquilo
que o tanque fará quando não está atacando
ou sendo atacado.
Em geral corresponde à movimentação do
robô pelo campo de batalha.
09/09/2016(C) 2016 PeterJandlJr 40
41. (2) Loop principal Comportamento(2) Loop principal Comportamento
normal do robô.
09/09/2016(C) 2016 PeterJandlJr 41
42. Como consequência da movimentação do
radar (de maneira independente ou por meioradar (de maneira independente ou por meio
do giro do tanque), oponentes dentro do raio
de varredura (até 1200 pixels de distância)
serão localizados.
Cada oponente localizado gera um evento
ScannedRobotEvent que é entregue ao robô
por meio do acionamento do métodopor meio do acionamento do método
onScannedRobot(ScannedRobotEvent).
Isto possibilita estabelecer uma estratégia de
ataque dirigida aos oponente localizados.
09/09/2016(C) 2016 PeterJandlJr 42
44. Como padrão, o canhão e o radar se
movimentam junto com o robô.movimentam junto com o robô.
Assim, se a primeira ação em
onScannedRobot(ScannedRobotEvent) for
fire(1), o tiro irá na direção do robô
oponente localizado.
09/09/2016(C) 2016 PeterJandlJr 44
45. Quando o robô é atingido por um tiro
adversário, é gerado um eventoadversário, é gerado um evento
HitByBulletEvent que é entregue ao robô
por meio do acionamento do método
onHitByBullet(HitByBulletEvent).
Isto possibilita estabelecer uma estratégia de
defesa relacionada aos oponentes.
09/09/2016(C) 2016 PeterJandlJr 45
46. (4) Alvejado por bala Foi localizado?
Melhor fugir!
09/09/2016(C) 2016 PeterJandlJr 46
Melhor fugir!
47. Quando o robô colide com uma das parede
que delimitam o campo de batalha é geradoque delimitam o campo de batalha é gerado
um evento HitWallEvent que é entregue ao
robô por meio do acionamento do método
onHitWall(HitWallEvent).
Isto possibilita complementar a estratégia de
movimentação do robô estabelecida no
método run().método run().
09/09/2016(C) 2016 PeterJandlJr 47
49. Editou
Salvou
Errinhos não
contam! Salvou
Compilou
Tá pronto para
contam!
Tá pronto para
batalha!
09/09/2016(C) 2016 PeterJandlJr 49
Robôs criados no
ambiente já estão
disponíveis para novas
batalhas!
51. IDE provê mais
facilidades para o
1. Criação de
projeto emfacilidades para o
desenvolvimento
de robôs.
Pode ser integrado
ao Robocode, sem
necessidade de
qualquer outro
projeto em
localização
externa ao
Eclipse.
2. Inclusão da API
do Robocode.
3. Ligação comqualquer outro
recurso.
São necessários
três passos.
3. Ligação com
documentação da
API.
09/09/2016(C) 2016 PeterJandlJr 51
52. File | New |
Java ProjectJava Project
Escolha o
Project Name
Desmarque
Use default location
Com Browse
selecione diretórioselecione diretório
robots da instalação
do Robocode
Acione Next
09/09/2016(C) 2016 PeterJandlJr 52
53. Selecione aba
LibrariesLibraries
Com Add External
Jars selecione
arquivo robocode.jar
no diretório libs da
instalação doinstalação do
Robocode
Acione Finish
09/09/2016(C) 2016 PeterJandlJr 53
54. No Package Explorer
abra itemabra item
Referenced Libraries
Selecione arquivo
robocode.jar
Com botão direito
acione Properties
Com o Browse Com o Browse
selecione diretório
javadoc do Robocode
Acione OK
09/09/2016(C) 2016 PeterJandlJr 54
56. Editou
Salvou
Errinhos
continuam não
contando!
Salvou
Compilação
automática do IDE
contando!
Tá pronto para
batalha!
09/09/2016(C) 2016 PeterJandlJr 56
Robôs criados dessa forma
também estão disponíveis para
novas batalhas!
57. Tente criar alguns
robôs combinando os
Estude o código dos
robôs exemplo querobôs combinando os
elementos da API.
Observe o
comportamento do
robô e os resultados
obtidos.
robôs exemplo que
acompanham o
Robocode:
sample.Walls
sample.Tracker
sample.Crazy
Combine suas
robocode.Robot
robocode.AdvancedRobot
INICIANTES JOGADORES
Combine suas
estratégias na forma
de novos robôs.
09/09/2016(C) 2016 PeterJandlJr 57
58. Desenvolva novas
estratégias mais
COMPETIDORES
estratégias mais
sofisticadas.
Simule combates e
analise os resultados.
09/09/2016(C) 2016 PeterJandlJr 58