|
|
|
@ -9,7 +9,7 @@ import javax.swing.JOptionPane;
|
|
|
|
|
neue Maps werden als Unterklasse dieser Klasse eingefügt.
|
|
|
|
|
|
|
|
|
|
@author GruenerWal, MaxiJohl, Felix Stupp
|
|
|
|
|
@version 0.3.0
|
|
|
|
|
@version 1.1.0
|
|
|
|
|
*/
|
|
|
|
|
public abstract class GeneralMap extends World implements ButtonEvent
|
|
|
|
|
{
|
|
|
|
@ -53,9 +53,6 @@ public abstract class GeneralMap extends World implements ButtonEvent
|
|
|
|
|
|
|
|
|
|
// Einheiten verschieben
|
|
|
|
|
Province savedProvince = null;
|
|
|
|
|
|
|
|
|
|
// Einheiten setzen
|
|
|
|
|
int freeArmies = -1;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
Erstellt eine GeneralMap mit allen Eigenschaften und initialisiert die Arrays für Provinzen und Spieler.
|
|
|
|
@ -420,12 +417,21 @@ public abstract class GeneralMap extends World implements ButtonEvent
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void act() {
|
|
|
|
|
if (status == GameStates.SETZEN) {
|
|
|
|
|
actPlace();
|
|
|
|
|
} else if(status == GameStates.KAMPF) {
|
|
|
|
|
actFight();
|
|
|
|
|
if(status == GameStates.KAMPF) {
|
|
|
|
|
if(offenderProvince == null) {
|
|
|
|
|
OffenderProvince();
|
|
|
|
|
} else {
|
|
|
|
|
defenderProvince();
|
|
|
|
|
}
|
|
|
|
|
} else if (status == GameStates.VERSCHIEBEN) {
|
|
|
|
|
actMove();
|
|
|
|
|
Province clickedProvince;
|
|
|
|
|
for ( int i = 1; i <= (provinces.length - 1); i++) {
|
|
|
|
|
if (provinces[i].hasClicked() == true) {
|
|
|
|
|
clickedProvince = provinces[i];
|
|
|
|
|
useProvincesToMove(clickedProvince);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -436,6 +442,15 @@ public abstract class GeneralMap extends World implements ButtonEvent
|
|
|
|
|
{
|
|
|
|
|
return players.length;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gibt die Farbe des angefragten Spielers heraus.
|
|
|
|
|
* @param int pID -> Farbe des Spielers
|
|
|
|
|
*/
|
|
|
|
|
public int getPlayerColor(int pID)
|
|
|
|
|
{
|
|
|
|
|
return players[pID].getColor();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
Gibt den Namen des aktuellen Spielers aus.
|
|
|
|
@ -542,14 +557,6 @@ public abstract class GeneralMap extends World implements ButtonEvent
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Kampfsystem
|
|
|
|
|
|
|
|
|
|
private void actFight() {
|
|
|
|
|
if(offenderProvince == null) {
|
|
|
|
|
OffenderProvince();
|
|
|
|
|
} else {
|
|
|
|
|
defenderProvince();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OffenderProvince()
|
|
|
|
|
{
|
|
|
|
@ -664,17 +671,6 @@ public abstract class GeneralMap extends World implements ButtonEvent
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Einheiten verschieben
|
|
|
|
|
|
|
|
|
|
private void actMove() {
|
|
|
|
|
Province clickedProvince;
|
|
|
|
|
for ( int i = 1; i <= (provinces.length - 1); i++) {
|
|
|
|
|
if (provinces[i].hasClicked() == true) {
|
|
|
|
|
clickedProvince = provinces[i];
|
|
|
|
|
useProvincesToMove(clickedProvince);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
Nimmt zwei Provinzen entgegen, und fragt, wieviele Einheiten vom ersten zum zweiten Eintrag verschoben werden sollen.
|
|
|
|
@ -725,111 +721,4 @@ public abstract class GeneralMap extends World implements ButtonEvent
|
|
|
|
|
savedProvince = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Einheiten setzen
|
|
|
|
|
|
|
|
|
|
private void actPlace()
|
|
|
|
|
{
|
|
|
|
|
if ( freeArmies == -1 )
|
|
|
|
|
{
|
|
|
|
|
freeArmies = calculateArmies();
|
|
|
|
|
}
|
|
|
|
|
for ( int i = 1; i <= (provinces.length - 1); i++) {
|
|
|
|
|
if (provinces[i].hasClicked() == true && provinces[i].getOwner() == currentPlayer)
|
|
|
|
|
{
|
|
|
|
|
String toUseString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du setzen? Du hast noch " + freeArmies + " freie Einheiten.");
|
|
|
|
|
int armiesToUse = Utils.StringToInt(toUseString);
|
|
|
|
|
if ( armiesToUse <= freeArmies )
|
|
|
|
|
{
|
|
|
|
|
provinces[i].addToEntities(armiesToUse);
|
|
|
|
|
freeArmies = freeArmies- armiesToUse;
|
|
|
|
|
JOptionPane.showMessageDialog(null,"Einheiten erfolgreich gesetzt, Kommandant " + getPlayerName() + ".");
|
|
|
|
|
}
|
|
|
|
|
else if ( armiesToUse > freeArmies )
|
|
|
|
|
{
|
|
|
|
|
JOptionPane.showMessageDialog(null,"Nicht genügend freie Einheiten.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int calculateArmies()
|
|
|
|
|
{
|
|
|
|
|
int armiesToPlace;
|
|
|
|
|
Province[] continentArray;
|
|
|
|
|
boolean continentChecked = false;
|
|
|
|
|
|
|
|
|
|
// 1. ArmyMinimum einbeziehen
|
|
|
|
|
armiesToPlace = armyMinimum;
|
|
|
|
|
|
|
|
|
|
// 2. Einheiten durch Provinzen einbeziehen
|
|
|
|
|
armiesToPlace = armiesToPlace + Math.round(players[currentPlayer].getProvinceCount() / 3);
|
|
|
|
|
|
|
|
|
|
// 3. Einheiten durch Kontinente
|
|
|
|
|
|
|
|
|
|
// Kontinente durchgehen
|
|
|
|
|
for ( int i = 1; i < continentBoni.length; i++ )
|
|
|
|
|
{
|
|
|
|
|
continentArray = giveContinentArray(i);
|
|
|
|
|
// Provinzen des aktuellen Kontinents durchgehen
|
|
|
|
|
for ( int p = 1; p >= continentArray.length; p++ )
|
|
|
|
|
{
|
|
|
|
|
// Prüfen, ob eine Provinz NICHT dem aktuellen Spieler gehört
|
|
|
|
|
if ( continentArray[p].getOwner() != currentPlayer )
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
// Wenn nicht, wird der Kontinent als gecheckt markiert
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
continentChecked = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( continentChecked == true )
|
|
|
|
|
{
|
|
|
|
|
armiesToPlace = armiesToPlace + continentBoni[i];
|
|
|
|
|
continentChecked = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 4. Einheiten durch Sterne
|
|
|
|
|
if ( players[currentPlayer].getStars() > 0)
|
|
|
|
|
{
|
|
|
|
|
String toUseString = JOptionPane.showInputDialog(null, "Wieviele Sterne willst du verwenden?");
|
|
|
|
|
int starsToUse = Utils.StringToInt(toUseString);
|
|
|
|
|
int[] starBoni = new int [] {1,2,4,7,10,13,17,21,25,30};
|
|
|
|
|
if ( starsToUse > 0 && starsToUse < 11 )
|
|
|
|
|
{
|
|
|
|
|
armiesToPlace = armiesToPlace + starBoni[starsToUse -1];
|
|
|
|
|
}
|
|
|
|
|
if ( starsToUse < 0 && starsToUse > 10 )
|
|
|
|
|
{
|
|
|
|
|
JOptionPane.showMessageDialog(null,"Ungültige Zahl. Bitte eine Zahl zwischen 0 und 10 eingeben");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return armiesToPlace;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Province[] giveContinentArray(int cID)
|
|
|
|
|
{
|
|
|
|
|
Province[] savedProvinces = new Province[provinceCount +1];
|
|
|
|
|
Province[] continentProvinces;
|
|
|
|
|
int c = 0;
|
|
|
|
|
for (int i = 1; i <= provinceCount; i++)
|
|
|
|
|
{
|
|
|
|
|
if (provinces[i].getContinentID() == cID)
|
|
|
|
|
{
|
|
|
|
|
savedProvinces[i] = provinces[i];
|
|
|
|
|
c++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( c < 1 )
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return Utils.cutArray(savedProvinces);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|