87 lines
3.3 KiB
Java
87 lines
3.3 KiB
Java
import java.util.Random;
|
|
import java.util.Scanner;
|
|
|
|
import planetwars.Planet;
|
|
import planetwars.PlanetWars;
|
|
|
|
|
|
/**********************************************
|
|
* ______ _ _______ _____
|
|
* |___ / | | | | ___ \_ _|
|
|
* / / ___ _ _ ___ | | | | |_/ / | |
|
|
* / / / _ \ | | / __| | |/\| | __/ | |
|
|
* ./ /__| __/ |_| \__ \ \ /\ / | _| |_
|
|
* \_____/\___|\__,_|___/ \/ \/\_| \___/
|
|
*
|
|
*********************************************/
|
|
|
|
|
|
/**
|
|
* Voorbeeld implementatie van de klassen in planetwars.py
|
|
*
|
|
*
|
|
* De bot die hier wordt gemaakt is een speelgoed voorbeeldje.
|
|
* Hij werkt zeer simpel.
|
|
*
|
|
* Elke ronde stuurt hij al zijn schepen naar een op voorhand bepaalde planeet.
|
|
* Die planeet wordt bepaald aan de hand van de volgende regel:
|
|
*
|
|
* Is er een neutrale planeet vrij:
|
|
* -> Ja, pak een random neutrale planeet
|
|
* -> Nee, Pak een random planeet van de tegenstander
|
|
*/
|
|
public class Example {
|
|
public static void main(String[] args) {
|
|
// Maak onze instance aan
|
|
PlanetWars planetWars = new PlanetWars();
|
|
// Scanner om de lijnen van stdin te lezen die het spel geeft.
|
|
Scanner scanner = new Scanner(System.in);
|
|
// Wordt gebruikt om een willekeurige planeet te kiezen.
|
|
Random random = new Random();
|
|
|
|
/**
|
|
* Elke beurt wordt de data van de staat het spel op stdin gezet.
|
|
* Je kan een nieuwe beurt dus herkennen indien er iets binnenkomt op stdin.
|
|
* De volgende while loop gaat elke keer als er iets binnenkomt (dus een nieuwe beurt)
|
|
* een paar acties ondernemen.
|
|
*/
|
|
while (scanner.hasNextLine()) {
|
|
// Lees de lijn.
|
|
String line = scanner.nextLine();
|
|
// Update de klasse.
|
|
boolean parsed = planetWars.update(line);
|
|
|
|
if (! parsed) {
|
|
// Bij de huidige implementatie zou dit nooit het geval mogen zijn.
|
|
// Indien dit wel het geval is ligt het aan de game en niet aan jouw eigen code!
|
|
planetWars.log("Error: Game input wrongly formatted!");
|
|
continue;
|
|
}
|
|
|
|
// De planeet waar we alles gaan naar sturen.
|
|
Planet chosenPlanet;
|
|
|
|
if (! planetWars.neutralPlanets.isEmpty()) {
|
|
// Als er neutrale planeten zijn pak dan een willekeurige neutrale planeet.
|
|
int randomIndex = random.nextInt(planetWars.neutralPlanets.size()); // Genereer random index voor de neutrale planets array
|
|
chosenPlanet = planetWars.neutralPlanets.get(randomIndex);
|
|
} else {
|
|
// Anders pak een willekeurige planeet van de tegenstander
|
|
int randomIndex = random.nextInt(planetWars.enemyPlanets.size()); // Genereer random index voor de enemy planets array
|
|
chosenPlanet = planetWars.enemyPlanets.get(randomIndex);
|
|
}
|
|
|
|
// Stuur al onze schepen naar de gekozen planeet
|
|
for (Planet planet: planetWars.myPlanets) {
|
|
planetWars.addMove(planet, chosenPlanet, planet.shipCount());
|
|
}
|
|
|
|
// Verzend onze zetten
|
|
planetWars.move();
|
|
|
|
// Einde van de beurt, wacht tot een nieuwe beurt begint en de cycle begint weer!
|
|
}
|
|
|
|
scanner.close();
|
|
}
|
|
}
|