58 lines
1.6 KiB
Java
58 lines
1.6 KiB
Java
package planetwars;
|
|
|
|
import java.util.Objects;
|
|
|
|
import com.google.gson.JsonObject;
|
|
|
|
|
|
/**
|
|
* Stelt een planeet voor.
|
|
*/
|
|
public record Planet(
|
|
Integer owner, // 1 -> jouw planeet, null -> van niemand, anders -> van tegenstander
|
|
int shipCount, // Aantal schepen die de planeet bezit
|
|
String name, // Naam
|
|
float x, // x positie
|
|
float y // y positie
|
|
) {
|
|
|
|
|
|
/**
|
|
* Maakt een planeet aan op basis van de input van het spel.
|
|
*
|
|
* @param planet | De input.
|
|
*/
|
|
public Planet(JsonObject planet) {
|
|
this (
|
|
planet.get("owner").isJsonNull() ? null : planet.get("owner").getAsInt(),
|
|
planet.get("ship_count").getAsInt(),
|
|
planet.get("name").getAsString(),
|
|
planet.get("x").getAsFloat(),
|
|
planet.get("y").getAsFloat()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Geeft terug hoe veel beurten schepen er over doen om van de ene planeet naar
|
|
* de andere te gaan.
|
|
*
|
|
* @param otherPlanet | De andere planeet.
|
|
*
|
|
* @return | Aantal beurten.
|
|
*/
|
|
public int distance_between(Planet otherPlanet) {
|
|
return (int) Math.ceil(Math.sqrt(Math.pow(otherPlanet.x - this.x, 2) + Math.pow(otherPlanet.y - this.y, 2)));
|
|
}
|
|
|
|
/**
|
|
* Functie om 2 planeten te vergelijken.
|
|
*
|
|
* @param other | De andere planeet.
|
|
*
|
|
* @return | Boolean of de 2 gelijk zijn.
|
|
*/
|
|
@Override
|
|
public boolean equals(Object other) {
|
|
return Objects.equals(this.name, ((Planet) other).name());
|
|
}
|
|
}
|