• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

duvida - como fazer plotings de variaveis de estado?

7 mensagens neste tópico

Viva... está aqui um problema complexo... como o robocode está feito torna-se um pouco dificil de conseguir isto.

Por exemplo, eu queria fazer um traçado do calor da arma durante todo o tempo da batalha. O traçado pode ser feito de 1001 formas isso não é o problema. O que me está a dar cabo da cabeça é descobrir como posso executar codigo uma vez por turno, de forma a guardar uma amostra por turno.

alguma sugestão?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi bem o que queres fazer, estás a falar de acções de um robô ou de mexer no código do motor?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois... o problema é que nao sei como atingir este objectivo.

Uma solução boa seria enviar numeros em ascii para o output e depois carrega-los para o matlab por exemplo.

Preferia fazer isso no robot, por razões de simplicidade... mas nao sei se é possivel.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cada turno é uma chamada ao método run dos robôs, basta que guardes os dados nessa altura.

A classe AdvancedRobot deve ter métodos mais úteis para o que queres fazer, por exemplo o método getDataFile com o qual podes obter um RobocodeFileOutputStream ou RobocodeFileWriter e que te permitem escrever para um ficheiro em disco. Apartir daí podes carregar os dados na aplicação que quiseres, podes por exemplo escrever um ficheiro CSV e depois leres os dados.

Outra forma seria ires guardando os dados numa qualquer estrutura de dados, dentro do teu robô, e escreveres um evento onDeath para nessa altura guardares os dados no disco ou até enviares para o standard output ou outro output que pretendes.

Ajuda?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

yaps.

Vou testar isto...

estou ceptico em relação a uma chamada da função run por turno... tipo... se eu tiver a no meio de uma função bloqueante será que isto funca na mesma...

vou testar isto... amanha ja digo qq coisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não chamar o método run por turno, esse é o método que o motor chama a cada turno, a ideia é tratares os dados nessa função ou noutra qualquer, desde que tenha qualquer ligação com o método run.

Outra opção, se guardares os dados em alguma condição é criares um tratamento para um evento nessa condição.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O método run não é chamado uma vez por turno... é antes uma vez por batalha.

Acho que isto não é possivel fazer atravez de um extend à classe robot ou advancedrobot.

Se alguem tiver uma sugestão força!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora