planetwars.dev/examples/java/Example.java

88 lines
3.3 KiB
Java
Raw Normal View History

2023-11-20 16:34:47 +01:00
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();
}
}