From 4b9cccc7e10c152ddab6880b7e1e84be1c5a817a Mon Sep 17 00:00:00 2001 From: Achim Date: Mon, 4 Jul 2016 18:21:51 +0200 Subject: [PATCH 1/3] Fehlerbehebung Fehler beim setzen negativer Einheiten behoben. Bei Wert 0 erfolgt nun keine Reaktion. --- ArmyPlacer.java | 186 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 ArmyPlacer.java diff --git a/ArmyPlacer.java b/ArmyPlacer.java new file mode 100644 index 0000000..add97ff --- /dev/null +++ b/ArmyPlacer.java @@ -0,0 +1,186 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) +import javax.swing.JOptionPane; + +/** + * Write a description of class ArmyPlacer here. + * + * @author GruenerWal, MaxiJohl + * @version 1.1.0 + */ +public class ArmyPlacer extends Map_World +{ + int freeArmies = -1; + + /** + * Constructor for objects of class ArmyPlacer. + * + */ + public ArmyPlacer(String[] a1, int[] a2) + { + super(a1,a2); + // Hi. + // Dies + // ist + // ein + // unnützer + // Kommentar + // um + // Zeilen + // zu + // farmen + // :) + // Mit + // freundlichen + // Grüßen + // , + // GruenerWal + // + // + // + // I'll be back. + } + + public 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; + } + + public 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); + } + + } + + public void placeArmies() + { + 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 ) + { + if ( armiesToUse > 0 ) + { + provinces[i].addToEntities(armiesToUse); + freeArmies = freeArmies- armiesToUse; + JOptionPane.showMessageDialog(null,"Einheiten erfolgreich gesetzt, Kommandant " + getPlayerName() + "."); + } + + if ( armiesToUse == 0) + { + + } + + if ( armiesToUse < 0 ) + { + JOptionPane.showMessageDialog(null,"Willst du mich verarschen?"); + } + } + + if ( armiesToUse > freeArmies ) + { + JOptionPane.showMessageDialog(null,"Nicht genügend freie Einheiten."); + } + + } + } + + } + + public void act() + { + placeArmies(); + } +} From 95d8f8e6b61afbd8bb9947fff57ce05a8cc47e81 Mon Sep 17 00:00:00 2001 From: Zocker1999NET Date: Mon, 4 Jul 2016 18:49:15 +0200 Subject: [PATCH 2/3] ArmyPlacer reintegriert mit Bug-Fixes --- ArmyPlacer.java | 186 ------------------------------------------------ GeneralMap.java | 17 +++-- 2 files changed, 12 insertions(+), 191 deletions(-) delete mode 100644 ArmyPlacer.java diff --git a/ArmyPlacer.java b/ArmyPlacer.java deleted file mode 100644 index add97ff..0000000 --- a/ArmyPlacer.java +++ /dev/null @@ -1,186 +0,0 @@ -import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) -import javax.swing.JOptionPane; - -/** - * Write a description of class ArmyPlacer here. - * - * @author GruenerWal, MaxiJohl - * @version 1.1.0 - */ -public class ArmyPlacer extends Map_World -{ - int freeArmies = -1; - - /** - * Constructor for objects of class ArmyPlacer. - * - */ - public ArmyPlacer(String[] a1, int[] a2) - { - super(a1,a2); - // Hi. - // Dies - // ist - // ein - // unnützer - // Kommentar - // um - // Zeilen - // zu - // farmen - // :) - // Mit - // freundlichen - // Grüßen - // , - // GruenerWal - // - // - // - // I'll be back. - } - - public 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; - } - - public 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); - } - - } - - public void placeArmies() - { - 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 ) - { - if ( armiesToUse > 0 ) - { - provinces[i].addToEntities(armiesToUse); - freeArmies = freeArmies- armiesToUse; - JOptionPane.showMessageDialog(null,"Einheiten erfolgreich gesetzt, Kommandant " + getPlayerName() + "."); - } - - if ( armiesToUse == 0) - { - - } - - if ( armiesToUse < 0 ) - { - JOptionPane.showMessageDialog(null,"Willst du mich verarschen?"); - } - } - - if ( armiesToUse > freeArmies ) - { - JOptionPane.showMessageDialog(null,"Nicht genügend freie Einheiten."); - } - - } - } - - } - - public void act() - { - placeArmies(); - } -} diff --git a/GeneralMap.java b/GeneralMap.java index e586524..dda9ea7 100644 --- a/GeneralMap.java +++ b/GeneralMap.java @@ -741,18 +741,25 @@ public abstract class GeneralMap extends World implements ButtonEvent int armiesToUse = Utils.StringToInt(toUseString); if ( armiesToUse <= freeArmies ) { - provinces[i].addToEntities(armiesToUse); - freeArmies = freeArmies- armiesToUse; - JOptionPane.showMessageDialog(null,"Einheiten erfolgreich gesetzt, Kommandant " + getPlayerName() + "."); + if ( armiesToUse > 0 ) + { + provinces[i].addToEntities(armiesToUse); + freeArmies = freeArmies- armiesToUse; + JOptionPane.showMessageDialog(null,"Einheiten erfolgreich gesetzt, Kommandant " + getPlayerName() + "."); + } + if ( armiesToUse < 0 ) + { + JOptionPane.showMessageDialog(null,"Willst du mich verarschen?"); + } } - else if ( armiesToUse > freeArmies ) + if ( armiesToUse > freeArmies ) { JOptionPane.showMessageDialog(null,"Nicht genügend freie Einheiten."); } } } } - + private int calculateArmies() { int armiesToPlace; From 3cdb5d60b61dc01c1261afb2249add09f132949f Mon Sep 17 00:00:00 2001 From: Zocker1999NET Date: Mon, 4 Jul 2016 18:52:39 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Bug=20Fix=20ArmyPlacer=20Weitere=20If-Abfra?= =?UTF-8?q?ge=20durch=20Else=20ersetzt,=20da=20sonst=20eventuell=20auch=20?= =?UTF-8?q?nach=20einem=20erfolgreichen=20Verschieben=20angezeigt=20wird,?= =?UTF-8?q?=20dass=20man=20nicht=20gen=C3=BCgend=20Einheiten=20habe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GeneralMap.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeneralMap.java b/GeneralMap.java index dda9ea7..5b09707 100644 --- a/GeneralMap.java +++ b/GeneralMap.java @@ -752,7 +752,7 @@ public abstract class GeneralMap extends World implements ButtonEvent JOptionPane.showMessageDialog(null,"Willst du mich verarschen?"); } } - if ( armiesToUse > freeArmies ) + else { JOptionPane.showMessageDialog(null,"Nicht genügend freie Einheiten."); }