Você está na página 1de 7

FAQ ROBOCODE ( PERGUNTAS FREQUENTES) 1. No consigo instalar o Robocode . Por favor, consulte as instrues em baixar e instalar o site. 2.

Eu fiz o download de um rob da Web , mas eu no sei como us-lo , porque ele no aparecer em qualquer lugar . Por padro, os robs so lidos a partir do / Robocode / diretrio robs. Voc pode selecionar " Robot - > Import Robot Transferido " para copiar um JAR rob para este diretrio a partir de outro local. Alm disso, voc pode configurar o Robocode para ler os robs a partir de locais adicionais usando a caixa de dilogo Propriedades. 3. O que eu tenho que fazer para ver o cdigo fonte de um rob? Voc pode fazer duas coisas. A primeira opo abrir a janela do Editor de Robocode e use o comando no menu Arquivo. A segunda opo abrir o rob de arquivo . Jar" com um utilitrio zip e encontrar o cdigo-fonte no (supondo , claro , o rob open source) . 4. Posso jogar Robocode online? Robocode no um jogo "online", ento voc no pode , por exemplo, compartilhar uma batalha com seus amigos em tempo real atravs da Internet. Mas voc pode fazer upload de seus bots para lugares como o Google Sites ou repositrio Robocode e participar de qualquer das competies existentes, tais como RoboRumble @ Casa, ou organizar um com seus amigos. 5. Tenho visto que muitos robs so empacotados em arquivos . Jar" . Como fao para embalar meu rob ? Selecione " Robot - > Pacote rob para carregar " a partir do menu , em seguida, digite os detalhes do seu rob , quando solicitado. 6. Quando eu testar meus robs, Robocode lento. Existe uma maneira de executar as batalhas mais rpidas? Quando voc est testando o seu rob , voc quer executar muitas batalhas em um curto espao de tempo . Minimizar a tela principal Robocode para torn-lo executar as batalhas em plena velocidade. 7. Eu recebo este erro ao tentar iniciar Robocode: JAVA' no reconhecido como um comando interno ou externo, opervel ou arquivo de lote" Isto causado por um caminho desconhecido para a sua instalao Java. 8. Qual a diferena entre quadros e turno? Um turno se refere a uma unidade, que tambm chamado de volta em Robocode. Durante um turno, voc pode realizar uma ao como um rob, ou vrias

(independente) aes como um AdvancedRobot . Um quadro uma unidade de tiragem para a interface do cliente Robocode. Se voc estiver processando turnos devagar, voc vai ter um quadro por turno. No entanto, se os turnos por segundo, alm da capacidade do seu computador para renderizar os frames, voc vai perder alguns quadros de animao. Isso no vai afetar o comportamento dos robs, a menos que voc tolamente adicionado cdigo em seu OnPaint ( Graphics2D ) mtodo que altera o comportamento do seu rob. Nesse caso, o rob ir se comportar de maneira diferente, dependendo se ou no o boto Paint foi ativado. 9. Posso disparar balas com potncia superior a 3,0 ou inferior a 1,0? No e sim. Voc no pode disparar balas com potncia superior a 3,0 , mas voc pode disparar balas com poder to baixo como 0,1 . Se voc chamar uma funo de disparo (ou seja, setFire ()) , com um valor superior a 3,0 , Robocode ir ajust-lo para 3.0, e se voc cham-lo com uma potncia inferior a 0,1 (exceto 0.0 que no vai disparar ) que ir ajust-lo para 0.1 . Alm disso, voc pode disparar balas com potncia inferior a 0,1 sob uma condio: quando o rob tem menos de 0,1 esquerda energia, caso em que uma bala disparada, no entanto com muita energia o rob tinha deixado. 10. Qual a velocidade de uma viagem de bala? Uma bala viaja a uma velocidade entre 11,0 e 19,7, dependendo do poder. O mais poderoso da bala, o mais lento. A frmula para calcular velocidade = 20 - (3 * de energia). 11. Ser que a velocidade do rob so adicionados velocidade da bala em fogo? No, velocidade da bala no afetada pela velocidade do rob. uma espcie de como a velocidade da luz. 12. Qual o alcance de uma bala? A bala no tem alcance. Isso continua at atingir um rob ou uma parede. 13. Quero disparar uma bala de cada vez, mas eu no posso. Por qu? Toda vez que voc atira, a arma gera um pouco de calor. Voc deve esperar at que ela esfrie. Se voc der uma ordem de fogo quando sua arma estiver quente, ele no far nada. O calor gerado por um tiro 1 + (poder de fogo / 5). A arma esfria a uma taxa de inadimplncia de 0,1 por turno (note que voc pode mudar este parmetro quando voc executar a batalha, mas ningum geralmente faz). Isso significa que voc pode disparar uma bala de potncia 3.0 a cada 16 voltas. 14. Quanto dano que uma bala faz? Como fao para ganhar ou perder energia? Voc perde energia cada vez que voc bater em uma parede, voc atingido por uma bala inimiga, chocar com um inimigo, ou voc disparar sua arma. A quantidade de energia que voc perde por ser atingido de 4 * Potncia bala + 2 * max ( poder bala 1 , 0). Assim, o valor mximo de 16,0. Quando atira , voc gasta uma quantidade de

energia igual potncia da bala disparada . Quando uma das suas balas atinge um inimigo, voc coleta de volta 3 * energia poder bala. Quando voc bate num rob inimigo , cada rob tem 0,6 danos. Se um Rob avanado (mas no um rob ou JuniorRobot ) atinge uma parede , vai demorar max ( abs (velocidade) * 0,5-1 , 0) danos. 15. Algumas vezes eu recebo desativado. O que acontece? Voc no pode se matar, ento quando sua energia cai para zero , porque se voc bater em uma parede ou o atirar , o rob fica desativado. Ele no ser capaz de mover-se nem atirar. Se voc tiver sorte o suficiente e uma das suas balas no ar atinge um inimigo, voc vai ter um pouco de energia para trs e recuperar status desativado. 16. Recebo desativado , mas a minha energia > 0. Por qu? Existem algumas possveis causas. Voc pode ter chamado a getXXX () funo - como getVelocity () - muitas vezes por turno. O limite de 10 mil getXXX () funo chama por turno. Para evitar a desativao, em tais situaes, seja loja retornou valores variveis para uso futuro ou usar um objeto RobotStatus obtidas StatusEvent . Outro caso em que voc pode ser desativado lanar uma exceo, o que pode desativar o rob, mesmo se voc pegar a exceo. Alm disso, se o seu rob fica preso em um loop infinito (ou muito tempo) e ignora muitas voltas , ele tambm pode ficar desativado. 17. Qual a velocidade que eu passo ? Voc pode mover a uma velocidade mxima de 8,0 unidades / volta. Voc pode modificar (para baixo) a sua velocidade mxima usando setMaxVelocity ( ... ) . Note que o bot vai sempre acelerar para alcanar sua velocidade mxima . 18. Qual a velocidade que eu acelerar? Voc acelerar a 1 unidade / volta , e voc desacelerar no 2 unidades / volta . Por exemplo, se voc est se movendo a uma velocidade de 8,0 e inverter a direo de suas velocidades ser [ 6.0, 4.0 , 2.0, 0.0, 1.0, 2.0 , 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] . 19. Qual a velocidade que eu ligo ? Quanto mais rpido voc for, mais lentamente voc virar. A frmula para calcular em graus 10-0,75 * abs (velocidade) .

20. O que do tamanho de um rob? O tamanho de um bot 36x36 . Note-se, este ligeiramente menor do que a imagem do rob. Ele modelado como um quadrado no rotativo, por isso sempre o mesmo, independentemente do seu ttulo .

21. Parece que no segue Robocode fsica padro. Se a minha velocidade 0 e I acelerar (acelerao = 1) minha velocidade final 1, mas deve ser de 0,5 . O que aconteceu?
Tempo em Robocode , em vez de ser contnuo, est em discretas "tiques" . Primeiro acelerao calculado, ento a velocidade, e , em seguida, a posio . Ento se voc est parado em uma posio 0 e voc acelerar um , sua velocidade prxima vez vai ser um e sua posio tambm 1 .

22. Como posso detectar quando um inimigo foi demitido? No h nenhuma maneira direta para detectar quando um inimigo disparou , mas voc pode deduzir que , monitorando a queda de energia inimigo. A queda entre 0,1 e 3 normalmente significa que ele disparou uma bala (pode haver outras razes , tais como a baixa hit bala de energia ou um hit parede). Acessos de parede so mais ( ou menos) , bem detectvel . A desacelerao > 2 significa que o bot bater em uma parede (ou outro bot ) . A desacelerao < = 2 pode ser um simples bot bater os freios , ou bater uma parede em velocidade = 2, mas desde que atingiu uma parede em que a velocidade no vai causar nenhum dano , voc pode ignorar isso. AdvancedRobots tomar abs (velocidade) / 2 - 1 ( Nunca <0) dano ao bater numa parede , por isso, a deteco (significativas ) parede sucessos e ajustando a queda inimigo consequentemente, sucessos de parede podem ser filtrados a maior parte do tempo. Este mtodo falha quando o inimigo bate em outro rob .

23. Como posso detectar a posio e direco de uma bala inimiga ? Voc no pode. No h nenhuma maneira de saber que , direta ou indiretamente. Mas, claro, voc sempre pode adivinhar ... 24. Quo rpido eu posso transformar a minha arma? A arma gira em 20 graus por volta. 25. Quo rpido eu posso transformar o meu radar ? Acontece de 45 graus por volta.

26. Posso saber o ttulo da arma do inimigo / radar ? No. 27. Posso especificar a posio inicial do meu rob ?

No. Os robs so colocados aleatoriamente no campo no incio de cada rodada. 28. O que a diferena entre o setXXX () (por exemplo setFire ()) e o XXX () ( por exemplo, incndios ()) mtodos? Basicamente, os mtodos setXXX () apenas notificar Robocode para tomar alguma ao no final do turno . Os mtodos XXX () do tipo terminar o turno quando voc cham-los, e eles bloqueiam o fio de seu rob at a concluso de comando. A menos que voc tenha uma boa razo , voc deve quase sempre utilizar a verso setXXX () ao escrever AdvancedRobots .

29. Como posso evitar a minha arma / radar girando quando meu rob fica ? Voc pode usar setAdjustGunForRobotTurn () , setAdjustRadarForGunTurn (), e setAdjustRadarForRobotTurn () para controlar isso. Se voc chamar setAdjustGunForRobotTurn () e setAdjustRadarForGunTurn () , voc no precisa chamar setAdjustRadarForRobotTurn ().

30. Por que existem duas funes para getBearing ( ), por exemplo - uma em radianos e um em graus? Existe algum ganho de desempenho se eu usar radianos em vez de graus ? No existe uma verdadeira vantagem de usar um ou o outro . Basta usar o que voc preferir. Muitas vezes, as pessoas comeam a usar graus ( s porque eles se sentem mais confortveis com eles ) e mais tarde mudar para radianos ( porque os clculos so mais fceis , pois voc pode usar o built-in Java funes trigonomtricas ) . Apenas lembre-se de usar sempre ou sempre radianos graus; mistur-los no uma boa idia.

31. Eu preciso traar minhas aes bots e variveis. Vi que todo mundo usa out.println ( "..." ) , mas onde que impresso ? Ela imprime no console rob. Quando voc executa a batalha, basta clicar no boto do lado direito da tela que mostra o nome do seu rob para abrir seu console.

32. Como voc comea o seu radar para manter o foco em um rob que voc definiu como seu alvo? Voc acabou de ligar o radar o contrrio, quando voc digitalizar o bot. Voc bloquear o radar, no transform-lo em 45 graus , mas apenas o arco necessria para manter o foco. Veja a pgina de radar para alguns cdigos de exemplo.

33. Como posso saber quantos inimigos esto no campo de batalha? Voc pode usar o mtodo getOthers () para saber quantos inimigos vivos esto no campo de batalha.

34. Estou tentando reconhecer um inimigo / companheiro de equipe de seu nome (usando e.getName ()) , mas a condio sempre falha . O que est acontecendo ? Por causa da maneira divertida de interpretar referncias para Cordas ( para no mencionar a falta de sobrecarga de operador ) de Java, voc no pode usar uma expresso como if ( e.getName () == testname ) para verificar a igualdade. Voc tem que usar o mtodo Equals () , como no caso ( e.getName (). Equals ( testname ) ) .

35. Como fao para manter os dados de volta para volta e batalha para a batalha? A maneira mais fcil para salvar os dados entre as rodadas de uma batalha fazer com que as variveis na classe bot esttica. Porque Robocode usa um classloader separado para cada rob, as variveis no entraro em conflito , mesmo quando voc tem mais de uma cpia de um rob em uma batalha . Note que isto ir salvar os dados entre os rounds, no entre batalhas. Para salvar entre as batalhas voc ter que salvar em um arquivo. O espao em disco mximo permitido para os arquivos 200k . Olhe para a API Robocode para mais detalhes.

36. Eu recebo a seguinte mensagem quando eu executar o meu bot, e eu no sei como resolv-lo . SISTEMA: Voc fez 10 mil chamadas para mtodos getXX sem chamar execute () SISTEMA: Robot desativado: muitas chamadas para mtodos getXX . Robocode impede de funes como getX () ou getVelocity () muitas vezes durante um nico volta chamada. Ento, se voc estiver usando-os em um ciclo longo , ele vai aumentar esse erro . Na verdade, 95 % do tempo , esse erro um sintoma de um loop infinito em seu bot. Se voc sabe que tem um ciclo longo , mas finito e voc receber esse erro , ou simplesmente atribuir os valores que voc deseja usar para a varivel ou usar um objeto RobotStatus obtidas StatusEvent . 37. Estou usando bulletObject = setFireBullet (power) para disparar , em seguida, eu quero obter as coordenadas de bala. Mas quando eu tento imprimi-los usando System.out.println ( bulletObject.getX () + bulletObject.getY ()) eu recebo um erro . O que h de errado? setFireBullet () cria um objeto de bala , mas a bala no realmente deixar o seu bots arma at a prxima escala , ento voc no pode fazer getX () ou getY () na bala at

ento. Se voc alter-lo para fireBullet () voc deve estar OK , porque a funo no retornar at que a bala est no ar . Se fireBullet () no ir funcionar para voc, voc vai ter que inventar outra forma de se certificar de que voc no faz getX () e getY () em balas at a virada depois de incndio. Por exemplo , voc pode armazenar balas em um ArrayList, e imprimir suas coordenadas antes de disparar em seu loop principal , de modo que um determinado bala ser adicionado ao vetor em um turno , mas no vai ser acessada at a prxima vez quando seu loop principal comea de novo. Como alternativa, o bot pode tentar prever / simular a sua prpria localizao na prxima escala , para saber onde a bala vai ser criado. 38. Eu quero reverter minha direo quando o meu movimento est prestes a terminar . Eu uso algo como if ( getDistanceRemaining () < mnimo) , mas o bot se comporta de uma maneira estranha . O mtodo getDistanceRemaining () ( e , em geral, todos os mtodos que retornam estantes movimentos do corpo , arma, ou radar ) pode retornar um valor positivo ou negativo , dependendo da direo do seu movimento . Use if ( Math.abs ( getGetDistanceRemaining () ) < mnimo) em seu lugar.

Você também pode gostar