Robocode Inleiding tot programmeren
Inhoud Doel cursus Java-controlestructuren Robotje programmeren
Doel cursus Inleiding Java Robocode
Java
Object-gerichte programmeertaal Sun 1991 http://java.sun.com
Robocode
2001 Matthew Nelson IBM Programmeerspelletje http://robocode.sourceforge.net/
Inhoud Doel cursus Java-controlestructuren Robocode
Compileren Code ‘vertalen’ voor computer
Commentaar
// lijn commentaar /* blok Commentaar */ Commentaar wordt niet gelezen door de compiler
Declaratie van data
private double d = 1.11111; private int i = 5; private static string s = “tekst” Binnen methode niet private Static als je waardes wil houden tussen ronden (deathcount)
If – Else if (voorwaarde) { //doe iets } else { //doe iets anders }
While() while (voorwaarde) { //blijf dit //en dit doen }
Vergelijken
a == b gelijk aan a != b niet gelijk aan a
b groter dan a >= b groter dan of gelijk aan s.equals(“string”) strings vergelijken
For() for (int i = 0; i < 6; i++) { System.out.println(i + “”); }
Switch switch (i) { case 1: case 2: case 3: default: }
a a a a
= 1; = 2; = 3; = 0;
break; break; break; break;
Methodes
Methodes Verzameling van lijnen code Argumenten Return Vaak gebruikt voor herhalingen van code of berekeningen
Inhoud Doel cursus Java-controlestructuren Robocode
Robocode Het programma Een robot bouwen
Robocode Java 1.5.0 http://sourceforge.net/projects/roboc ode/.
Een gevecht starten
Anatomie van een robotje Vehicle Bewegen
Gun Schieten
Radar Scannen
Een robotje maken
Een robotje maken
File -> New -> Robot Packagenaam Naam van de robot Compiler -> Compile (F6)
Run() Belangrijkste methode van de robot 2 delen Declaratie While(true)
Color Deel van declaratie import java.awt.Color; setColors(Color.RED, Color.BLACK, Color.RED); http://java.sun.com/j2se/1.5.0/docs/ api/java/awt/Color.html
While(true)
Oneindige lus Herhaling van strategie robot Onderbroken door events Stopt indien dood of gewonnen
Bewegen turnLeft(aantal graden); turnRight(aantal graden); turnRight(90) == turnLeft(-90)
Bewegen ahead(aantal pixels); back(aantal pixels); ahead(100) == back(-100);
Bewegen turnGunLeft(aantal graden); turnGunRight(aantal graden); turnGunRight(90) == turnGunLeft(-90)
Bewegen getHeading(); getGunHeading(); turnRight(shortAngle(getHeading() + 90));
Fire() Schiet een kogel Kracht 0.1 <-> 3 Schieten maakt het geweer warm if (getGunHeat() == 0) { fire(3); }
Bullet Bij fire() Robocode maakt Bullet aan Bij events Bullet opvragen
Bullet Indien raak 3 * K energie terug 4 * K, plus 2 * (K - 1) als K > 1 Schade
Indien mis Kogel raakt andere kogel Kogel raakt muur
Events Gebeurtenis Eigen code Onderbreken while(true)
Events /** * onScannedRobot: What to do when you see another robot */ public void onScannedRobot(ScannedRobotEvent e) { System.out.println(“I’ve seen “ + e.getName()); System.out.println(e.getDistance() + “ pixels away.”); fire(1); }
BulletHitBulletEvent Jouw kogel raakt een andere kogel getBullet() Geeft kogel terug
getHitBullet() Geeft kogel terug
a = e.getBullet().getPower();
BulletHitEvent
Je hebt een robotje geraakt getBullet() getEnergy() getName()
BulletMissedEvent Een kogel van jou heeft de muur geraakt getBullet()
DeathEvent Je sterft Geen methodes Bijvoorbeeld deathcounter
HitByBulletEvent
getBearing() getBullet() getHeading() getName() getPower()
Bearing Verschil tussen jouw heading en heading van wat je raakt. turnRight(e.getBearing()) ;
HitRobotEvent
Je rijdt tegen een robot getBearing() getEnergy() getName() isMyFault()
if (e.isMyFault()) {
HitWallEvent Je rijdt tegen een muur getBearing()
RobotDeathEvent Een andere robot sterft. getName()
ScannedRobotEvent
Je radar (op geweer) ziet een robot getBearing() getDistance() getEnergy() getHeading() getName()
ScannedRobotEvent /** * onScannedRobot: What to do when you see another robot */ public void onScannedRobot(ScannedRobotEvent e) { System.out.println(“I’ve seen “ + e.getName()); System.out.println(e.getDistance() + “ pixels away.”); fire(1); }
WinEvent Je wint de ronde. Geen methodes. Overwinningsdansje wincounter