Fehlerbehebung

Falsche Anzeige der Einheiten behoben.
master
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.
@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);
}
}
}

@ -4,8 +4,8 @@ import java.awt.Color;
/**
* Write a description of class Player here.
*
* @author (Genosse Betakevin und Genosse Julien)
* @version (version 666)
* @author (Genosse Betakevin und Genosse Julien und Genosse GruenerWal)
* @version 6.6.6-build2
*/
public class Player extends Actor
{
@ -47,6 +47,16 @@ public class Player extends Actor
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
/* // 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.
*
* @author GruenerWal, Felix Stupp
* @version 0.0.2
* @version 1.1.0
*/
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)
{
String ownerString;
if(owner == 0)
if(getWorld().getPlayerColor(owner) == 0)
{
ownerString = "schwarz";
eCalculate(province,ownerString,textSize);
}
else
{
switch(owner)
switch(getWorld().getPlayerColor(owner))
{
case 1:
ownerString = "schwarz";
eCalculate(province,ownerString,textSize);
break;
case 2:
ownerString = "rot";
ownerString = "blau";
eCalculate(province,ownerString,textSize);
break;
case 3:
ownerString = "blau";
ownerString = "gruen";
eCalculate(province,ownerString,textSize);
break;
case 4:
ownerString = "gelb";
ownerString = "rot";
eCalculate(province,ownerString,textSize);
break;
case 5:
ownerString = "gruen";
ownerString = "gelb";
eCalculate(province,ownerString,textSize);
break;
case 6:

Loading…
Cancel
Save