pgdx Skrevet 8. september 2006 Del Skrevet 8. september 2006 For å innlede emnet, Robocode er et program/spill hvor tankser spiller mot hverandre, og hver tank består av et Java-program. Robocode kan lastes ned fra Robocode Central og der står det du trenger å vite. Default er følgende kode til en robot: package drange; import robocode.*; //import java.awt.Color; /** * Bender - a robot by (your name here) */ public class Bender extends Robot { /** * run: Bender's default behavior */ public void run() { // After trying out your robot, try uncommenting the import at the top, // and the next line: //setColors(Color.red,Color.blue,Color.green); while(true) { // Replace the next 4 lines with any behavior you would like ahead(100); turnGunRight(360); back(100); turnGunRight(360); } } /** * onScannedRobot: What to do when you see another robot */ public void onScannedRobot(ScannedRobotEvent e) { fire(1); } /** * onHitByBullet: What to do when you're hit by a bullet */ public void onHitByBullet(HitByBulletEvent e) { turnLeft(90 - e.getBearing()); } } Så, da er det bare til å laste ned, programmere og paste kode, så får vi lage en konkurranse! Lenke til kommentar
Mortal Skrevet 12. september 2006 Del Skrevet 12. september 2006 (endret) Min lille robot, KillAllHumans: package mb; import robocode.*; import java.util.*; //import java.awt.Color; /** * KillAllHumans - a robot by (Morten Bendiksen) */ public class KillAllHumans extends Robot { boolean seek = true; double fart = 0.075; double firepower = 2.0; /** * run: KillAllHumans's default behavior */ public void run() { // After trying out your robot, try uncommenting the import at the top, // and the next line: //setColors(Color.red,Color.blue,Color.green); while(true) { while(seek == true) { ahead(200); turnRight(90); turnRadarRight(360); //try {wait(100);}catch(InterruptedException ie) {} } } } public double finnSkytevinkel(ScannedRobotEvent e) { double[] sv = getSkytevektor(e); double sin = sv[0] / Math.sqrt(sv[0]*sv[0] + sv[1]*sv[1]); double vinkel; if (sv[1] > 0) { vinkel = -(Math.toDegrees(Math.asin(sin))) +180; } else { vinkel = Math.toDegrees(Math.asin(sin)); if (vinkel < 0) { vinkel += 360.0; } } return vinkel; } public double[] getSkytevektor(ScannedRobotEvent e) { double[] AB = getABvektor(e); double[] v = getFartsvektor(e); return new double[] { AB[0] + v[0], AB[1] + v[1] }; //returnerer skytevektor, summen av de to } double[] getABvektor(ScannedRobotEvent e) { double distance = e.getDistance(); double vinkel = getHeading() + e.getBearing(); double[] AB = new double[] { distance*Math.sin(Math.toRadians(vinkel)), -(distance*Math.cos(Math.toRadians(vinkel)))}; return AB; } double[] getFartsvektor(ScannedRobotEvent e) { double vinkel = e.getHeadingRadians(); //vinkelen i radianer som tingne kjorer double avstand = e.getDistance(); double speed = e.getVelocity(); double[] v = new double[] {avstand*fart*speed*Math.sin(vinkel), -(avstand*fart*speed*Math.cos(vinkel)) }; return v; } public void destroy(ScannedRobotEvent e) { seek = false; stop(); double vinkel = getHeading() + e.getBearing(); System.out.println("Fant robot: "+ e.getBearing() + ", Min heading: " + getHeading()); System.out.println("Fart:" + e.getVelocity() + " Retning: " + e.getHeading() + " Avstand: " + e.getDistance()); turnGun(vinkel); System.out.println("Snudde til vinkel:" + vinkel); fire(3); seek = true; } public void shootB(double[] A, double[] B) { double[] AB = new double[] { B[0] - A[0], B[1] - A[1] }; double skyteVinkel = Math.toDegrees(Math.atan2(AB[1], AB[0])); System.out.println("Sytevinkel: "+ skyteVinkel); turnGun(-skyteVinkel); fire(3); } public void turnGun(double d) { double g = getGunHeading(); if (d<=g) { long start = Calendar.getInstance().getTimeInMillis(); double vinkel = g - d; turnGunLeft(vinkel); long stop = Calendar.getInstance().getTimeInMillis(); long tid = stop - start; System.out.println("Brukte " + tid + "ms paa aa snu " + vinkel + "grader"); } if (d>g) { long start = Calendar.getInstance().getTimeInMillis(); double vinkel = d - g; turnGunRight(vinkel); long stop = Calendar.getInstance().getTimeInMillis(); long tid = stop - start; System.out.println("Brukte " + tid + "ms paa aa snu " + vinkel + "grader"); } System.out.println("Snudde til vinkel"+d); } /** * onScannedRobot: What to do when you see another robot */ public void onScannedRobot(ScannedRobotEvent e) { //destroy(e); turnGun(finnSkytevinkel(e)); if(e.getVelocity() < 0.1) { fire(100); }else fire(firepower); //try {Thread.sleep(100);}catch(InterruptedException ie) {} } /** * onHitByBullet: What to do when you're hit by a bullet */ public void onHitByBullet(HitByBulletEvent e) { //turnLeft(90 - e.getBearing()); } } Edit: fjernet noen mellomrom som dukker opp hver gang jeg paster koden min Endret 12. september 2006 av Mortal Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå