-
Este es un robot ejemplo de los q ya trae el programa<br /><br />package sample;<br />import robocode.*;<br />/<br /> * Tracker - a sample robot by Mathew Nelson<br /> * <br /> * Locks onto a robot, moves close, fires when close.<br /> */<br />public class Tracker extends Robot<br />{<br /> int count = 0; // Keeps track of how long we've<br /> // been searching for our target<br /> double gunTurnAmt; // How much to turn our gun when searching<br /> String trackName; // Name of the robot we're currently tracking<br /><br /> /<br /> * run: Tracker's main run function<br /> */ <br /> public void run() {<br /> trackName = null; // Initialize to not tracking anyone<br /> setAdjustGunForRobotTurn(true); // Keep the gun still when we turn<br /> gunTurnAmt = 10; // Initialize gunTurn to 10<br /> while (true) {<br /> // turn the Gun (looks for enemy)<br /> turnGunRight(gunTurnAmt);<br /> // Keep track of how long we've been looking<br /> count++;<br /> // If we've haven't seen our target for 2 turns, look left<br /> if (count > 2) <br /> {<br /> gunTurnAmt = -10;<br /> }<br /> // If we still haven't seen our target for 5 turns, look right<br /> if (count > 5)<br /> gunTurnAmt = 10;<br /> // If we still haven't seen our target after 10 turns, find another target<br /> if (count > 11)<br /> trackName = null;<br /> }<br /> }<br /> <br /> /<br /> * onScannedRobot: Here's the good stuff<br /> */ <br /> public void onScannedRobot(ScannedRobotEvent e) {<br /><br /> // If we have a target, and this isn't it, return immediately<br /> // so we can get more ScannedRobotEvents.<br /> if (trackName != null && !e.getName().equals(trackName))<br /> return;<br /><br /> // If we don't have a target, well, now we do!<br /> if (trackName == null) {<br /> trackName = e.getName();<br /> out.println("Tracking " + trackName);<br /> }<br /> // This is our target. Reset count (see the run method)<br /> count = 0;<br /> // If our target is too far away, turn and move torward it.<br /> if (e.getDistance() > 150)<br /> {<br /> gunTurnAmt = normalRelativeAngle(e.getBearing() + (getHeading() - getRadarHeading()));<br /> <br /> turnGunRight(gunTurnAmt); // Try changing these to setTurnGunRight,<br /> turnRight(e.getBearing()); // and see how much Tracker improves…<br /> // (you'll have to make Tracker an AdvancedRobot)<br /> ahead(e.getDistance() - 140);<br /> return;<br /> }<br /><br /> // Our target is close.<br /> gunTurnAmt = normalRelativeAngle(e.getBearing() + (getHeading() - getRadarHeading()));<br /> turnGunRight(gunTurnAmt);<br /> fire(3);<br /> <br /> // Our target is too close! Back up.<br /> if (e.getDistance() < 100)<br /> {<br /> if (e.getBearing() > -90 && e.getBearing() <= 90)<br /> back(40);<br /> else<br /> ahead(40);<br /> }<br /> scan();<br /> <br /> }<br /> <br /> /<br /> * onHitRobot: Set him as our new target<br /> */ <br /> public void onHitRobot(HitRobotEvent e) {<br /> // Only print if he's not already our target.<br /> if (trackName != null && !trackName.equals(e.getName()))<br /> {<br /> out.println("Tracking " + e.getName() + " due to collision");<br /> }<br /> // Set the target<br /> trackName = e.getName();<br /> // Back up a bit.<br /> // Note: We won't get scan events while we're doing this!<br /> // An AdvancedRobot might use setBack(); execute();<br /> gunTurnAmt = normalRelativeAngle(e.getBearing() + (getHeading() - getRadarHeading()));<br /> turnGunRight(gunTurnAmt);<br /> fire(3);<br /> back(50);<br /> }<br /><br /> /<br /> * onWin: Do a victory dance<br /> */ <br /> public void onWin(WinEvent e) {<br /> for (int i = 0; i < 50; i++)<br /> {<br /> turnRight(30);<br /> turnLeft(30);<br /> }<br /> }<br /> <br /> // normalAbsoluteAngle is not used in this robot,<br /> // but is here for reference.<br /> /<br /> * normalAbsoluteAngle: returns angle such that 0 <= angle < 360<br /> */ <br /> public double normalAbsoluteAngle(double angle) {<br /> if (angle >= 0 && angle < 360)<br /> return angle;<br /> double fixedAngle = angle;<br /> while (fixedAngle < 0)<br /> fixedAngle += 360;<br /> while (fixedAngle >= 360)<br /> fixedAngle -= 360;<br /> return fixedAngle;<br /> }<br /> <br /> /**<br /> * normalRelativeAngle: returns angle such that -180<angle<=180<br /> */ <br /> public double normalRelativeAngle(double angle) {<br /> if (angle > -180 && angle <= 180)<br /> return angle;<br /> double fixedAngle = angle;<br /> while (fixedAngle <= -180)<br /> fixedAngle += 360;<br /> while (fixedAngle > 180)<br /> fixedAngle -= 360;<br /> return fixedAngle;<br /> }<br /><br />}<br /><br />_________________________________________________________________________________<br /><br />si os bajais el video q he adjuntado este es el codigo del traker<br /><br />Este ya es un robot un poco elaborado ya q busca al enemigo y se centra en uno solo hasta q lo destruye o lo pierde de vista.<br /><br />NOTA: HAY GENTE Q ME HA DICHO Q NO PUEDEN VER EL VIDEO, PROBAD DE DESCARGARLO DE : <a href="www.paladi.com/robocode1.avi" target="_blank">www.paladi.com/robocode1.avi</a>
-
Que no os espante este codigo tan raro.
Este es uno de los ejemplos mas complejos. pero era para q vieseis hasta donde puede llegar (o mas).
Pero con unas pocas lineas (6) se puede hacer un robot
XD -
Otro mas que se apunta jejejje tendremos que empezar a darle vueltas al tema
-
aqui os pongo las 4 rondas q he jugado para hacer el ejemplo.
este segundo video ocupa 2mb y esta muy comprimido asi q perdon por la calidad.
El video esta en: www.paladi.com/robocode2.avi -
ale otro que se apunta xDxD, pero me voy a tomar mi tiempo que esta semana toy con examenes, el miercoles los acabo y a ver si me meto enserio en esto:D
-
Ami la idea me gusta, pero nidea de como montar un bicho destos.
Podiais dar unas lecciones? enga k aprendo rapido.Salu2
-
Me parece una idea estupenda, aver si cuando acabe los examenes soy capaz de montarme un bixo desos. Ademas asi voy practicando con java, que apartir de enero me tocara dar java a saco
Un Saludo!
-
Yo tambien me apunto. Y así aprendo un poquito de java de paso :p:p
-
Yo ya lo tengo puesto en Linux y aprendiendo.. Y por supuesto tambien me apunto
Espero que dentro de poco empieze el curso de programación en Java y os de unas palizas
-
yo estoy bajandome el jodio plugin de java, que va lentisimo.
Pero esperaros un tiempo hasta que nos lo controlemos mas o menos eh¡¡¡¡¡¡
-
Yo sigo liado con el codigo de los tanquecitos de las narices… Hay cosas que entiendo y otras que no, pero en fin, se tendrá que ir aprendiendo poco a poco (nadie nace sabiendo). De todas formas eduardpc ya que te vemos puesto en el tema... a ver si nos puedes explicar por encima algunas cosas :rolleyes: He estado mirando el codigo de algunos robots (target, corners, fire, etc etc) y algunas cosas las entiendo... mis pricipales problemas vienen por culpa de las lagunas en programación que tengo Pero si conoces de algun sitio donde haya mas ejemplos y bien explicados nos seria muy util.
Por ejemplo, a mi me gustaria hacer que el robot localizase a un objetivo girando el radar(por ahora que esté quieto, tanto el objetivo como el robot), una vez localizado apuntase con el cañon y posteriormente disparase...
Lo maximo que he logrado ha sido que cada vez que haga un rastreo el radar, se dispare hacia donde apunte el cañon. Tambien he mirado que poniendole 360º al cañon en giro, en el momento en el que localiza al otro robot dispara (acertando o no)... pero en definitiva no es lo que quiero. Lo poco que he encontrado en español es un PDF donde te explica (de forma rapida) el MiPrimerRobot, creo que para dominar un poco sobre el tema es necesario aprender bastante Java.. o estoy equivocado?
De momento seguire con los ejemplos a ver si saco algo en claro En fin, seguire dandole vueltas al tema
-
Bueno, si lo que quieres es que esté quieto y que cuando pase uno por delante dispare (no se si es esto lo que quieres) pues quita lo de "turnGunRight(360)"
Yo mas o menos si me entero, pero esto es pa echarle muchas horas…............................
Y en 4 dias vacaciones..........que bien,jeje.
-
Ya conocia yo esto de hace tiempo, hace poco se organizo un concurso de Robocode profesores vs alumnos en mi facultad.
Documentacion variada:
La API de Robocode (sin esto no vais a ningun lado):
http://robocode.alphaworks.ibm.com/docs/robocode/index.htmlWeb oficial de Robocode:
http://robocode.alphaworks.ibm.com/home/home.htmlInstalación y construcción de robots simples. (ingles):
http://www-106.ibm.com/developerworks/java/library/j-robocode/index.htmlRobots avanzados. Juego en equipo. (ingles):
http://www-106.ibm.com/developerworks/java/library/j-robocode2/?loc=jArticulos sobre robocode. (ingles):
http://robocode.net/articles.htmlTécnicas de construcción de robots, escritas por maestros del robocode. (ingles):
http://www-106.ibm.com/developerworks/library/j-robotips/index.htmlY un pekeño tutorial en PDF escrito por gente de mi facultad:
http://sugus.eii.us.es/seiis/robocode/Robocode.pdfBuena caza
-
jujujuju, como mola estooooooooooooooooo
Esto es un vicio. Pero me voy a la cama que ya es tarde y mañana hay clase.
La verdad es que está mazo curioso el "jueguecito" este y realmente le cojes un poco el truco a java en plan básico rapidillo.
Bueno, mañana más.:dormido: :dormido: :dormido: :dormido: :dormido: :dormido: :dormido:
-
Contad conmigo tambien…
Os voy a dar pal pelo... xD
-
No os pasa a vosotros que a la pantalla de edicion, en la que escribis el código se le va la pinza de vez en cuando (bastante a menudo)???????. Hace cosas raras, se dejan de ver las letras, se ve rara la barra de desplazamiento, y cosas así.
-
Entonces chicos q tal os parece el concurso el dia 1 de Febrero del 2004.
ya se q falta mucho, pero asi vamos a poder perfeccionar nuestros terminators. XD
Si quisieseis podriamos hacer un torneo antes, pero asi casi q mejor, ya que cuantos mas se apunten mejor. Si al final somos muchos podriamos hacer varias rondas. P ej: 4 de 4 robots y se clasifican los 2 primeros de cada grupo y la final con 8.Normas del concurso:
El campo sera de tamaño 800*600
Se jugaran 10 rondasSi creeis oportuna alguna otra norma por favor no dudeis en postearla. Entre todos lo vamos a decidir.
En cuant a la partida del concurso se hara en mi pc. Con testigos (pq los notarios son muy caros), y para q veais q no os estafo la grabare con el camtasia y la colgare en un servidor para q veais donde falla vuestro robot para el siguiente campeonato.
Q tal os pareceria un concurso 1 vez al mes?
-
Si somos unos cuantos agrandamos un poco el tamaño del campo.
Y se podia acer un num1 vs num2, entre los k tengan mas puntuacion y en un campo pekeño.Y dejad time para montar el robot, k alguno/s no tienen idea de java
Esas son mis sugerencias.
Salu2 -
Eso … eso... ke tenemos ke practicar y con el curro y la familia... es dificil... mas las compras de navidad... este año los reyes me van a traer carbon porke no voy a dormir haciendo mi robotito... jejeje
XDSuerte a tod@s
-
para el 1 de febrero teneis tiempo suficiente para practicar?