Jump to content
NuGuN

BatOnBots-ML - Colaboração Precisa-se

Recommended Posts

NuGuN

Boas!

Estou a desenvolver um projecto que no fundo é um jogo onde os jogadores desenvolvem um programa(robô) com recurso a uma API para combater contra outros jogadores. Para quem conhece o robcode, a ideia é basicamente a mesma mas com umas mudanças.

Neste momento já está numa fase que se pode considerar avançada, mas vou precisar de um website com algumas funcionalidades simples e sinceramente esse não é de todo o meu forte...

Dito isto venho aqui perguntar se alguém está interessado em entrar para o projecto, mais especificamente com o desenvolvimento do website, e também alguém para o grafismo(2D) que está muito fraco(fui eu que fiz  :thumbsup: ).

Alguma dúvida é só perguntar.

Deixo aqui um vídeo de uma batalha de 60 segundos entre dois robôs básicos(dá para fazer o embed do vídeo?):

http://www.youtube.com/watch?feature=player_embedded&v=D-zvBawBVaI

Cumps!

Share this post


Link to post
Share on other sites
NuGuN

Boas!

Então não há ninguém interessado em entrar para o projecto? :confused:

Esqueci-me de especificar o que o é necessário. Para o website é preciso apenas:

- Um sistema de registo de utilizadores e o respectivo sistema de login

- Uma página que mostre numa grelha as pontuações dos jogadores registados

- Uma wiki ou algo do género para a documentação do jogo.

Para este ultimo ponto(e talvez para os outros também), a tarefa pode estar facilitada pois o alojamento que tenho tem várias aplicações como o Wikimedia ou Drupal prontas a instalar.

Ninguém com um tempito livre e vontade de se juntar ao projecto? ;)

Cumps!

Share this post


Link to post
Share on other sites
HappyHippyHippo

Rapaz ... acho que me vou juntar a ti para tornar isso na melhor coisa que já se viu :D

tenho só duas questões

- qual a linguagem de programação da aplicação

- como é a API para programação do robô ?

caso não "gostar" muito das respostas posso sempre fazer-te o site


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
NuGuN

Boas.

HappyHippyHippo, desculpa a demora na resposta mas estive algum tempo sem vir cá porque ultimamente o tempo é muito pouco ou nenhum... e por isso também este projecto tem estado parado...

Respondendo às tuas perguntas, estou a desenvolver cliente e servidor em python.

Em relação à API, ainda não está completa... para já só tem os comandos e eventos essenciais para fazer testes. Decidi primeiro criar a base para todo o tipo de comandos e eventos, e só depois adicionar o que falta, o que vai ser rápido porque vai ser só adicionar comandos e eventos.

O site, como na altura não apareceram interessados, perdi algum tempo e fiz eu o site(que não ficou grande coisa). Praticamente está feito e o jogo já está pronto a integrar com o site, e falta também os conteúdos...

Fica aqui um pequeno exemplo da documentação que tenho e o código de um dos robôs que está no video. Alguma dúvida é só dizeres.

Comandos para mover o robô para a frente e para trás:

'robot_move_forward()' e 'robot_move_backward()':

- Têm um valor mínimo de -10000, e um valor máximo de 10000.

- Os valores podem ser positivos ou negativos.

- Quando negativos, Invertem a direcção do movimento.

- Consome 0.1% de energia a cada ciclo. São executados aproximadamente 25 ciclos por segundo, o que quer dizer que a cada segundo de movimento é consumido aproximadamente 2,5% de energia. Actualmente a energia gasta não é proporcional à velocidade do robô. Quer isto dizer que mova-se o robô a 4 pixeis por segundo ou a 1 pixel por segundo, gasta sempre a mesma energia.

- Ex.: 'robot_move_forward(-20)' vai fazer com que o robô se movimente para trás. Aceita apenas valores inteiros. Quando o argumento é zero, imobiliza o robô. A unidade é o Pixel.

Um dos eventos actualmente já a funcionar:

'scan_event()':

- Recebido quando sao encontrados objectos durante um 'scan()' ou quando um 'scan()' é terminado.

- Lista de argumentos:

- objName: Nome do objecto encontrado.

- objEnergy: Energia do objecto encontrado.

- objDamage: Estragos do objecto encontrado.

- objArmor: Lista com o estado da armadura do objecto encontrado.

- objPosition: Posição do objecto encontrado. Ex.: (x, y)

- objDirection: Direcção do objecto encontrado em graus. Arredondado às centésimas.

- objRelativeDirection: Direção do objecto encontrado em relação ao nosso robô. Útil com os comandos “robot_turn_to()”, “gun_turn_to()” e “radar_turn_to()”. Arredondado às centésimas.

- objSpeed: Velocidade do objecto encontrado. Actualmente é a velocidade com que o robot está configurado e não a que se está a mover

- objDistance: Distancia entre o objecto encontrado e o nosso robô.

- Este evento pode causar diferentes comportamentos no robô consuante a forma como o radar está configurado. Para melhor perceber o comportamento deste evento, consultar “Funcionamento do Scan”, “scan()”, “advanced_scan()”.

- É configurável.

Sugestões: Ver também “Funcionamento do Scan”, “scan()”, “advanced_scan()”, “robot_turn_to()”, “gun_turn_to()”, “radar_turn_to()”, “Armadura(explicação do conceito de armadura)”, “no_freeze_on”, “freeze_on”.

E por fim o código de um dos robôs que está no video:

# -*- coding:utf-8 -*-
from port_module import Robot

def term_battle_room():
exit(0)

def term_battle():
exit(0)

def scan_event( event ):
global robot
for obj in event.objsList:
	print "**********************************"
	print obj.objName
	print obj.objEnergy
	print obj.objDamage
	print obj.objArmor
	print obj.objPosition
	print obj.objDirection
	print obj.objRelativeDirection
	print obj.objSpeed
	print obj.objDistance
robot.gun_turn_to( obj.objRelativeDirection )
robot.shoot()




if __name__ == '__main__':
alive = 1
# cria um robot
robot = Robot()

# Faz override aos metodos da classe 'Robot'
# Não são todos obrigatórios
robot.term_battle_room = term_battle_room
robot.term_battle = term_battle
robot.scan_event = scan_event

# Inicia o robot
result = robot.init()

# Configura o modo de execução (opcional)
robot.exec_mode('lock')
# Subscreve o evento "scan_event"
robot.subscribe_events( "'scan_event'" )

while( alive ):
	robot.scan()

Cumps!

Edited by NuGuN

Share this post


Link to post
Share on other sites
HappyHippyHippo

python : nunca me dei ao trabalho de aprender porque também nunca me foi necessário ... por isso, no que toca a ajudar no projecto, ficarei de fora

se já tens site, porreiro então.

bom sorte para o teu projecto


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
NuGuN

O site... ter tenho. Dá para desenrascar... Mas não é o que chamaria de ideal. Portanto se estiveres interessado no desenvolvimento do site, é só dizeres :D

Cumps!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.