|
|
|
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
|
|
|
import java.lang.Math;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Oberklasse für verschiedene Maps;
|
|
|
|
neue Maps werden als Unterklasse dieser Klasse eingefügt.
|
|
|
|
|
|
|
|
@author GruenerWal, MaxiJohl, Felix Stupp
|
|
|
|
@version 0.3.0
|
|
|
|
*/
|
|
|
|
public abstract class GeneralMap extends World
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
Felder, im Moment nur Anzahl der Provinzen
|
|
|
|
Später evtl. weitere Werte wie Schwierigkeit denkbar
|
|
|
|
*/
|
|
|
|
|
|
|
|
private final int X_OFFSET = 0; // Verschiebt die Provinzen nach rechts
|
|
|
|
private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten
|
|
|
|
|
|
|
|
/*
|
|
|
|
Die einzelnen Positionen der Provinzen wird mit SCALE_VALUE/10000 multipliziert.
|
|
|
|
Dies ist nützlich, wenn die Karte beispielsweise nur noch 80% der Originalgröße bei ihrer Darstellung groß ist.
|
|
|
|
Bei diesem Beispiel wäre hier, neben dem Offset oben, der Wert 0.8 einzutragen.
|
|
|
|
*/
|
|
|
|
private final double SCALE_VALUE = 1;
|
|
|
|
|
|
|
|
protected Province[] provinces;
|
|
|
|
protected Player[] players;
|
|
|
|
|
|
|
|
protected int currentPlayer = 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Erstellt eine GeneralMap mit allen Eigenschaften und initialisiert die Arrays für Provinzen und Spieler.
|
|
|
|
@param backImage Das Hintergrundbild, welches von dieser Klasse geladen und dargestellt wird.
|
|
|
|
@param playerList Die Liste mit den Namen der Spieler
|
|
|
|
@param colorList Die Liste mit den Farben der Spieler
|
|
|
|
*/
|
|
|
|
public GeneralMap(String backImage, String[] playerList, int[] colorList)
|
|
|
|
{
|
|
|
|
super(1600,900,1);
|
|
|
|
players = new Player[playerList.length];
|
|
|
|
for (int i = 0; i < playerList.length; i++) {
|
|
|
|
players[i] = new Player(i,playerList[i],colorList[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Fügt alle Provinzen aus dem Array der Welt an der entsprechden Stelle zu.
|
|
|
|
*/
|
|
|
|
protected void initProvinces() {
|
|
|
|
for(int i = 1; i < provinces.length; i++) {
|
|
|
|
addObject(provinces[i],((int) Math.floor(provinces[i].getXPos() * SCALE_VALUE)) + X_OFFSET,((int) Math.floor(provinces[i].getYPos() * SCALE_VALUE)) + Y_OFFSET);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Gibt die Anzahl der vorhandenen Spieler aus.
|
|
|
|
*/
|
|
|
|
public int getPlayerCount()
|
|
|
|
{
|
|
|
|
return players.length;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Gibt den Namen des aktuellen Spielers aus.
|
|
|
|
@return Der Name des aktuellen Spielers
|
|
|
|
*/
|
|
|
|
public String getPlayerName()
|
|
|
|
{
|
|
|
|
return players[currentPlayer].getDisplayName();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Gibt den Namen des Spielers aus, dem dessen ID gehört.
|
|
|
|
@param plID Die ID des zu findenden Spielers
|
|
|
|
@return Der Name des Spielers
|
|
|
|
*/
|
|
|
|
public String getPlayerName(int plID)
|
|
|
|
{
|
|
|
|
return players[plID].getDisplayName();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Gibt die Anzahl der Sterne des aktuellen Spielers zurück.
|
|
|
|
@return Die Anzahl der Sterne des aktuellen Spielers
|
|
|
|
*/
|
|
|
|
public int getPlayerStars()
|
|
|
|
{
|
|
|
|
return players[currentPlayer].getStars();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört.
|
|
|
|
@param prID Die gefragte Provinz
|
|
|
|
*/
|
|
|
|
public int getProvinceOwner(int prID)
|
|
|
|
{
|
|
|
|
if(prID < 1 || prID > provinces.length) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
return provinces[prID].getOwner();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Gibt eine Liste mit allen Provinzen und deren Besitzern zurück.
|
|
|
|
@return Array mit der Provinz-ID als Index und dem Besitzer als Wert
|
|
|
|
*/
|
|
|
|
public int[] getProvinceOwners()
|
|
|
|
{
|
|
|
|
int[] prOwners = new int[provinces.length];
|
|
|
|
for (int i = 1; i > provinces.length; i++) {
|
|
|
|
prOwners[i] = provinces[i].getOwner();
|
|
|
|
}
|
|
|
|
return prOwners;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Zählt die Anzahl der Einheiten von allen Provinzen zusammen, die einem bestimmten Spieler gehört.
|
|
|
|
@param playerID Die ID des Spielers, für den die Einheiten gezählt werden sollen.
|
|
|
|
@return Die Anzahl der Einheiten, die dem Spieler gehören.
|
|
|
|
*/
|
|
|
|
public int getProvinceEntityCount(int playerID)
|
|
|
|
{
|
|
|
|
int c = 0;
|
|
|
|
for (int i = 1; i > provinces.length; i++) {
|
|
|
|
if(provinces[i].getOwner() == playerID) {
|
|
|
|
c = c + provinces[i].getEntityCount();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|