From 19337093e69d2a0d65f5568b124af6becf0b7779 Mon Sep 17 00:00:00 2001 From: Achim Date: Mon, 4 Jul 2016 18:19:56 +0200 Subject: [PATCH 1/3] Fehlerbehebung Falsche Anzeige der Einheiten behoben. --- GeneralMap.java | 159 ++++++++---------------------------------------- Player.java | 14 ++++- Province.java | 19 +++--- 3 files changed, 48 insertions(+), 144 deletions(-) diff --git a/GeneralMap.java b/GeneralMap.java index e586524..c6af045 100644 --- a/GeneralMap.java +++ b/GeneralMap.java @@ -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); - } - } } diff --git a/Player.java b/Player.java index c9f3898..7b9e785 100644 --- a/Player.java +++ b/Player.java @@ -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 diff --git a/Province.java b/Province.java index 73deb2d..8267615 100644 --- a/Province.java +++ b/Province.java @@ -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: From e07aa75c6ceb6f5f18efa56037a8adc180a98b7d Mon Sep 17 00:00:00 2001 From: Zocker1999NET Date: Mon, 4 Jul 2016 18:36:42 +0200 Subject: [PATCH 2/3] =?UTF-8?q?=C3=9Cbernahme=20der=20=C3=84nderungen,=20d?= =?UTF-8?q?ie=20bisher=20im=20Master=20vorkamen.=20Diese=20=C3=84nderungen?= =?UTF-8?q?=20m=C3=BCssen=20nur=20aufgrund=20dessen,=20dass=20die=20gesamt?= =?UTF-8?q?e=20Datei=20commitet=20wurde,=20manuell=20=C3=BCbernommen=20wer?= =?UTF-8?q?den.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GeneralMap.java | 145 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 131 insertions(+), 14 deletions(-) diff --git a/GeneralMap.java b/GeneralMap.java index c6af045..fb8245b 100644 --- a/GeneralMap.java +++ b/GeneralMap.java @@ -417,21 +417,12 @@ public abstract class GeneralMap extends World implements ButtonEvent } public void act() { - if(status == GameStates.KAMPF) { - if(offenderProvince == null) { - OffenderProvince(); - } else { - defenderProvince(); - } + if (status == GameStates.SETZEN) { + actPlace(); + } else if(status == GameStates.KAMPF) { + actFight(); } else if (status == GameStates.VERSCHIEBEN) { - Province clickedProvince; - for ( int i = 1; i <= (provinces.length - 1); i++) { - if (provinces[i].hasClicked() == true) { - clickedProvince = provinces[i]; - useProvincesToMove(clickedProvince); - break; - } - } + actMove(); } } @@ -557,6 +548,14 @@ public abstract class GeneralMap extends World implements ButtonEvent } // Kampfsystem + + private void actFight() { + if(offenderProvince == null) { + OffenderProvince(); + } else { + defenderProvince(); + } + } private void OffenderProvince() { @@ -671,6 +670,17 @@ 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. @@ -721,4 +731,111 @@ 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); + } + } } From 4137ccbdd428b572f5646a8a72de10c04deb6d1d Mon Sep 17 00:00:00 2001 From: Zocker1999NET Date: Mon, 4 Jul 2016 18:37:19 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Fehlende=20=C3=9Cbernahme=20noch=20erg?= =?UTF-8?q?=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GeneralMap.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/GeneralMap.java b/GeneralMap.java index fb8245b..237324d 100644 --- a/GeneralMap.java +++ b/GeneralMap.java @@ -53,6 +53,9 @@ 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.