Fehlerbehebung

Falsche Anzeige der Einheiten behoben.
pull/82/head
Achim 8 years ago committed by GitHub
parent a459a43589
commit 19337093e6

@ -9,7 +9,7 @@ import javax.swing.JOptionPane;
neue Maps werden als Unterklasse dieser Klasse eingefügt. neue Maps werden als Unterklasse dieser Klasse eingefügt.
@author GruenerWal, MaxiJohl, Felix Stupp @author GruenerWal, MaxiJohl, Felix Stupp
@version 0.3.0 @version 1.1.0
*/ */
public abstract class GeneralMap extends World implements ButtonEvent public abstract class GeneralMap extends World implements ButtonEvent
{ {
@ -53,9 +53,6 @@ public abstract class GeneralMap extends World implements ButtonEvent
// Einheiten verschieben // Einheiten verschieben
Province savedProvince = null; Province savedProvince = null;
// Einheiten setzen
int freeArmies = -1;
/** /**
Erstellt eine GeneralMap mit allen Eigenschaften und initialisiert die Arrays für Provinzen und Spieler. 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() { public void act() {
if (status == GameStates.SETZEN) { if(status == GameStates.KAMPF) {
actPlace(); if(offenderProvince == null) {
} else if(status == GameStates.KAMPF) { OffenderProvince();
actFight(); } else {
defenderProvince();
}
} else if (status == GameStates.VERSCHIEBEN) { } 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; 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. Gibt den Namen des aktuellen Spielers aus.
@ -542,14 +557,6 @@ public abstract class GeneralMap extends World implements ButtonEvent
} }
// Kampfsystem // Kampfsystem
private void actFight() {
if(offenderProvince == null) {
OffenderProvince();
} else {
defenderProvince();
}
}
private void OffenderProvince() private void OffenderProvince()
{ {
@ -664,17 +671,6 @@ public abstract class GeneralMap extends World implements ButtonEvent
} }
// Einheiten verschieben // 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. 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; 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);
}
}
} }

@ -4,8 +4,8 @@ import java.awt.Color;
/** /**
* Write a description of class Player here. * Write a description of class Player here.
* *
* @author (Genosse Betakevin und Genosse Julien) * @author (Genosse Betakevin und Genosse Julien und Genosse GruenerWal)
* @version (version 666) * @version 6.6.6-build2
*/ */
public class Player extends Actor public class Player extends Actor
{ {
@ -47,6 +47,16 @@ public class Player extends Actor
return stars; return stars;
} }
/**
* Gibt die Farbe des Spielers als int-Wert heraus.
* Wahnsinn, dass du dir den Scheiß hier grad durchliest.
* ~GruenerWal
*/
public int getColor()
{
return color;
}
// Von Felix: Methode nicht architektur-konform // Von Felix: Methode nicht architektur-konform
/* // erhöht die Sternenzahl um eine random ausgewählte Anzahl von 1-3 /* // erhöht die Sternenzahl um eine random ausgewählte Anzahl von 1-3

@ -5,7 +5,7 @@ import java.awt.Color;
* Write a description of class Province here. * Write a description of class Province here.
* *
* @author GruenerWal, Felix Stupp * @author GruenerWal, Felix Stupp
* @version 0.0.2 * @version 1.1.0
*/ */
public class Province extends Actor public class Province extends Actor
{ {
@ -198,36 +198,41 @@ public class Province extends Actor
} }
} }
/**
* Weist dem Owner der Provinz sein entsprechendes Color-Tag zu.
*/
public void oDecide(GreenfootImage province,int textSize, int owner, int eCount) public void oDecide(GreenfootImage province,int textSize, int owner, int eCount)
{ {
String ownerString; String ownerString;
if(owner == 0) if(getWorld().getPlayerColor(owner) == 0)
{ {
ownerString = "schwarz"; ownerString = "schwarz";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
} }
else else
{ {
switch(owner) switch(getWorld().getPlayerColor(owner))
{ {
case 1: case 1:
ownerString = "schwarz"; ownerString = "schwarz";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 2: case 2:
ownerString = "rot"; ownerString = "blau";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 3: case 3:
ownerString = "blau"; ownerString = "gruen";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 4: case 4:
ownerString = "gelb"; ownerString = "rot";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 5: case 5:
ownerString = "gruen"; ownerString = "gelb";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 6: case 6:

Loading…
Cancel
Save