From 9193fd495cf72918a54f62de626995f3948773e3 Mon Sep 17 00:00:00 2001 From: Achim Date: Mon, 25 Jul 2016 21:27:58 +0200 Subject: [PATCH] Sterne-Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Möglichkeit zum Erhalt von Sternen hinzugefügt - Sterne werden standardmässig beim Start vergeben - Verbesserungen an der Abfrage zum Einsetzen von Sternen - Removed Herobrine --- GeneralMap.java | 115 ++++++++++++++++++++++++++++++++++++------------ Player.java | 2 + 2 files changed, 89 insertions(+), 28 deletions(-) diff --git a/GeneralMap.java b/GeneralMap.java index 0975229..32a2d73 100644 --- a/GeneralMap.java +++ b/GeneralMap.java @@ -12,15 +12,15 @@ neue Maps werden als Unterklasse dieser Klasse eingefügt. @author GruenerWal, MaxiJohl, Felix Stupp, Samuel @version 0.3.0 -*/ + */ public abstract class GeneralMap extends World implements ButtonEvent { /* Felder, im Moment nur Anzahl der Provinzen Später evtl. weitere Werte wie Schwierigkeit denkbar - */ + */ Button modus = new Button("Kampf\nbeginnen",25,this); - + private final int X_OFFSET = 200; // Verschiebt die Provinzen nach rechts private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten @@ -68,13 +68,25 @@ public abstract class GeneralMap extends World implements ButtonEvent } createPlayerObjects(playerList.length); + + players[2].addToStars(1); + + if ( playerList.length > 3 ) + { + players[3].addToStars(1); + } + + if ( playerList.length > 4 ) + { + players[4].addToStars(2); + } } - + public int currentPlayer() { return currentPlayer; } - + public void redrawGameStates() { int textSize = 20; @@ -94,7 +106,7 @@ public abstract class GeneralMap extends World implements ButtonEvent { GreenfootImage GameStates = new GreenfootImage("VERSCHIEBEN! Wähle die Provinzen aus, bei denen du schubsen möchtest, " + getPlayerName() + ".",textSize,new Color(255,255,255),new Color(0,0,0)); GreenfootImage GameStatesEmpty = new GreenfootImage(GameStates.getWidth(),textSize); - + GameStatesEmpty.drawImage(GameStates,0,0); GreenfootImage States = new GreenfootImage("MapWorldMove.png"); States.drawImage(GameStatesEmpty,X,Y); @@ -140,13 +152,13 @@ public abstract class GeneralMap extends World implements ButtonEvent addObject(provinces[i],((int) Math.floor(provinces[i].getXPos() * SCALE_VALUE)) + X_OFFSET,((int) Math.floor(provinces[i].getYPos() * SCALE_VALUE)) + Y_OFFSET); } } - + private void redrawProvinces() { for(int i = 1; i < provinces.length; i++) { provinces[i].redrawProvince(); } } - + protected void redrawPlayers() { for(int i = 0; i < players.length; i++) { players[i].reloadMaxInfluence(); @@ -171,7 +183,7 @@ public abstract class GeneralMap extends World implements ButtonEvent } else if (status == GameStates.VERSCHIEBEN) { actMove(); } - redrawGameStates(); + redrawGameStates(); } /** @@ -181,7 +193,7 @@ public abstract class GeneralMap extends World implements ButtonEvent { return players.length; } - + /** * Gibt die Farbe des angefragten Spielers heraus. * @param int pID -> Farbe des Spielers @@ -192,9 +204,9 @@ public abstract class GeneralMap extends World implements ButtonEvent } /** - Gibt die PlayerID des aktuellen Spielers an. - @return PlayerID des aktuellen Spielers - */ + Gibt die PlayerID des aktuellen Spielers an. + @return PlayerID des aktuellen Spielers + */ public int getCurrentPlayerID() { return currentPlayer; } @@ -286,6 +298,7 @@ public abstract class GeneralMap extends World implements ButtonEvent modus.setForeColor(Color.black); modus.setText("Kampf\nbeenden"); } else if (status==GameStates.KAMPF) { + giveRandomStars(players[currentPlayer]); status=GameStates.VERSCHIEBEN; savedProvince = null; modus.setText("Nächster\nSpieler"); @@ -308,12 +321,12 @@ public abstract class GeneralMap extends World implements ButtonEvent } // Kampfsystem - + Province offenderProvince; Province defenderProvince; String maxDiceOffender = ""; String maxDiceDefender = ""; - + private void actFight() { for(int i = 1; i <= (provinces.length - 1); i++) { if (provinces[i].hasClicked() == true) { @@ -405,13 +418,13 @@ public abstract class GeneralMap extends World implements ButtonEvent diceDefender = null; decider(maxDiceOffenderArray, maxDiceDefenderArray); } - + // berechnet Zahlen und findet Gewinner; führt Konsequenz aus private void decider(int[] maxDiceOffender, int [] maxDiceDefender) { Player offPl = players[offenderProvince.getOwner()]; Player defPl = players[defenderProvince.getOwner()]; - + int maxDefender = maxDiceDefender[1]; int maxOffender = maxDiceOffender[2]; if (maxOffender > maxDefender) @@ -451,9 +464,9 @@ public abstract class GeneralMap extends World implements ButtonEvent } // Einheiten verschieben - + Province savedProvince = null; - + private void actMove() { for ( int i = 1; i <= (provinces.length - 1); i++) { if (provinces[i].hasClicked() == true) { @@ -515,11 +528,11 @@ public abstract class GeneralMap extends World implements ButtonEvent savedProvince = null; } } - + // Einheiten setzen - + int freeArmies = -1; - + private void actPlace() { if ( freeArmies == -1 ) { @@ -600,16 +613,36 @@ public abstract class GeneralMap extends World implements ButtonEvent // 4. Einheiten durch Sterne if ( players[currentPlayer].getStars() > 0) { - String toUseString = JOptionPane.showInputDialog(null, "Wieviele Sterne willst du verwenden?"); + String toUseString; + + if ( players[currentPlayer].getStars() == 1 ) + { + toUseString = JOptionPane.showInputDialog(null, "Wieviele Sterne willst du verwenden? \n Du besitzt noch 1 Stern."); + } + + else + { + toUseString = JOptionPane.showInputDialog(null, "Wieviele Sterne willst du verwenden? \n Du besitzt noch " + players[currentPlayer].getStars() + " Sterne."); + } + int starsToUse = Utils.StringToInt(toUseString); - int[] starBoni = new int [] {1,2,4,7,10,13,17,21,25,30}; - if ( starsToUse > 0 && starsToUse < 11 ) + + if ( starsToUse <= players[currentPlayer].getStars() ) { - armiesToPlace = armiesToPlace + starBoni[starsToUse -1]; + 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"); + } } - if ( starsToUse < 0 && starsToUse > 10 ) + + else { - JOptionPane.showMessageDialog(null,"Ungültige Zahl. Bitte eine Zahl zwischen 0 und 10 eingeben"); + JOptionPane.showMessageDialog(null,"Du besitzt nicht die erforderliche Anzahl an Sternen! \n Verarschen kannst du jemand anderen."); } } return armiesToPlace; @@ -637,4 +670,30 @@ public abstract class GeneralMap extends World implements ButtonEvent return Utils.cutArray(savedProvinces); } } + + /** + * Gibt einem Spieler eine zufällige Anzahl an Sternen zwischen 1 und 3. + * + * @param player Der Spieler, dem die Sterne gegeben werden + */ + + protected void giveRandomStars (Player player) + { + double zufallszahl = Math.random(); + + if ( zufallszahl <= 0.6 ) + { + players[currentPlayer].addToStars(1); + } + + else if ( zufallszahl <= 0.9 ) + { + players[currentPlayer].addToStars(2); + } + + else + { + players[currentPlayer].addToStars(3); + } + } } diff --git a/Player.java b/Player.java index b566c6b..b49b7fb 100644 --- a/Player.java +++ b/Player.java @@ -23,6 +23,7 @@ public class Player extends Actor int textsize; int c; public int active; + boolean starsNeeded = false; //definiert die ID und Namens Variable public Player(int identity,String name, int c) @@ -162,6 +163,7 @@ public class Player extends Actor stats[0]++; reloadMaxInfluence(); redrawPlayer(); + starsNeeded = true; } public void lostProvince() {