Inleiding tot programmeren 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 - kleiner dan a <= b - kleiner dan of 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: a = 1; break; case 2: a = 2; break; default: a = 0; 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/robocode/.
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 Indien mis 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() 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