{"id":159,"date":"2011-09-06T12:04:11","date_gmt":"2011-09-06T15:04:11","guid":{"rendered":"http:\/\/liag.ft.unicamp.br\/wp\/robocode\/?page_id=159"},"modified":"2019-04-24T18:42:42","modified_gmt":"2019-04-24T18:42:42","slug":"por-onde-comecar","status":"publish","type":"page","link":"https:\/\/liag.ft.unicamp.br\/robocode\/robocode\/por-onde-comecar\/","title":{"rendered":"Por onde Come\u00e7ar?"},"content":{"rendered":"<h3><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\">Requisitos do Sistema<\/span><\/h3>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Para executar Robocode, Java 5.0 Standard Edition (SE) ou uma nova vers\u00e3o do Java deve ser instalado em seu sistema:<\/span><\/p>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Java Runtime Environment (JRE) ou<\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Java Developer Kit (JDK)<\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Note que o JRE n\u00e3o inclui o compilador Java padr\u00e3o (javac), mas o JDK j\u00e1 o possui. No entanto, Robocode vem com um built-in compilador (TJCE). Por isso, o JRE \u00e9 suficientes para executar o Robocode.<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Observe tamb\u00e9m que \u00e9 importante que estas vari\u00e1veis \u200b\u200bde ambiente sejam criados antes de Robocode em execu\u00e7\u00e3o:<\/span><\/p>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">JAVA_HOME deve ser configurado para apontar para o diret\u00f3rio home para Java (JDK ou JRE).<\/span>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Windows: JAVA_HOME=C:Program FilesJavajdk1.5.0_22<\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">UNIX, Linux, Mac OS exemplo: JAVA_HOME=\/usr\/local\/jdk1.5.0_22<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">PATH deve incluir o caminho para o bin do diret\u00f3rio home Java ( JAVA_HOME ) que inclui java.exe para iniciar a m\u00e1quina virtual Java (JVM).<\/span>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Windows: PATH=%PATH%;%JAVA_HOME%<\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">UNIX, Linux, Mac OS exemplo: PATH=${PATH}:${JAVA_HOME}\/bin<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Se voc\u00ea quiser programar rob\u00f4s em .NET ou por controle de um aplicativo .NET, voc\u00ea precisa instalar o Robocode. API NET plug-in. O plug-in ser\u00e1 instalado clicando duas vezes em robocode.dotnet-xxx-setup.jar da mesma forma que Robocode \u00e9 instalado.<\/span><\/p>\n<h3><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\">Meu primeiro Rob\u00f4<\/span><\/h3>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Para voc\u00ea criar o seu rob\u00f4 para uma batalha no RoboCode, voc\u00ea precisa implementar suas funcionalidades herdando uma classe do pr\u00f3prio robocode, \u00e9 com base nessas classes que voc\u00ea implementa o seu rob\u00f4. A classe mais simples \u00e9 o robocode.Robot, mas antes temos que entender como o funciona o jogo:<\/span><\/p>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\"><strong>Movimentos<\/strong><\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Os rob\u00f4s tanques t\u00eam tr\u00eas tipos de movimentos, s\u00e3o eles:<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">O radar, o canh\u00e3o (torre) e a esteira (rodas), cada uma delas tem movimentos independentes.<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\"><img decoding=\"async\" src=\"https:\/\/felipepriuli.files.wordpress.com\/2010\/11\/definicaotank.png?w=600\" alt=\"\" \/><\/span><\/p>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\"><strong>Tiros<\/strong><\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Os tiros disparados pelo canh\u00e3o possuem um dano especifico e voc\u00ea pode aumentar ou diminuir este dano de acordo com o que voc\u00ea acha necess\u00e1rio, o m\u00e9todo para atirar \u00e9\u00a0<em>fire(1)<\/em>.<\/span><\/p>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\"><strong>Muni\u00e7\u00e3o<\/strong><\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">A muni\u00e7\u00e3o para os tiros disparados na partida \u00e9 a pr\u00f3pria energia do seu robocode. Em outras palavras, se voc\u00ea atirar e errar o tiro, ser\u00e3o descontados da energia do seu rob\u00f4, caso acerte o tiro, no alvo, o dano causado ser\u00e1 convertido para a energia do seu rob\u00f4.<\/span><\/p>\n<h3><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\">M\u00e9todos<\/span><\/h3>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\"><strong>public void run()<\/strong><\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Quando o jogo o come\u00e7a o m\u00e9todo run() \u00e9 invocado pelo Robocode, neste m\u00e9todo ser\u00e1 o inicio da sua implementa\u00e7\u00e3o, \u00e9 ai onde tudo come\u00e7a. Este m\u00e9todo precisa sempre\u00a0estar em execu\u00e7\u00e3o.<\/span><\/p>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\"><strong>onScannedRobot(ScannedRobotEvent e)<\/strong><\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">O m\u00e9todo onScannedRobot(ScannedRobotEvent e) \u00e9 um dos mais importante para a l\u00f3gica do seu rob\u00f4, este m\u00e9todo \u00e9 invocado pelo jogo quando o radar do seu rob\u00f4 encontra um alvo. No par\u00e2metro deste m\u00e9todo \u00e9 enviado um objeto que contem as informa\u00e7\u00f5es de posi\u00e7\u00e3o, nome, velocidade, distancia e outras informa\u00e7\u00f5es do alvo para voc\u00ea conseguir calcular ou montar sua estrat\u00e9gia<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\"><img decoding=\"async\" src=\"https:\/\/felipepriuli.files.wordpress.com\/2010\/11\/1.png?w=600\" alt=\"\" \/><\/span><\/p>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\"><strong>onHitWall(HitWallEvent e)<\/strong><\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Este m\u00e9todo \u00e9 invocado quando o seu rob\u00f4 bater na parede, neste m\u00e9todo voc\u00ea tem que redirecionar o seu rob\u00f4 para n\u00e3o ficar batendo na parede infinitamente.<\/span><\/p>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\"><strong>onHitByBullet(HitByBulletEvent e)<\/strong><\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Quando o seu rob\u00f4 levar um tiro de outro oponente este m\u00e9todo ser\u00e1 invocado, serve para voc\u00ea tentar esquivar ou criar alguma estrat\u00e9gia para fugir dos tiros.<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Estes foram alguns m\u00e9todos, aqueles mais utilizados para montar o um rob\u00f4 para o jogo, existem outros m\u00e9todos que podem ser visto na documenta\u00e7\u00e3o do jogo.<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Os docs das classes e m\u00e9todos para referencia pode ser encontrado no link do jogo: \u00a0<a href=\"https:\/\/felipepriuli.wordpress.com\/2010\/11\/09\/robocode-priulidestroyer\/\">https:\/\/robocode.sourceforge.net\/docs\/robocode\/<\/a><\/span><\/p>\n<h3><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\">Criando meu primeiro rob\u00f4<\/span><\/h3>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">Primeiro vamos extender a classe Robot do robocode, nela vamos sobrescrever o m\u00e9todo run e onScannedRobot, vamos fazer o rob\u00f4 andar para frente, girar a torre 360 graus, e andar para traz e atirar no primeiro alvo que ele encontrar, vamos para o codigo:<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\"><img decoding=\"async\" src=\"https:\/\/felipepriuli.files.wordpress.com\/2010\/11\/myfirstrobot.png?w=600\" alt=\"\" \/><\/span><\/p>\n<p><strong><span style=\"font-family: arial, helvetica, sans-serif; font-size: 18pt;\">Fontes:<\/span><\/strong><\/p>\n<ul>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\"><a href=\"https:\/\/felipepriuli.wordpress.com\/2010\/11\/09\/robocode-priulidestroyer\/\">https:\/\/felipepriuli.wordpress.com\/2010\/11\/09\/robocode-priulidestroyer\/<\/a><\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\"><a href=\"https:\/\/robocode.sourceforge.net\/docs\/ReadMe.html\">https:\/\/robocode.sourceforge.net\/docs\/ReadMe.html<\/a><\/span><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Requisitos do Sistema Para executar Robocode, Java 5.0 Standard Edition (SE) ou uma nova vers\u00e3o do Java deve ser instalado em seu sistema: Java Runtime Environment (JRE) ou Java Developer Kit (JDK) Note que o JRE n\u00e3o inclui o compilador Java padr\u00e3o (javac), mas o JDK j\u00e1 o possui. No entanto, Robocode vem com um [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"parent":1901,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-159","page","type-page","status-publish","hentry"],"wps_subtitle":"","_links":{"self":[{"href":"https:\/\/liag.ft.unicamp.br\/robocode\/wp-json\/wp\/v2\/pages\/159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liag.ft.unicamp.br\/robocode\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/liag.ft.unicamp.br\/robocode\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/liag.ft.unicamp.br\/robocode\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/liag.ft.unicamp.br\/robocode\/wp-json\/wp\/v2\/comments?post=159"}],"version-history":[{"count":1,"href":"https:\/\/liag.ft.unicamp.br\/robocode\/wp-json\/wp\/v2\/pages\/159\/revisions"}],"predecessor-version":[{"id":2915,"href":"https:\/\/liag.ft.unicamp.br\/robocode\/wp-json\/wp\/v2\/pages\/159\/revisions\/2915"}],"up":[{"embeddable":true,"href":"https:\/\/liag.ft.unicamp.br\/robocode\/wp-json\/wp\/v2\/pages\/1901"}],"wp:attachment":[{"href":"https:\/\/liag.ft.unicamp.br\/robocode\/wp-json\/wp\/v2\/media?parent=159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}