diff --git a/Dice_Defender.java b/Dice_Defender.java index 6b155b2..8fbf0c7 100644 --- a/Dice_Defender.java +++ b/Dice_Defender.java @@ -1,7 +1,7 @@ /* - Hinweis zum Verbleib der Klasse: - Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. - Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. + Hinweis zum Verbleib der Klasse: + Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. + Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. */ import greenfoot.*; @@ -15,64 +15,40 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse */ public class Dice_Defender extends Dice { - /** - * Act - do whatever the Dice_Offender wants to do. This method is called whenever - * the 'Act' or 'Run' button gets pressed in the environment. - */ + /** + * Act - do whatever the Dice_Offender wants to do. This method is called whenever + * the 'Act' or 'Run' button gets pressed in the environment. + */ - int[] diceEyesDefender = new int[2]; - public void act() - { - // Add your action code here. - } + int[] diceEyesDefender = new int[2]; + public void act() + { + // Add your action code here. + } - /** - * Die Methode für das Würfeln mit bis zu drei Würfeln des Angreifers, es wird ein Array mit den drei Zahlen zurückgegeben, höchster Wert befindet sich immer an dritter Stelle. - * @param troupNumberDefender Anzahl der Truppen auf dem ausgewählten Feld - */ - public int[] dice_defender(int troupNumberDefender) - { - if(troupNumberDefender == 1) - { - diceEyesDefender[0] = (int) (Math.random() * 6 +1); - return diceEyesDefender; - } - if(troupNumberDefender >=2 ) - { - diceEyesDefender[0] = (int) (Math.random() * 6 +1); - diceEyesDefender[1] = (int) (Math.random()* 6 +1); - System.out.println(diceEyesDefender[0]); - System.out.println(diceEyesDefender[1]); - return diceEyesDefender; - } - Arrays.sort(diceEyesDefender); - return diceEyesDefender; + /** + * Die Methode für das Würfeln mit bis zu drei Würfeln des Angreifers, es wird ein Array mit den drei Zahlen zurückgegeben, höchster Wert befindet sich immer an dritter Stelle. + * @param troupNumberDefender Anzahl der Truppen auf dem ausgewählten Feld + */ + public int[] dice_defender(int troupNumberDefender) + { + if(troupNumberDefender == 1) + { + diceEyesDefender[0] = (int) (Math.random() * 6 +1); + return diceEyesDefender; + } + if(troupNumberDefender >=2 ) + { + diceEyesDefender[0] = (int) (Math.random() * 6 +1); + diceEyesDefender[1] = (int) (Math.random()* 6 +1); + // System.out.println(diceEyesDefender[0]); + // System.out.println(diceEyesDefender[1]); + return diceEyesDefender; + } + Arrays.sort(diceEyesDefender); + return diceEyesDefender; - - - } - - public int[] max_defender(int troupNumberDefender) - { - if(troupNumberDefender == 1) - { - diceEyesDefender[0] = (int) (Math.random() * 2 +4); - return diceEyesDefender; - } - if(troupNumberDefender >=2 ) - { - diceEyesDefender[0] = (int) (Math.random() * 2 +4); - diceEyesDefender[1] = (int) (Math.random()* 2 +4); - System.out.println(diceEyesDefender[0]); - System.out.println(diceEyesDefender[1]); - return diceEyesDefender; - } - Arrays.sort(diceEyesDefender); - return diceEyesDefender; - - - - - } - + + + } } diff --git a/Dice_Offender.java b/Dice_Offender.java index 241baf8..9afea92 100644 --- a/Dice_Offender.java +++ b/Dice_Offender.java @@ -1,7 +1,7 @@ /* - Hinweis zum Verbleib der Klasse: - Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. - Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. + Hinweis zum Verbleib der Klasse: + Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. + Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. */ import greenfoot.*; @@ -15,96 +15,56 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse */ public class Dice_Offender extends Dice { - /** - * Act - do whatever the Dice_Offender wants to do. This method is called whenever - * the 'Act' or 'Run' button gets pressed in the environment. - */ + /** + * Act - do whatever the Dice_Offender wants to do. This method is called whenever + * the 'Act' or 'Run' button gets pressed in the environment. + */ - int[] diceEyesOffender = new int[3]; - public void act() - { - // Add your action code here. - } + int[] diceEyesOffender = new int[3]; + public void act() + { + // Add your action code here. + } - /** - * Die Methode für das Würfeln mit bis zu drei Würfeln des Angreifers, es wird ein Array mit den drei Zahlen zurückgegeben, höchster Wert befindet sich immer an dritter Stelle. - * @param troupNumberOffender Anzahl der Truppen auf dem ausgewählten Feld - */ - public int[] dice_offender(int troupNumberOffender) - { - if(troupNumberOffender == 1) - { - System.out.println("Mit einer verbleibenden Truppe auff dem Feld kann man nicht angreifen!"); - } - if(troupNumberOffender == 2) - { - diceEyesOffender[0] = (int) (Math.random()*6+1); - System.out.println(diceEyesOffender[0]); - return diceEyesOffender; + /** + * Die Methode für das Würfeln mit bis zu drei Würfeln des Angreifers, es wird ein Array mit den drei Zahlen zurückgegeben, höchster Wert befindet sich immer an dritter Stelle. + * @param troupNumberOffender Anzahl der Truppen auf dem ausgewählten Feld + */ + public int[] dice_offender(int troupNumberOffender) + { + if(troupNumberOffender == 1) + { + System.out.println("Mit einer verbleibenden Truppe auff dem Feld kann man nicht angreifen!"); + } + if(troupNumberOffender == 2) + { + diceEyesOffender[0] = (int) (Math.random()*6+1); + // System.out.println(diceEyesOffender[0]); + return diceEyesOffender; - } - if(troupNumberOffender == 3) - { - diceEyesOffender[0] = (int) (Math.random() * 6 +1); - diceEyesOffender[1] = (int) (Math.random()* 6 +1); - System.out.println(diceEyesOffender[0]); - System.out.println(diceEyesOffender[1]); - return diceEyesOffender; - } - if(troupNumberOffender > 3) - { - diceEyesOffender[0] = (int) (Math.random() * 6 +1); - diceEyesOffender[1] = (int) (Math.random()* 6 +1); - diceEyesOffender[2] = (int) (Math.random()* 6 + 1); - System.out.println(diceEyesOffender[0]); - System.out.println(diceEyesOffender[1]); - System.out.println(diceEyesOffender[2]); - return diceEyesOffender; - } - Arrays.sort(diceEyesOffender); - return diceEyesOffender; + } + if(troupNumberOffender == 3) + { + diceEyesOffender[0] = (int) (Math.random() * 6 +1); + diceEyesOffender[1] = (int) (Math.random()* 6 +1); + // System.out.println(diceEyesOffender[0]); + // System.out.println(diceEyesOffender[1]); + return diceEyesOffender; + } + if(troupNumberOffender > 3) + { + diceEyesOffender[0] = (int) (Math.random() * 6 +1); + diceEyesOffender[1] = (int) (Math.random()* 6 +1); + diceEyesOffender[2] = (int) (Math.random()* 6 + 1); + // System.out.println(diceEyesOffender[0]); + // System.out.println(diceEyesOffender[1]); + // System.out.println(diceEyesOffender[2]); + return diceEyesOffender; + } + Arrays.sort(diceEyesOffender); + return diceEyesOffender; - - - } - - public int[] max_offender(int troupNumberOffender) - { - if(troupNumberOffender == 1) - { - System.out.println("Mit einer verbleibenden Truppe auff dem Feld kann man nicht angreifen!"); - } - if(troupNumberOffender == 2) - { - diceEyesOffender[0] = (int) (Math.random()*2+5); - System.out.println(diceEyesOffender[0]); - return diceEyesOffender; - - } - if(troupNumberOffender == 3) - { - diceEyesOffender[0] = (int) (Math.random() * 2 +5); - diceEyesOffender[1] = (int) (Math.random()* 2 +5); - System.out.println(diceEyesOffender[0]); - System.out.println(diceEyesOffender[1]); - return diceEyesOffender; - } - if(troupNumberOffender > 3) - { - diceEyesOffender[0] = (int) (Math.random() * 2 +5); - diceEyesOffender[1] = (int) (Math.random()* 2 +5); - diceEyesOffender[2] = (int) (Math.random()* 2 + 5); - System.out.println(diceEyesOffender[0]); - System.out.println(diceEyesOffender[1]); - System.out.println(diceEyesOffender[2]); - return diceEyesOffender; - } - - Arrays.sort(diceEyesOffender); - return diceEyesOffender; - - - - } - + + + } } diff --git a/Fight.java b/Fight.java new file mode 100644 index 0000000..93cb8ec --- /dev/null +++ b/Fight.java @@ -0,0 +1,164 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) +import java.util.Arrays; +import javax.swing.JOptionPane; + +/** + * Write a description of class Fight here. + * + * @author (your name) + * @version (a version number or a date) + */ +public class Fight extends Map_World +{ + + /** + * Constructor for objects of class Fight. + * + */ + Province offenderProvince; + Province defenderProvince; + String maxDiceOffender = ""; + String maxDiceDefender = ""; + + public Fight(String[] playerList, int[] colorList) + { + super(playerList,colorList); + + } + + public void test() + { + provinces[1].setEntityCount(10); + provinces[2].setEntityCount(20); + provinces[1].setOwner(1); + provinces[2].setOwner(2); + provinces[1].redrawProvince(); + provinces[2].redrawProvince(); + + } + + public void act() + { + if(offenderProvince == null) + { + + OffenderProvince(); + } + else + { + defenderProvince(); + } + } + + private void OffenderProvince() + { + for ( int i = 1; i <= provinceCount; i++) + { + if (provinces[i].hasClicked() == true) + { + offenderProvince = provinces[i]; + // System.out.println("Die Provinz " + provinces[i].getDisplayName() + " wurde als angreifende Provinz ausgewählt! Sie gehört Spieler" + provinces[i].getOwner()); + } + } + } + + private void defenderProvince() + { + { + for (int i = 1; i <= provinceCount; i++) + { + if (provinces[i].hasClicked() == true)//&& defenderProvince != offenderProvince) + { + defenderProvince = provinces[i]; + // System.out.println("Die Provinz " + provinces[i].getDisplayName() + " wurde als verteidigende Provinz ausgewählt! Sie gehört Spieler" + provinces[i].getOwner()); + chooser(); + break; + } + } + } + } + + private void chooser() + { + System.out.println("Es wird gewürfelt!"); + Dice_Offender diceOffender = new Dice_Offender(); + // System.out.println("Der Angreifer ereichte folgende Würfelzahlen:"); + int[] maxDiceOffenderArray = diceOffender.dice_offender(offenderProvince.getEntityCount()); + Dice_Defender diceDefender = new Dice_Defender(); + // System.out.println("Der Verteidiger ereichte folgende Würfelzahlen:"); + int[] maxDiceDefenderArray = diceDefender.dice_defender(defenderProvince.getEntityCount()); + Arrays.sort(maxDiceOffenderArray); + Arrays.sort(maxDiceDefenderArray); + + for(int i = 0;i<3;i++) + { + if(i == 0) + { + maxDiceOffender = "" + maxDiceOffenderArray[i]; + } + else + { + maxDiceOffender = maxDiceOffender + ";" + maxDiceOffenderArray[i]; + } + } + for(int i = 0;i<2;i++) + { + if(i == 0) + { + maxDiceDefender = "" + maxDiceDefenderArray[i]; + } + else + { + maxDiceDefender = maxDiceDefender + ";" + maxDiceDefenderArray[i]; + } + + } + JOptionPane.showMessageDialog(null,"Es wurde gewürfelt. Der Angreifer erreichte folgende Würfelzahlen: " + maxDiceOffender + "\n Der Verteidiger erreichte diese Würfelzahlen: " + maxDiceDefender); + diceOffender = null; + diceDefender = null; + decider(maxDiceOffenderArray, maxDiceDefenderArray); + } + + private void decider(int[] maxDiceOffender, int [] maxDiceDefender) + { + + int maxDefender = maxDiceDefender[1]; + int maxOffender = maxDiceOffender[2]; + if (maxOffender > maxDefender && defenderProvince.getEntityCount()>1) + { + int EntitiesOffender = offenderProvince.getEntityCount(); + int EntitiesDefender = defenderProvince.getEntityCount(); + defenderProvince.setEntityCount(EntitiesDefender - 1); + JOptionPane.showMessageDialog(null,"Somit gewinnt der Angreifer (Spieler " + offenderProvince.getOwner() + ").Dem Verteidiger (Spieler " + defenderProvince.getOwner() + ") wird eine Einheit abgezogen. Er hat nun noch " + defenderProvince.getEntityCount() + " Einheiten"); + + } + + if (maxOffender < maxDefender && offenderProvince.getEntityCount()>1) + { + int EntitiesOffender = offenderProvince.getEntityCount(); + int EntitiesDefender = defenderProvince.getEntityCount(); + offenderProvince.setEntityCount(EntitiesOffender - 1); + JOptionPane.showMessageDialog(null,"Somit gewinnt der Verteidiger (Spieler " + defenderProvince.getOwner() + ").Dem Angreifer (Spieler " + defenderProvince.getOwner() + ") wird eine Einheit abgezogen. Er hat nun noch " + offenderProvince.getEntityCount() + " Einheiten"); + } + + if (maxOffender == maxDefender && offenderProvince.getEntityCount()>1) + { + int EntitiesOffender = offenderProvince.getEntityCount(); + int EntitiesDefender = defenderProvince.getEntityCount(); + offenderProvince.setEntityCount(EntitiesOffender - 1); + JOptionPane.showMessageDialog(null,"Da es unentschieden ist, gewinnt der Verteidiger (Spieler " + defenderProvince.getOwner() + ").Dem Angreifer (Spieler " + defenderProvince.getOwner() + ") wird eine Einheit abgezogen. Er hat nun noch " + offenderProvince.getEntityCount() + " Einheiten"); + } + + if (maxOffender>maxDefender && defenderProvince.getEntityCount()==1) + { + defenderProvince.setOwner(offenderProvince.getOwner()); + defenderProvince.setEntityCount(0); + JOptionPane.showMessageDialog(null,"Somit gewinnt der Angreifer (Spieler " + offenderProvince.getOwner() + "). Die Provinz gehört fortan dem Angreifer (" + offenderProvince.getOwner() + ")"); + } + offenderProvince = null; + defenderProvince = null; + + } +} + +//Ein <3 für Felix (von Aaron)(geschrieben von Samuel)(aber Aaron wollte das ich des schreib) diff --git a/GeneralMap.java b/GeneralMap.java index edf4909..b9a43b2 100644 --- a/GeneralMap.java +++ b/GeneralMap.java @@ -13,332 +13,332 @@ neue Maps werden als Unterklasse dieser Klasse eingefügt. */ public abstract class GeneralMap extends World implements ButtonEvent { - /* - Felder, im Moment nur Anzahl der Provinzen - Später evtl. weitere Werte wie Schwierigkeit denkbar - */ - - private final int X_OFFSET = 160; // Verschiebt die Provinzen nach rechts - private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten - - /* - Die einzelnen Positionen der Provinzen wird mit SCALE_VALUE/10000 multipliziert. - Dies ist nützlich, wenn die Karte beispielsweise nur noch 80% der Originalgröße bei ihrer Darstellung groß ist. - Bei diesem Beispiel wäre hier, neben dem Offset oben, der Wert 0.8 einzutragen. - */ - private final double SCALE_VALUE = 1; - - protected enum GameStates { - KAMPF, - VERSCHIEBEN - } - - protected Province[] provinces; - protected Player[] players; - - protected int currentPlayer = 0; - protected GameStates status = GameStates.VERSCHIEBEN; - - Province offenderProvince; - Province defenderProvince; - - Province savedProvince = null; - - /** - Erstellt eine GeneralMap mit allen Eigenschaften und initialisiert die Arrays für Provinzen und Spieler. - @param backImage Das Hintergrundbild, welches von dieser Klasse geladen und dargestellt wird. - @param playerList Die Liste mit den Namen der Spieler - @param colorList Die Liste mit den Farben der Spieler - */ - public GeneralMap(String backImage, String[] playerList, int[] colorList) - { - super(1600,900,1); - players = new Player[playerList.length]; - for (int i = 0; i < playerList.length; i++) { - players[i] = new Player(i,playerList[i],colorList[i]); - } + /* + Felder, im Moment nur Anzahl der Provinzen + Später evtl. weitere Werte wie Schwierigkeit denkbar + */ + + private final int X_OFFSET = 160; // Verschiebt die Provinzen nach rechts + private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten + + /* + Die einzelnen Positionen der Provinzen wird mit SCALE_VALUE/10000 multipliziert. + Dies ist nützlich, wenn die Karte beispielsweise nur noch 80% der Originalgröße bei ihrer Darstellung groß ist. + Bei diesem Beispiel wäre hier, neben dem Offset oben, der Wert 0.8 einzutragen. + */ + private final double SCALE_VALUE = 1; + + protected enum GameStates { + KAMPF, + VERSCHIEBEN + } + + protected Province[] provinces; + protected Player[] players; + + protected int currentPlayer = 0; + protected GameStates status = GameStates.VERSCHIEBEN; + + Province offenderProvince; + Province defenderProvince; + + Province savedProvince = null; + + /** + Erstellt eine GeneralMap mit allen Eigenschaften und initialisiert die Arrays für Provinzen und Spieler. + @param backImage Das Hintergrundbild, welches von dieser Klasse geladen und dargestellt wird. + @param playerList Die Liste mit den Namen der Spieler + @param colorList Die Liste mit den Farben der Spieler + */ + public GeneralMap(String backImage, String[] playerList, int[] colorList) + { + super(1600,900,1); + players = new Player[playerList.length]; + for (int i = 0; i < playerList.length; i++) { + players[i] = new Player(i,playerList[i],colorList[i]); + } createPlayerObjects(playerList.length); - } + } private void createPlayerObjects(int playerCount) { - addObject(players[0],82,110); - - if (playerCount > 1) - { - addObject(players[1],82,230); - - if (playerCount > 2) - { - addObject(players[2],82,350); - - if (playerCount > 3) - { - addObject(players[3],1512,110); - - if (playerCount > 4) - { - addObject(players[4],1512,230); - - if (playerCount > 5) - - { - addObject(players[5],1512,350); - } - } - } - } - } - } - - /** - Fügt alle Provinzen aus dem Array der Welt an der entsprechden Stelle zu. - */ - protected void initProvinces() { - for(int i = 1; i < provinces.length; i++) { - addObject(provinces[i],((int) Math.floor(provinces[i].getXPos() * SCALE_VALUE)) + X_OFFSET,((int) Math.floor(provinces[i].getYPos() * SCALE_VALUE)) + Y_OFFSET); - } - } - - public void act() { - if(status == GameStates.KAMPF) { - if(offenderProvince == null) - { - OffenderProvince(); - } - else - { - defenderProvince(); - } - } 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; - } - } - } - } - - /** - Gibt die Anzahl der vorhandenen Spieler aus. - */ - public int getPlayerCount() - { - return players.length; - } - - /** - Gibt den Namen des aktuellen Spielers aus. - @return Der Name des aktuellen Spielers - */ - public String getPlayerName() - { - return players[currentPlayer].getDisplayName(); - } - - /** - Gibt den Namen des Spielers aus, dem dessen ID gehört. - @param plID Die ID des zu findenden Spielers - @return Der Name des Spielers - */ - public String getPlayerName(int plID) - { - return players[plID].getDisplayName(); - } - - /** - Gibt die Anzahl der Sterne des aktuellen Spielers zurück. - @return Die Anzahl der Sterne des aktuellen Spielers - */ - public int getPlayerStars() - { - return players[currentPlayer].getStars(); - } - - /** - Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört. - @param prID Die gefragte Provinz - */ - public int getProvinceOwner(int prID) - { - if(prID < 1 || prID > provinces.length) { - return -1; - } - return provinces[prID].getOwner(); - } - - /** - Gibt eine Liste mit allen Provinzen und deren Besitzern zurück. - @return Array mit der Provinz-ID als Index und dem Besitzer als Wert - */ - public int[] getProvinceOwners() - { - int[] prOwners = new int[provinces.length]; - for (int i = 1; i > provinces.length; i++) { - prOwners[i] = provinces[i].getOwner(); - } - return prOwners; - } - - /** - Zählt die Anzahl der Einheiten von allen Provinzen zusammen, die einem bestimmten Spieler gehört. - @param playerID Die ID des Spielers, für den die Einheiten gezählt werden sollen. - @return Die Anzahl der Einheiten, die dem Spieler gehören. - */ - public int getProvinceEntityCount(int playerID) - { - int c = 0; - for (int i = 1; i > provinces.length; i++) { - if(provinces[i].getOwner() == playerID) { - c = c + provinces[i].getEntityCount(); - } - } - return c; - } - - public void buttonClicked(Button b) { - if(status == GameStates.KAMPF) { - status = GameStates.VERSCHIEBEN; - } else if(status == GameStates.VERSCHIEBEN) { - status = GameStates.KAMPF; - currentPlayer++; - if(currentPlayer >= players.length) { - currentPlayer = 0; - } - } - } - - // Kampfsystem - - private void OffenderProvince() - { - for ( int i = 1; i <= (provinces.length - 1); i++) - { - if (provinces[i].hasClicked() == true) - { - offenderProvince = provinces[i]; - System.out.println("1"); - } - } - } - - private void defenderProvince() - { - { - for (int i = 1; i <= (provinces.length - 1); i++) - { - if (provinces[i].hasClicked() == true)//&& defenderProvince != offenderProvince) - { - defenderProvince = provinces[i]; - System.out.println("2"); - chooser(); - break; - } - } - } - } - - private void chooser() - { - Dice_Offender diceOffender = new Dice_Offender(); - int[] maxDiceOffender = diceOffender.max_offender(offenderProvince.getEntityCount()); - Dice_Defender diceDefender = new Dice_Defender(); - int[] maxDiceDefender = diceDefender.max_defender(defenderProvince.getEntityCount()); - Arrays.sort(maxDiceOffender); - Arrays.sort(maxDiceDefender); - decider(maxDiceOffender, maxDiceDefender); - } - - private void decider(int[] maxDiceOffender, int [] maxDiceDefender) - { - int maxDefender = maxDiceDefender[1]; - int maxOffender = maxDiceOffender[2]; - if (maxOffender>maxDefender && defenderProvince.getEntityCount()>1) - { - int EntitiesOffender = offenderProvince.getEntityCount(); - int EntitiesDefender = defenderProvince.getEntityCount(); - defenderProvince.setEntityCount(EntitiesDefender - 1); - } - - if (maxOffender1) - { - int EntitiesOffender = offenderProvince.getEntityCount(); - int EntitiesDefender = defenderProvince.getEntityCount(); - offenderProvince.setEntityCount(EntitiesOffender - 1); - } - - if (maxOffender>maxDefender && defenderProvince.getEntityCount()==1) - { - defenderProvince.setOwner(offenderProvince.getOwner()); - defenderProvince.setEntityCount(0); - } - - if (maxOffender>maxDefender && offenderProvince.getEntityCount()==1) - { - offenderProvince.setOwner(defenderProvince.getOwner()); - offenderProvince.setEntityCount(0); - } - System.out.println("3"); - offenderProvince = null; - defenderProvince = null; - } - - // Einheiten verschieben - - /** - * Nimmt zwei Provinzen entgegen, und fragt, wieviele Einheiten vom ersten zum zweiten Eintrag verschoben werden sollen. - * Überprüft, ob eine Verschiebung möglich ist und führt sie bei Erfolg aus. - */ - private void moveEntities(Province sourceProvince, Province destinationProvince) - { - String toMoveString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du verschieben?"); - int entitiesToMove = Utils.StringToInt(toMoveString); - - if (entitiesToMove == 0) { - JOptionPane.showMessageDialog(null,"Bitte eine Zahl eingeben, Kommandant " + getPlayerName() + "."); - return; - } - - if ( (sourceProvince.getEntityCount() - entitiesToMove) > 0) - { - sourceProvince.removeFromEntities(entitiesToMove); - destinationProvince.addToEntities(entitiesToMove); - JOptionPane.showMessageDialog(null,"Einheiten erfolgreich verschoben, Kommandant " + getPlayerName() + "."); - } - - else if ( (sourceProvince.getEntityCount() - entitiesToMove) <= 0) - { - JOptionPane.showMessageDialog(null,"Du hast nicht genügend Einheiten, um die gewünschte Anzahl von " + sourceProvince.getDisplayName() + " nach " + destinationProvince.getDisplayName() + " zu verschieben, Köhler."); - } - } - - /** - * Speichert ein gegebene Provinz als savedProvince ein, insofern dieser Platz nicht bereits belegt ist. - * Ist er das, so wird überprüft, ob eine neue, an savedProvince angrenzende Provinz angeklickt wurde. - * Ist dies der Fall, werden beide Provinzen an moveEntities übergeben. - */ - private void useProvincesToMove(Province givenProvince) - { - if (savedProvince == null) - { - savedProvince = givenProvince; - } - - else if ((savedProvince != null) && (givenProvince != savedProvince) && (savedProvince.getOwner() == givenProvince.getOwner()) && (savedProvince.getOwner() == currentPlayer) ) - { - if (givenProvince.isProvinceNear(savedProvince.getID()) == true) - { - moveEntities(savedProvince,givenProvince); - } - - savedProvince = null; - } - } + addObject(players[0],82,110); + + if (playerCount > 1) + { + addObject(players[1],82,230); + + if (playerCount > 2) + { + addObject(players[2],82,350); + + if (playerCount > 3) + { + addObject(players[3],1512,110); + + if (playerCount > 4) + { + addObject(players[4],1512,230); + + if (playerCount > 5) + + { + addObject(players[5],1512,350); + } + } + } + } + } + } + + /** + Fügt alle Provinzen aus dem Array der Welt an der entsprechden Stelle zu. + */ + protected void initProvinces() { + for(int i = 1; i < provinces.length; i++) { + addObject(provinces[i],((int) Math.floor(provinces[i].getXPos() * SCALE_VALUE)) + X_OFFSET,((int) Math.floor(provinces[i].getYPos() * SCALE_VALUE)) + Y_OFFSET); + } + } + + public void act() { + if(status == GameStates.KAMPF) { + if(offenderProvince == null) + { + OffenderProvince(); + } + else + { + defenderProvince(); + } + } 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; + } + } + } + } + + /** + Gibt die Anzahl der vorhandenen Spieler aus. + */ + public int getPlayerCount() + { + return players.length; + } + + /** + Gibt den Namen des aktuellen Spielers aus. + @return Der Name des aktuellen Spielers + */ + public String getPlayerName() + { + return players[currentPlayer].getDisplayName(); + } + + /** + Gibt den Namen des Spielers aus, dem dessen ID gehört. + @param plID Die ID des zu findenden Spielers + @return Der Name des Spielers + */ + public String getPlayerName(int plID) + { + return players[plID].getDisplayName(); + } + + /** + Gibt die Anzahl der Sterne des aktuellen Spielers zurück. + @return Die Anzahl der Sterne des aktuellen Spielers + */ + public int getPlayerStars() + { + return players[currentPlayer].getStars(); + } + + /** + Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört. + @param prID Die gefragte Provinz + */ + public int getProvinceOwner(int prID) + { + if(prID < 1 || prID > provinces.length) { + return -1; + } + return provinces[prID].getOwner(); + } + + /** + Gibt eine Liste mit allen Provinzen und deren Besitzern zurück. + @return Array mit der Provinz-ID als Index und dem Besitzer als Wert + */ + public int[] getProvinceOwners() + { + int[] prOwners = new int[provinces.length]; + for (int i = 1; i > provinces.length; i++) { + prOwners[i] = provinces[i].getOwner(); + } + return prOwners; + } + + /** + Zählt die Anzahl der Einheiten von allen Provinzen zusammen, die einem bestimmten Spieler gehört. + @param playerID Die ID des Spielers, für den die Einheiten gezählt werden sollen. + @return Die Anzahl der Einheiten, die dem Spieler gehören. + */ + public int getProvinceEntityCount(int playerID) + { + int c = 0; + for (int i = 1; i > provinces.length; i++) { + if(provinces[i].getOwner() == playerID) { + c = c + provinces[i].getEntityCount(); + } + } + return c; + } + + public void buttonClicked(Button b) { + if(status == GameStates.KAMPF) { + status = GameStates.VERSCHIEBEN; + } else if(status == GameStates.VERSCHIEBEN) { + status = GameStates.KAMPF; + currentPlayer++; + if(currentPlayer >= players.length) { + currentPlayer = 0; + } + } + } + + // Kampfsystem + + private void OffenderProvince() + { + for ( int i = 1; i <= (provinces.length - 1); i++) + { + if (provinces[i].hasClicked() == true) + { + offenderProvince = provinces[i]; + System.out.println("1"); + } + } + } + + private void defenderProvince() + { + { + for (int i = 1; i <= (provinces.length - 1); i++) + { + if (provinces[i].hasClicked() == true)//&& defenderProvince != offenderProvince) + { + defenderProvince = provinces[i]; + System.out.println("2"); + chooser(); + break; + } + } + } + } + + private void chooser() + { + Dice_Offender diceOffender = new Dice_Offender(); + int[] maxDiceOffender = diceOffender.max_offender(offenderProvince.getEntityCount()); + Dice_Defender diceDefender = new Dice_Defender(); + int[] maxDiceDefender = diceDefender.max_defender(defenderProvince.getEntityCount()); + Arrays.sort(maxDiceOffender); + Arrays.sort(maxDiceDefender); + decider(maxDiceOffender, maxDiceDefender); + } + + private void decider(int[] maxDiceOffender, int [] maxDiceDefender) + { + int maxDefender = maxDiceDefender[1]; + int maxOffender = maxDiceOffender[2]; + if (maxOffender>maxDefender && defenderProvince.getEntityCount()>1) + { + int EntitiesOffender = offenderProvince.getEntityCount(); + int EntitiesDefender = defenderProvince.getEntityCount(); + defenderProvince.setEntityCount(EntitiesDefender - 1); + } + + if (maxOffender1) + { + int EntitiesOffender = offenderProvince.getEntityCount(); + int EntitiesDefender = defenderProvince.getEntityCount(); + offenderProvince.setEntityCount(EntitiesOffender - 1); + } + + if (maxOffender>maxDefender && defenderProvince.getEntityCount()==1) + { + defenderProvince.setOwner(offenderProvince.getOwner()); + defenderProvince.setEntityCount(0); + } + + if (maxOffender>maxDefender && offenderProvince.getEntityCount()==1) + { + offenderProvince.setOwner(defenderProvince.getOwner()); + offenderProvince.setEntityCount(0); + } + System.out.println("3"); + offenderProvince = null; + defenderProvince = null; + } + + // Einheiten verschieben + + /** + * Nimmt zwei Provinzen entgegen, und fragt, wieviele Einheiten vom ersten zum zweiten Eintrag verschoben werden sollen. + * Überprüft, ob eine Verschiebung möglich ist und führt sie bei Erfolg aus. + */ + private void moveEntities(Province sourceProvince, Province destinationProvince) + { + String toMoveString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du verschieben?"); + int entitiesToMove = Utils.StringToInt(toMoveString); + + if (entitiesToMove == 0) { + JOptionPane.showMessageDialog(null,"Bitte eine Zahl eingeben, Kommandant " + getPlayerName() + "."); + return; + } + + if ( (sourceProvince.getEntityCount() - entitiesToMove) > 0) + { + sourceProvince.removeFromEntities(entitiesToMove); + destinationProvince.addToEntities(entitiesToMove); + JOptionPane.showMessageDialog(null,"Einheiten erfolgreich verschoben, Kommandant " + getPlayerName() + "."); + } + + else if ( (sourceProvince.getEntityCount() - entitiesToMove) <= 0) + { + JOptionPane.showMessageDialog(null,"Du hast nicht genügend Einheiten, um die gewünschte Anzahl von " + sourceProvince.getDisplayName() + " nach " + destinationProvince.getDisplayName() + " zu verschieben, Köhler."); + } + } + + /** + * Speichert ein gegebene Provinz als savedProvince ein, insofern dieser Platz nicht bereits belegt ist. + * Ist er das, so wird überprüft, ob eine neue, an savedProvince angrenzende Provinz angeklickt wurde. + * Ist dies der Fall, werden beide Provinzen an moveEntities übergeben. + */ + private void useProvincesToMove(Province givenProvince) + { + if (savedProvince == null) + { + savedProvince = givenProvince; + } + + else if ((savedProvince != null) && (givenProvince != savedProvince) && (savedProvince.getOwner() == givenProvince.getOwner()) && (savedProvince.getOwner() == currentPlayer) ) + { + if (givenProvince.isProvinceNear(savedProvince.getID()) == true) + { + moveEntities(savedProvince,givenProvince); + } + + savedProvince = null; + } + } } diff --git a/Menue_Button.java b/Menue_Button.java index c0734ff..2a527a9 100644 --- a/Menue_Button.java +++ b/Menue_Button.java @@ -1,7 +1,7 @@ /* - Hinweis zum Verbleib der Klasse: - Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. - Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. + Hinweis zum Verbleib der Klasse: + Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. + Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. */ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) @@ -14,16 +14,16 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) */ public class Menue_Button extends Button { - public Menue_Button(ButtonEvent h) { - super(h); - } - - /** - * Act - do whatever the Menue_Button wants to do. This method is called whenever - * the 'Act' or 'Run' button gets pressed in the environment. - */ - public void act() - { - setLocation(100,38);// Add your action code here. - } + public Menue_Button(ButtonEvent h) { + super(h); + } + + /** + * Act - do whatever the Menue_Button wants to do. This method is called whenever + * the 'Act' or 'Run' button gets pressed in the environment. + */ + public void act() + { + setLocation(100,38);// Add your action code here. + } } diff --git a/Player.java b/Player.java index 3d5d2fe..2def1b0 100644 --- a/Player.java +++ b/Player.java @@ -1,4 +1,5 @@ import greenfoot.*; +import java.awt.Color; /** * Write a description of class Player here. @@ -8,193 +9,265 @@ import greenfoot.*; */ public class Player extends Actor { - @Override public GeneralMap getWorld(){ - return (GeneralMap) super.getWorld(); - } - int stars=0; - int add=0; - int id=0; - int provZahl=0; - int provVgl=0; - int [] stats = new int [6]; - boolean [] pBesitzer = new boolean [42]; - boolean gotProv = false; - boolean lostProv = false; - - private String n; - private int c; - //definiert die ID und Namens Variable - public Player( int identity,String name, int color) - { - n = name; - id = identity; - c = color; - } - //gibt die Spieler ID zurück - public int getID() - { - return id; - } - // gibt den Spielernamen zurück - public String getDisplayName () - { - return n; - } - //gibt die Sternenanzahl zurück - public int getStars () - { - return stars; - } - // erhöht die Sternenzahl um eine random ausgewählte Anzahl von 1-3 - public void addToStars () - { - - int rand; - int pre; - rand = (int)(1+6*Math.random()); - if (rand == 1 || rand == 2|| rand == 3) - { - add = 1; - } - if (rand == 4|| rand == 5) - { - add = 2; - } - if (rand == 6) - { - add = 3; - } - if (gotProv== true) - { - pre = stars; - stars+=add; - System.out.println("Deine vorherige Sternenanzahl betrug " + pre + "."); - System.out.println("Du hast " + add + " Sterne erhalten."); - System.out.println("Deine aktuelle Sternenanzahl beträgt " + stars + "."); - - } - } - //eine Methode um addToStars zu testen - public void add () - { - addToStars(); - } - //eine für das Testen gedachte Methode, die die Anzahl der Sterne auf ein gewünschtes Maß setzt - public int setStars (int set) - { - stars = set; - return stars; - } - //eine Methode, die das Abziehen von Sternen testet und, wenn das Ergebnis >= 0 ist, die Sternenanzahl um eine gewählte Anzahl verringert - public int removeFromStars(int sub) - { - int s; - - s = stars - sub; - if (s>=0) - { - stars = s; - } - else - { - System.out.println ("Du hast nur " + stars + " Sterne, du kannst also nicht " + sub + " Sterne abziehen"); - } - return stars; - } - - public int getProvinceCount () - { - GeneralMap w= getWorld(); - int[] provinces = w.getProvinceOwners(); - for (int x=0; x<=42; x++ ) - { - if ( provinces [x] ==id) - { - provZahl++; - - } - } - if(stats[2] < provZahl) - { - stats[2]=provZahl; - - } - return provZahl; - } - - public void gotEntities(int gotEnt) - { - stats[3]+= gotEnt; - } - public void lostEntity() - { - stats[4]+=1; - } - private void maxEntities(int entNumber) - { - if (stats[5]< entNumber) - { - stats[5]=entNumber; - } - } - public boolean[] getMyProvinces() - { - GeneralMap w= getWorld(); - int[] provinces = w.getProvinceOwners(); - for (int x=0; x<=42; x++) - { - if (provinces[x]== id) - { - pBesitzer[x]=true; - } - else - { - pBesitzer[x]=false; - } - - } - return pBesitzer; - } - - private void gotlostProvince() - { - if (provVgl== provZahl) - { - gotProv = false; - lostProv =false; - - } - if(provVgl< provZahl) - { - gotProv = true; - lostProv = false; - stats[0]+=1; - } - if (provVgl > provZahl) - { - gotProv = false; - lostProv = true; - stats[1]+=1; - } - provVgl = provZahl; - } - - public boolean getGotProvince () - { - return gotProv; - } - - public boolean getLostProvince() - { - return lostProv; - } - public int[] getStatistics() - { - return stats; - } - private void redrawPlayer() - { - //Platzhalter - int x=0; - } + @Override public GeneralMap getWorld(){ + return (GeneralMap) super.getWorld(); + } + int stars=0; + int add=0; + int id=0; + int provZahl=0; + int provVgl=0; + int [] stats = new int [6]; + boolean [] pBesitzer = new boolean [42]; + boolean gotProv = false; + boolean lostProv = false; + int identity; + String name; + int color; + int textsize; + + private String n; + private int c; + //definiert die ID und Namens Variable + public Player( int identity,String name, int color) + { + n = name; + id = identity; + c = color; + } + //gibt die Spieler ID zurück + public int getID() + { + return id; + } + // gibt den Spielernamen zurück + public String getDisplayName () + { + return n; + } + //gibt die Sternenanzahl zurück + public int getStars () + { + return stars; + } + // erhöht die Sternenzahl um eine random ausgewählte Anzahl von 1-3 + public void addToStars () + { + + int rand; + int pre; + rand = (int)(1+6*Math.random()); + if (rand == 1 || rand == 2|| rand == 3) + { + add = 1; + } + if (rand == 4|| rand == 5) + { + add = 2; + } + if (rand == 6) + { + add = 3; + } + if (gotProv== true) + { + pre = stars; + stars+=add; + System.out.println("Deine vorherige Sternenanzahl betrug " + pre + "."); + System.out.println("Du hast " + add + " Sterne erhalten."); + System.out.println("Deine aktuelle Sternenanzahl beträgt " + stars + "."); + + } + } + //eine Methode um addToStars zu testen + public void add () + { + addToStars(); + } + //eine für das Testen gedachte Methode, die die Anzahl der Sterne auf ein gewünschtes Maß setzt + public int setStars (int set) + { + stars = set; + return stars; + } + //eine Methode, die das Abziehen von Sternen testet und, wenn das Ergebnis >= 0 ist, die Sternenanzahl um eine gewählte Anzahl verringert + public int removeFromStars(int sub) + { + int s; + + s = stars - sub; + if (s>=0) + { + stars = s; + } + else + { + System.out.println ("Du hast nur " + stars + " Sterne, du kannst also nicht " + sub + " Sterne abziehen"); + } + return stars; + } + + public int getProvinceCount () + { + GeneralMap w= getWorld(); + int[] provinces = w.getProvinceOwners(); + for (int x=0; x<=42; x++ ) + { + if ( provinces [x] ==id) + { + provZahl++; + + } + } + if(stats[2] < provZahl) + { + stats[2]=provZahl; + + } + return provZahl; + } + + public void gotEntities(int gotEnt) + { + stats[3]+= gotEnt; + } + + public void lostEntity() + { + stats[4]+=1; + } + + private void maxEntities(int entNumber) + { + if (stats[5]< entNumber) + { + stats[5]=entNumber; + } + } + + public boolean[] getMyProvinces() + { + GeneralMap w= getWorld(); + int[] provinces = w.getProvinceOwners(); + for (int x=0; x<=42; x++) + { + if (provinces[x]== id) + { + pBesitzer[x]=true; + } + else + { + pBesitzer[x]=false; + } + + } + return pBesitzer; + } + + private void gotlostProvince() + { + if (provVgl== provZahl) + { + gotProv = false; + lostProv =false; + + } + if(provVgl< provZahl) + { + gotProv = true; + lostProv = false; + stats[0]+=1; + } + if (provVgl > provZahl) + { + gotProv = false; + lostProv = true; + stats[1]+=1; + } + provVgl = provZahl; + } + + public boolean getGotProvince () + { + return gotProv; + } + + public boolean getLostProvince() + { + return lostProv; + } + + public int[] getStatistics() + { + return stats; + } + public int setColor(int c) + { + color = c; + return color; + } + + public void redrawPlayer() + { + int textSize = 20; + GreenfootImage statistics = new GreenfootImage(137,120); + GreenfootImage Name = new GreenfootImage(n,textSize,new Color(0,0,0),new Color(1.0f,1.0f,1.0f,0.5f)); + statistics.drawImage(Name,0,0); + + setImage(statistics); + oDecide(statistics,textSize); + } + + private void oDecide(GreenfootImage statistics,int textSize) + { + GreenfootImage flag = new GreenfootImage("images\\BlaueArmee.jpg"); + redraw(statistics,flag,textSize); + switch(color) + { + case 2: + flag = new GreenfootImage("images\\BlaueArmee.jpg"); + + redraw(statistics,flag,textSize); + break; + case 5: + flag = new GreenfootImage("images\\GelbeArmee.jpg"); + + redraw(statistics,flag,textSize); + break; + case 6: + flag = new GreenfootImage("images\\LilaArmee.jpg"); + + redraw(statistics,flag,textSize); + break; + case 4: + flag = new GreenfootImage("images\\RoteArmee.jpg"); + + redraw(statistics,flag,textSize); + break; + case 1: + flag = new GreenfootImage("images\\SchwarzeArmee.jpg"); + + redraw(statistics,flag,textSize); + break; + case 3: + flag = new GreenfootImage("images\\Gr++neArmee.jpg"); + + redraw(statistics,flag,textSize); + break; + } + + } + + private void redraw(GreenfootImage statistics,GreenfootImage flag, int textSize) + { + + flag.scale(137,100); + statistics.drawImage(flag,0,textSize); + GreenfootImage playerStatistics = new GreenfootImage(stats[0] + "||" + stats[1] + "||" + stats[2],textSize,new Color(0,0,0),new Color(1.0f,1.0f,1.0f,0.5f)); + GreenfootImage playerStatistics2 = new GreenfootImage(stats[3] + "||" + stats[4] + "||" + stats[5],textSize,new Color(0,0,0),new Color(1.0f,1.0f,1.0f,0.5f)); + statistics.drawImage(playerStatistics, 0, 123); + statistics.drawImage(playerStatistics2, 0, 123 + textSize); + + setImage(statistics); + } } diff --git a/Province.java b/Province.java index 7466c4c..003c777 100644 --- a/Province.java +++ b/Province.java @@ -9,264 +9,277 @@ import java.awt.Color; */ public class Province extends Actor { - @Override public GeneralMap getWorld() { - return (GeneralMap) super.getWorld(); - } - - private int stars = 1; - private int provinceID; - private String displayName; - private int owner; - private boolean[] nextProvinces; - private int continentID; - private int xPos; - private int yPos; - private int eCount; - - private boolean clicked = false; - - /** - * Überprüft, ob die Provinz angeklickt wurde. - */ - public void act() - { - if(Greenfoot.mouseClicked(this)) { - clicked = true; - } - } + @Override public GeneralMap getWorld() { + return (GeneralMap) super.getWorld(); + } - // Haupt-Konstruktor - public Province(int pID, int cID, int x, int y, int st, String s1, int[] ia1) - { - provinceID = pID; - continentID = cID; - xPos = x; - yPos = y; - if(st > 0) { - stars = st; - } - displayName = s1; - // Der Teil, der sich um die Konvertierung des int-Array in ein boolean-Array kümmert. - int maxNum = 0; - for(int i = 0; i < ia1.length; i++) { - if(maxNum < ia1[i]) { - maxNum = ia1[i]; - } - } - nextProvinces = new boolean[maxNum+1]; - for(int i = 0; i < ia1.length; i++) { - if(ia1[i] >= 0) { - nextProvinces[ia1[i]] = true; - } - } - } + private int stars = 1; + private int provinceID; + private String displayName; + private int owner = 0; + private boolean[] nextProvinces; + private int continentID; + private int xPos; + private int yPos; + private int eCount; - // Zweiter Konstruktor, um auch das boolean-Array gegebenenfalls verwenden zu könnnen. - public Province(int pID, int cID, int x, int y, int st, String s1, boolean[] ba1) - { - provinceID = pID; - continentID = cID; - xPos = x; - yPos = y; - if(st > 0) { - stars = st; - } - displayName = s1; - nextProvinces = Utils.copyArray(ba1); - } + private boolean clicked = false; - // Liefert die X-Position als Integer - public int getXPos() - { - return xPos; - } + /** + * Überprüft, ob die Provinz angeklickt wurde. + */ + public void act() + { + if(Greenfoot.mouseClicked(this)) { + clicked = true; + } + } - // Liefert die Y-Position als Integer - public int getYPos() - { - return yPos; - } + // Haupt-Konstruktor + public Province(int pID, int cID, int x, int y, int st, String s1, int[] ia1) + { + provinceID = pID; + continentID = cID; + xPos = x; + yPos = y; + if(st > 0) { + stars = st; + } + displayName = s1; + // Der Teil, der sich um die Konvertierung des int-Array in ein boolean-Array kümmert. + int maxNum = 0; + for(int i = 0; i < ia1.length; i++) { + if(maxNum < ia1[i]) { + maxNum = ia1[i]; + } + } + nextProvinces = new boolean[maxNum+1]; + for(int i = 0; i < ia1.length; i++) { + if(ia1[i] >= 0) { + nextProvinces[ia1[i]] = true; + } + } + } - // Liefert die Provinz-ID als Integer - public int getID() - { - return provinceID; - } + // Zweiter Konstruktor, um auch das boolean-Array gegebenenfalls verwenden zu könnnen. + public Province(int pID, int cID, int x, int y, int st, String s1, boolean[] ba1) + { + provinceID = pID; + continentID = cID; + xPos = x; + yPos = y; + if(st > 0) { + stars = st; + } + displayName = s1; + nextProvinces = Utils.copyArray(ba1); + } - // Liefert die Kontinent-ID als Integer - public int getContinentID() - { - return continentID; - } + // Liefert die X-Position als Integer + public int getXPos() + { + return xPos; + } - // Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt. - public boolean isProvinceNear(int i) { - if(i >= nextProvinces.length) { - return false; - } - return nextProvinces[i]; - } + // Liefert die Y-Position als Integer + public int getYPos() + { + return yPos; + } - // Liefert den Anzeigenamen als String - public String getDisplayName() - { - return displayName; - } + // Liefert die Provinz-ID als Integer + public int getID() + { + return provinceID; + } - // Liefert die Sterne als Integer - public int getStars() - { - return stars; - } + // Liefert die Kontinent-ID als Integer + public int getContinentID() + { + return continentID; + } - // Liefert den Owner als String - public int getOwner() - { - return owner; - } + // Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt. + public boolean isProvinceNear(int i) { + if(i >= nextProvinces.length) { + return false; + } + return nextProvinces[i]; + } - // Setzt den Owner, benötigt String - public void setOwner(int o) - { - if(o < -1) { - o = -1; - } - owner = o; - } + // Liefert den Anzeigenamen als String + public String getDisplayName() + { + return displayName; + } - public int getEntityCount() { - return eCount; - } + // Liefert die Sterne als Integer + public int getStars() + { + return stars; + } - private void checkEntityCount() { - if(eCount < 0) { - eCount = 0; - } - } + // Liefert den Owner als String + public int getOwner() + { + return owner; + } - public int addToEntities(int a) { - eCount = eCount + a; - checkEntityCount(); - redrawProvince(); - return eCount; - } + // Setzt den Owner, benötigt String + public void setOwner(int o) + { + if(o < -1) { + o = -1; + } + owner = o; + } - public int removeFromEntities(int a) { - eCount = eCount - a; - checkEntityCount(); - redrawProvince(); - return eCount; - } + public int getEntityCount() { + return eCount; + } - public int setEntityCount(int a) { - eCount = a; - checkEntityCount(); - redrawProvince(); - return eCount; - } + private void checkEntityCount() { + if(eCount < 0) { + eCount = 0; + } + } - public void redrawProvince() - { - int textSize; - textSize = 20; - GreenfootImage province = new GreenfootImage(100,100); - GreenfootImage provinceName = new GreenfootImage(displayName,textSize,new Color(0,0,0),new Color(1.0f,1.0f,1.0f,0.5f)); - province.drawImage(provinceName,0,0); - oDecide(province,textSize); - } + public int addToEntities(int a) { + eCount = eCount + a; + checkEntityCount(); + redrawProvince(); + return eCount; + } - public void oDecide(GreenfootImage province,int textSize) - { - String ownerString; - switch(owner) - { - case 1: - ownerString = "schwarz"; - eCalculate(province,ownerString,textSize); - break; - case 2: - ownerString = "rot"; - eCalculate(province,ownerString,textSize); - break; - case 3: - ownerString = "blau"; - eCalculate(province,ownerString,textSize); - break; - case 4: - ownerString = "gelb"; - eCalculate(province,ownerString,textSize); - break; - case 5: - ownerString = "gr++n"; - eCalculate(province,ownerString,textSize); - break; - case 6: - ownerString = "lila"; - eCalculate(province,ownerString,textSize); + public int removeFromEntities(int a) { + eCount = eCount - a; + checkEntityCount(); + redrawProvince(); + return eCount; + } - } - - } + public int setEntityCount(int a) { + eCount = a; + checkEntityCount(); + redrawProvince(); + return eCount; + } - private void eCalculate(GreenfootImage province, String ownerString,int textSize) - { - int eCountTanks = eCount / 5; - GreenfootImage tank = new GreenfootImage("images\\dickebertaskal-" + ownerString + ".png"); - tank.scale(textSize,textSize); - if(eCountTanks <= 3) - { - if(eCountTanks == 1) - { - province.drawImage(tank,0,textSize); - } - if(eCountTanks == 2) - { - province.drawImage(tank,0,textSize); - province.drawImage(tank,17,textSize); - } - if(eCountTanks == 3) - { - province.drawImage(tank,0,textSize); - province.drawImage(tank,textSize,textSize); - province.drawImage(tank,textSize,textSize); - } - } - else - { - GreenfootImage eCountTanksImage = new GreenfootImage(Integer.toString(eCountTanks) + "x",textSize,Color.CYAN,new Color(1.0f,1.0f,1.0f,0.5f)); - province.drawImage(eCountTanksImage,0,textSize); - province.drawImage(tank,45,textSize); - } - int eCountHorse = (eCount - (eCountTanks * 5))/3; - GreenfootImage horse = new GreenfootImage("images\\pferdreiterskal-" + ownerString + ".png"); - horse.scale(textSize,textSize); - if(eCountHorse == 1) - { - province.drawImage(horse,0,2 * textSize); - } - GreenfootImage Inf = new GreenfootImage("images\\infanterieskal-" + ownerString + ".png"); - int eCountInf = eCount - (eCountTanks * 5) - (eCountHorse * 3); - Inf.scale(textSize,textSize); - if(eCountInf <= 4) - { - if(eCountInf == 1) - { - province.drawImage(Inf,0,3* textSize); - } - if(eCountInf == 2) - { - province.drawImage(Inf,0,3 * textSize); - province.drawImage(Inf,25,3 * textSize); - } - } - setImage(province); - } + public void redrawProvince() + { + int textSize; + textSize = 20; + GreenfootImage province = new GreenfootImage(100,100); + GreenfootImage provinceName = new GreenfootImage(displayName,textSize,new Color(0,0,0),new Color(1.0f,1.0f,1.0f,0.5f)); + province.drawImage(provinceName,0,0); + oDecide(province,textSize); + } + + public void oDecide(GreenfootImage province,int textSize) + { + String ownerString; + if(owner == 0) + { + ownerString = "schwarz"; + eCalculate(province,ownerString,textSize); + } + else + { + switch(owner) + { + case 1: + ownerString = "schwarz"; + eCalculate(province,ownerString,textSize); + break; + case 2: + ownerString = "rot"; + eCalculate(province,ownerString,textSize); + break; + case 3: + ownerString = "blau"; + eCalculate(province,ownerString,textSize); + break; + case 4: + ownerString = "gelb"; + eCalculate(province,ownerString,textSize); + break; + case 5: + ownerString = "gr++n"; + eCalculate(province,ownerString,textSize); + break; + case 6: + ownerString = "lila"; + eCalculate(province,ownerString,textSize); + break; + + } + } + + } + + private void eCalculate(GreenfootImage province, String ownerString,int textSize) + { + int eCountTanks = eCount / 5; + GreenfootImage tank = new GreenfootImage("images\\dickebertaskal-" + ownerString + ".png"); + tank.scale(textSize,textSize); + if(eCountTanks <= 3) + { + if(eCountTanks == 0) + { + + } + if(eCountTanks == 1) + { + province.drawImage(tank,0,textSize); + } + if(eCountTanks == 2) + { + province.drawImage(tank,0,textSize); + province.drawImage(tank,17,textSize); + } + if(eCountTanks == 3) + { + province.drawImage(tank,0,textSize); + province.drawImage(tank,textSize,textSize); + province.drawImage(tank,textSize,textSize); + } + } + else + { + GreenfootImage eCountTanksImage = new GreenfootImage(Integer.toString(eCountTanks) + "x",textSize,Color.CYAN,new Color(1.0f,1.0f,1.0f,0.5f)); + province.drawImage(eCountTanksImage,0,textSize); + province.drawImage(tank,45,textSize); + } + int eCountHorse = (eCount - (eCountTanks * 5))/3; + GreenfootImage horse = new GreenfootImage("images\\pferdreiterskal-" + ownerString + ".png"); + horse.scale(textSize,textSize); + if(eCountHorse == 1) + { + province.drawImage(horse,0,2 * textSize); + } + GreenfootImage Inf = new GreenfootImage("images\\infanterieskal-" + ownerString + ".png"); + int eCountInf = eCount - (eCountTanks * 5) - (eCountHorse * 3); + Inf.scale(textSize,textSize); + if(eCountInf <= 4) + { + if(eCountInf == 1) + { + province.drawImage(Inf,0,3* textSize); + } + if(eCountInf == 2) + { + province.drawImage(Inf,0,3 * textSize); + province.drawImage(Inf,25,3 * textSize); + } + } + setImage(province); + } + + public boolean hasClicked() { + boolean b = clicked; + clicked = false; + return b; + } - public boolean hasClicked() { - boolean b = clicked; - clicked = false; - return b; - } - } diff --git a/Roll_Button.java b/Roll_Button.java index c056483..c114f47 100644 --- a/Roll_Button.java +++ b/Roll_Button.java @@ -1,7 +1,7 @@ /* - Hinweis zum Verbleib der Klasse: - Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. - Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. + Hinweis zum Verbleib der Klasse: + Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. + Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. */ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) @@ -14,16 +14,16 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) */ public class Roll_Button extends Button { - public Roll_Button(ButtonEvent h) { - super(h); - } - - /** - * Act - do whatever the Würfel_Button_Angriff wants to do. This method is called whenever - * the 'Act' or 'Run' button gets pressed in the environment. - */ - public void act() - { - // Add your action code here. - } + public Roll_Button(ButtonEvent h) { + super(h); + } + + /** + * Act - do whatever the Würfel_Button_Angriff wants to do. This method is called whenever + * the 'Act' or 'Run' button gets pressed in the environment. + */ + public void act() + { + // Add your action code here. + } } diff --git a/Utils.java b/Utils.java index ebfadc3..fbc668a 100644 --- a/Utils.java +++ b/Utils.java @@ -10,76 +10,76 @@ Diese Klasse enthält nur statische Funktionen, welche für euch als Unterstütz */ public final class Utils { - /** - Kopiert ein boolean-Array und übergibt diese. - @param a Das zu kopierende Array - @return Die Kopie des Arrays - */ - public static boolean[] copyArray(boolean[] a) { - boolean[] b = new boolean[a.length]; - for(int i = 0; i < a.length; i++) { - b[i] = a[i]; - } - return b; - } + /** + Kopiert ein boolean-Array und übergibt diese. + @param a Das zu kopierende Array + @return Die Kopie des Arrays + */ + public static boolean[] copyArray(boolean[] a) { + boolean[] b = new boolean[a.length]; + for(int i = 0; i < a.length; i++) { + b[i] = a[i]; + } + return b; + } - /** - Kopiert ein int-Array und übergibt diese. - @param a Das zu kopierende Array - @return Die Kopie des Arrays - */ - public static int[] copyArray(int[] a) { - int[] b = new int[a.length]; - for(int i = 0; i < a.length; i++) { - b[i] = a[i]; - } - return b; - } + /** + Kopiert ein int-Array und übergibt diese. + @param a Das zu kopierende Array + @return Die Kopie des Arrays + */ + public static int[] copyArray(int[] a) { + int[] b = new int[a.length]; + for(int i = 0; i < a.length; i++) { + b[i] = a[i]; + } + return b; + } - /** - Kopiert ein String-Array und übergibt diese. - @param a Das zu kopierende Array - @return Die Kopie des Arrays - */ - public static String[] copyArray(String[] a) { - String[] b = new String[a.length]; - for(int i = 0; i < a.length; i++) { - b[i] = a[i]; - } - return b; - } + /** + Kopiert ein String-Array und übergibt diese. + @param a Das zu kopierende Array + @return Die Kopie des Arrays + */ + public static String[] copyArray(String[] a) { + String[] b = new String[a.length]; + for(int i = 0; i < a.length; i++) { + b[i] = a[i]; + } + return b; + } - /** - Zeichnet innerhalb eines GreenfootImage ein gefülltes Rechteck in der gegebenen Farbe und mit dem gegebenen Abstand zum Rand. - @param i Das GreenfootImage, in dem gezeichnet werden soll. - @param c Die Farbe, in der das gefüllte Rechteck gezeichnet werden soll. - @param b Der Abstand zum Rand der Grafik. - */ - public static void drawInsideRectangle(GreenfootImage i, Color c, int b) { - int sx = i.getWidth(); - int sy = i.getHeight(); - i.setColor(c); - i.fillRect(b,b, sx-(2*b),sy-(2*b)); - } + /** + Zeichnet innerhalb eines GreenfootImage ein gefülltes Rechteck in der gegebenen Farbe und mit dem gegebenen Abstand zum Rand. + @param i Das GreenfootImage, in dem gezeichnet werden soll. + @param c Die Farbe, in der das gefüllte Rechteck gezeichnet werden soll. + @param b Der Abstand zum Rand der Grafik. + */ + public static void drawInsideRectangle(GreenfootImage i, Color c, int b) { + int sx = i.getWidth(); + int sy = i.getHeight(); + i.setColor(c); + i.fillRect(b,b, sx-(2*b),sy-(2*b)); + } - /** - Sortiert ein int[]-Array absteigend. - @param a Das zu sortierende Array - */ - public static void sortDesc(int[] a) { - Arrays.sort(a); - int[] b = copyArray(a); - for(int i = (a.length - 1); i >= 0; i--) { - a[i] = b[i]; - } - } + /** + Sortiert ein int[]-Array absteigend. + @param a Das zu sortierende Array + */ + public static void sortDesc(int[] a) { + Arrays.sort(a); + int[] b = copyArray(a); + for(int i = (a.length - 1); i >= 0; i--) { + a[i] = b[i]; + } + } - public static int StringToInt(String s) { - int i = 0; - try { - Integer in = Integer.valueOf(s); - i = in; - } catch (java.lang.NumberFormatException e) {} - return i; - } + public static int StringToInt(String s) { + int i = 0; + try { + Integer in = Integer.valueOf(s); + i = in; + } catch (java.lang.NumberFormatException e) {} + return i; + } }