diff --git a/Bildbutton.java b/Bildbutton.java new file mode 100644 index 0000000..024ccb5 --- /dev/null +++ b/Bildbutton.java @@ -0,0 +1,142 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) +import java.awt.Color; +import java.awt.Graphics2D; + +/** + Diese Klasse stellt einen Button dar. + Als funktionelles Vorbild dafür hält der Button aus dem .NET-Framework für UWP-Apps dar. + + @author Felix Stupp + @version 20.05.2016 +*/ +public class Bildbutton extends GUI_Interface { + + private boolean autoSize = false; + protected GreenfootImage picture = new GreenfootImage(1,1); + + private ButtonEvent handler; + + /** + Erstellt einen Button mit dem gegebenen Text und der zugehörigen Textgröße. + @param txt Der Text, den der Button darstellen soll. + @param size Die Textgröße, in der der Button den Text darstellen soll. + */ + public Bildbutton(GreenfootImage pict) { + picture = pict; + redrawInternal(); + } + /** + Erstellt einen Button mit dem gegebenen Objekt als Event-Handler. + @param h Der Handler mit dem Interface ButtonEvent implementiert. + */ + public Bildbutton(ButtonEvent h) { + handler = h; + redrawInternal(); + } + /** + Erstellt einen Button mit dem gegebenen Text, der zugehörigen Textgröße und dem gegebenen Objekt als Event-Handler. + @param txt Der Text, den der Button darstellen soll. + @param size Die Textgröße, in der der Button den Text darstellen soll. + @param h Der Handler mit dem Interface ButtonEvent implementiert. + */ + public Bildbutton(GreenfootImage pict, ButtonEvent h) { + picture = pict; + handler = h; + redrawInternal(); + } + + /** + Fragt ab, ob ein Klick auf den Button gekommen ist. + Wird intern von Greenfoot benötigt. + */ + public void act() { + if(Greenfoot.mouseClicked(this) && handler != this) { + handler.buttonClicked(this); + } + } + + /** + Gibt zurück, ob die Größe des Buttons von dem Text bestimmt werden soll. + @return Wert der AutoSize-Eigenschaft + */ + public boolean getAutoSize() { + return autoSize; + } + /** + Legt fest, ob die Größe des Buttons von dem Text bestimmt werden soll. + Wird der Wert auf TRUE geändert, erfolgt automatisch ein Redraw des Objekts. + @param b Der neue Wert der AutoSize-Eigenschaft. + */ + public void setAutoSize(boolean b) { + autoSize = b; + if(autoSize) { + redraw(); + } + } + + /** + Gibt den aktuellen Text zurück. + @return Der aktuelle Text + */ + public GreenfootImage getPicture() { + return picture; + } + /** + Setzt den darzustellenden Text auf den neuen Wert. + @param s Der neue Text + @return Gibt an, ob sich der Text geändert hat. Bei TRUE erfolgte bereits ein Redraw. + */ + public boolean setPicture(GreenfootImage s) { + if(picture != s) { + picture = s; + redraw(); + return true; + } + return false; + } + + /** + Gibt den aktuellen EventHandler des Buttons zurück. + @return Der Handler als ButtonEvent + */ + public ButtonEvent getHandler() { + return handler; + } + /** + Setzt den EventHandler auf ein neues Objekt. + @param h Der Handler mit implementiertem ButtonEvent-Interface + */ + public void setHandler(ButtonEvent h) { + handler = h; + } + /** + Entfernt den aktuellen EventHandler, um die Ausführung zukünftiger Events zu verhindern. + */ + public void removeHandler() { + handler = null; + } + + protected void redrawInternal() { + GreenfootImage tI = picture; + if(autoSize) { + sx = tI.getWidth() + (6 * 2) + 4; + sy = tI.getHeight() + (6 * 2) + 4; + } + GreenfootImage all = new GreenfootImage(sx,sy); + Color trans = new Color(0,0,0,0); + all.setColor(trans); + all.fill(); + Graphics2D g = all.getAwtImage().createGraphics(); + g.setColor(backC); + g.fillRoundRect(0,0,sx,sy,24,24); + all.drawImage(tI,(sx-tI.getWidth())/2,(sy-tI.getHeight())/2); + setImage(all); + } + + /** + Zeichnet das GreenfootImage des Buttons erneut und zeigt es an. + */ + public void redraw() { + redrawInternal(); + } +} diff --git a/Button.java b/Button.java index ac8a972..166b5b5 100644 --- a/Button.java +++ b/Button.java @@ -9,20 +9,18 @@ import java.awt.Graphics2D; @author Felix Stupp @version 20.05.2016 */ -public class Button extends GUI_Interface { +public class Button extends Bildbutton { - private boolean autoSize = false; private int textSize = 32; // as default text size private String text = ""; - private ButtonEvent handler; - /** Erstellt einen Button mit dem gegebenen Text und der zugehörigen Textgröße. @param txt Der Text, den der Button darstellen soll. @param size Die Textgröße, in der der Button den Text darstellen soll. */ public Button(String txt, int size) { + super(new GreenfootImage(txt,size,Color.WHITE,Color.BLACK)); text = txt; textSize = size; redraw(); @@ -32,7 +30,7 @@ public class Button extends GUI_Interface { @param h Der Handler mit dem Interface ButtonEvent implementiert. */ public Button(ButtonEvent h) { - handler = h; + super(h); redraw(); } /** @@ -42,41 +40,12 @@ public class Button extends GUI_Interface { @param h Der Handler mit dem Interface ButtonEvent implementiert. */ public Button(String txt, int size, ButtonEvent h) { + super(new GreenfootImage(txt,size,Color.WHITE,Color.BLACK),h); text = txt; textSize = size; - handler = h; redraw(); } - /** - Fragt ab, ob ein Klick auf den Button gekommen ist. - Wird intern von Greenfoot benötigt. - */ - public void act() { - if(Greenfoot.mouseClicked(this) && handler != this) { - handler.buttonClicked(this); - } - } - - /** - Gibt zurück, ob die Größe des Buttons von dem Text bestimmt werden soll. - @return Wert der AutoSize-Eigenschaft - */ - public boolean getAutoSize() { - return autoSize; - } - /** - Legt fest, ob die Größe des Buttons von dem Text bestimmt werden soll. - Wird der Wert auf TRUE geändert, erfolgt automatisch ein Redraw des Objekts. - @param b Der neue Wert der AutoSize-Eigenschaft. - */ - public void setAutoSize(boolean b) { - autoSize = b; - if(autoSize) { - redraw(); - } - } - /** Gibt die aktelle Textgröße zurück. @return Aktuelle Textgröße @@ -119,44 +88,20 @@ public class Button extends GUI_Interface { return false; } - /** - Gibt den aktuellen EventHandler des Buttons zurück. - @return Der Handler als ButtonEvent - */ - public ButtonEvent getHandler() { - return handler; - } - /** - Setzt den EventHandler auf ein neues Objekt. - @param h Der Handler mit implementiertem ButtonEvent-Interface - */ - public void setHandler(ButtonEvent h) { - handler = h; + public GreenfootImage getPicture() { + return null; } - /** - Entfernt den aktuellen EventHandler, um die Ausführung zukünftiger Events zu verhindern. - */ - public void removeHandler() { - handler = null; + + public boolean setPicture(GreenfootImage i) { + return false; } /** Zeichnet das GreenfootImage des Buttons erneut und zeigt es an. */ public void redraw() { - GreenfootImage tI = new GreenfootImage(text,textSize,foreC,backC); - if(autoSize) { - sx = tI.getWidth() + (6 * 2) + 4; - sy = tI.getHeight() + (6 * 2) + 4; - } - GreenfootImage all = new GreenfootImage(sx,sy); - Color trans = new Color(0,0,0,0); - all.setColor(trans); - all.fill(); - Graphics2D g = all.getAwtImage().createGraphics(); - g.setColor(backC); - g.fillRoundRect(0,0,sx,sy,24,24); - all.drawImage(tI,(sx-tI.getWidth())/2,(sy-tI.getHeight())/2); - setImage(all); + //picture = new GreenfootImage(text,textSize,Color.BLACK,Color.WHITE); + picture = new GreenfootImage(text,textSize,foreC,backC); + super.redraw(); } } diff --git a/ButtonEvent.java b/ButtonEvent.java index b3a914d..1eeac2b 100644 --- a/ButtonEvent.java +++ b/ButtonEvent.java @@ -9,6 +9,6 @@ import greenfoot.*; */ public interface ButtonEvent { - public void buttonClicked(Button obj); + public void buttonClicked(Bildbutton obj); } \ No newline at end of file diff --git a/Colours.java b/Colours.java index 71e997d..c17e19a 100644 --- a/Colours.java +++ b/Colours.java @@ -10,12 +10,12 @@ import javax.swing.JOptionPane; */ public class Colours extends World implements ButtonEvent { - Button schwarz = new Button ("Schwarz", 16, this); - Button blau = new Button ("Blau", 16, this); - Button grün = new Button ("Grün", 16, this); - Button rot = new Button ("Rot", 16, this); - Button lila = new Button ("Lila", 16, this); - Button gelb = new Button ("Gelb", 16, this); + Bildbutton schwarz = new Bildbutton (new GreenfootImage("SchwarzeArmeeSkal.png"), this); + Bildbutton blau = new Bildbutton (new GreenfootImage("BlaueArmeeSkal.png"), this); + Bildbutton rot = new Bildbutton (new GreenfootImage("RoteArmeeSkal.png"), this); + Bildbutton gelb = new Bildbutton (new GreenfootImage("GelbeArmeeSkal.png"), this); + Bildbutton lila = new Bildbutton (new GreenfootImage("LilaArmeeSkal.png"), this); + Bildbutton grün = new Bildbutton (new GreenfootImage("GrueneArmeeSkal.png"), this); Button weiter = new Button ("Weiter", 16, this); int[] color = new int [5]; String[] pn = new String [5]; @@ -35,11 +35,11 @@ public class Colours extends World implements ButtonEvent Label header = new Label("Klicke auf eine Farbe, um einen Spieler hinzuzufügen:",16); Button remove = new Button("Rückgängig",16,this); - Label pl1 = new Label("",16); - Label pl2 = new Label("",16); - Label pl3 = new Label("",16); - Label pl4 = new Label("",16); - Label pl5 = new Label("",16); + Label pl1 = new Label("",22); + Label pl2 = new Label("",22); + Label pl3 = new Label("",22); + Label pl4 = new Label("",22); + Label pl5 = new Label("",22); /** * Constructor for objects of class Colors. @@ -50,35 +50,41 @@ public class Colours extends World implements ButtonEvent super(x, y, z); setBackground(Start_Load.backgroundImage); - Button[] bList = new Button[] {schwarz,gelb,blau,grün,rot,lila,weiter,remove}; + Bildbutton[] bList = new Bildbutton[] {schwarz,gelb,blau,grün,rot,lila,weiter,remove}; Label[] lList = new Label[] {header,pl1,pl2,pl3,pl4,pl5}; addObject(header,200,15); - addObject(schwarz, 70, 50); - addObject ( blau, 190, 50); - addObject ( grün, 300, 50); - addObject ( rot, 410, 50); - addObject(gelb, 520, 50); - addObject(lila, 630, 50); - addObject(remove,300,110); - addObject (weiter, 410,110); + addObject(schwarz, 80, 50); + addObject ( blau, 240, 50); + addObject ( grün, 400, 50); + addObject ( rot, 560, 50); + addObject(gelb, 720, 50); + addObject(lila, 880, 50); + addObject(remove,300,160); + addObject (weiter, 510,160); - addObject(pl1,355,160); - addObject(pl2,355,180); - addObject(pl3,355,200); - addObject(pl4,355,220); - addObject(pl5,355,240); + addObject(pl1,355,360); + addObject(pl2,355,380); + addObject(pl3,355,400); + addObject(pl4,355,420); + addObject(pl5,355,440); - schwarz.setForeColor(Color.black); - gelb.setForeColor(Color.yellow); - blau.setForeColor(Color.blue); - grün.setForeColor(Color.green); - rot.setForeColor(Color.red); - lila.setForeColor(new Color(161,70,255)); + //schwarz.setForeColor(Color.black); + //gelb.setForeColor(Color.yellow); + //blau.setForeColor(Color.blue); + //grün.setForeColor(Color.green); + //rot.setForeColor(Color.red); + //lila.setForeColor(new Color(161,70,255)); + + pl1.setForeColor(Color.black); + pl2.setForeColor(Color.black); + pl3.setForeColor(Color.black); + pl4.setForeColor(Color.black); + pl5.setForeColor(Color.black); for(int i = 0; i < bList.length; i++) { - bList[i].setSize(100,50); + bList[i].setSize(164,100); } for(int i = 0; i < lList.length; i++) { lList[i].setBackColor(new Color(0,0,0,0)); @@ -94,7 +100,7 @@ public class Colours extends World implements ButtonEvent // verhindert durch falschsetzten einer Variable die Wiederauswahl einer Farbe // wenn Weiter geklickt wurde und x größer 1 ist wird eine neue Welt Map erzeugt, //der per Konstruktor die Daten der Colorklasse übertragen werden, dannach wird die Map die aktive Welt - public void buttonClicked (Button b) + public void buttonClicked (Bildbutton b) { if (x < 5) { if (b == schwarz && possw == true) { diff --git a/GeneralMap.java b/GeneralMap.java index 48f26c1..1c2e187 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 @@ -73,25 +73,13 @@ 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; @@ -111,7 +99,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); @@ -158,20 +146,6 @@ public abstract class GeneralMap extends World implements ButtonEvent } } - 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(); - players[i].reloadMaxEntities(); - players[i].redrawPlayer(); - } - } - /** Zeigt die angegebene Nachricht in einem JOptionPane Dialogfeld an. @param msg Die anzuzeigend e Nachricht @@ -188,7 +162,7 @@ public abstract class GeneralMap extends World implements ButtonEvent } else if (status == GameStates.VERSCHIEBEN) { actMove(); } - redrawGameStates(); + redrawGameStates(); } /** @@ -198,7 +172,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 @@ -208,14 +182,6 @@ public abstract class GeneralMap extends World implements ButtonEvent return players[pID].getColor(); } - /** - Gibt die PlayerID des aktuellen Spielers an. - @return PlayerID des aktuellen Spielers - */ - public int getCurrentPlayerID() { - return currentPlayer; - } - /** Gibt den Namen des aktuellen Spielers aus. @return Der Name des aktuellen Spielers @@ -274,10 +240,10 @@ public abstract class GeneralMap extends World implements ButtonEvent @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 getPlayerEntityCount(int playerID) + public int getProvinceEntityCount(int playerID) { int c = 0; - for (int i = 1; i < provinces.length; i++) { + for (int i = 1; i > provinces.length; i++) { if(provinces[i].getOwner() == playerID) { c = c + provinces[i].getEntityCount(); } @@ -313,7 +279,7 @@ public abstract class GeneralMap extends World implements ButtonEvent ); } - public void buttonClicked(Button b) { + public void buttonClicked(Bildbutton b) { if ( modus == b ) { if(status==GameStates.SETZEN && freeArmies == 0 ) { status=GameStates.KAMPF; @@ -325,7 +291,6 @@ 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"); @@ -349,12 +314,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) { @@ -446,25 +411,20 @@ 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) { defenderProvince.removeFromEntities(1); - defPl.lostEntity(); if (defenderProvince.getEntityCount() <= 0) { defenderProvince.setOwner(offenderProvince.getOwner()); offenderProvince.removeFromEntities(1); defenderProvince.setEntityCount(1); - offPl.gotProvince(); - defPl.lostProvince(); JOptionPane.showMessageDialog(null,"Somit gewinnt der Angreifer (" + getPlayerName(offenderProvince.getOwner()) + "). Die Provinz gehört fortan dem Angreifer (" + getPlayerName(offenderProvince.getOwner()) + ")."); } else { JOptionPane.showMessageDialog(null,"Somit gewinnt der Angreifer (" + getPlayerName(offenderProvince.getOwner()) + "). Dem Verteidiger (" + getPlayerName(defenderProvince.getOwner()) + ") wird eine Einheit abgezogen. Er hat nun noch " + defenderProvince.getEntityCount() + " Einheiten."); @@ -474,14 +434,12 @@ public abstract class GeneralMap extends World implements ButtonEvent if (maxOffender < maxDefender && offenderProvince.getEntityCount()>1) { offenderProvince.removeFromEntities(1); - offPl.lostEntity(); JOptionPane.showMessageDialog(null,"Somit gewinnt der Verteidiger (" + getPlayerName(defenderProvince.getOwner()) + "). Dem Angreifer (" + getPlayerName(offenderProvince.getOwner()) + ") wird eine Einheit abgezogen. Er hat nun noch " + offenderProvince.getEntityCount() + " Einheiten."); } if (maxOffender == maxDefender && offenderProvince.getEntityCount()>1) { offenderProvince.removeFromEntities(1); - offPl.lostEntity(); JOptionPane.showMessageDialog(null,"Da es unentschieden ist, gewinnt der Verteidiger (" + getPlayerName(defenderProvince.getOwner()) + "). Dem Angreifer (" + getPlayerName(offenderProvince.getOwner()) + ") wird eine Einheit abgezogen. Er hat nun noch " + offenderProvince.getEntityCount() + " Einheiten."); } @@ -492,9 +450,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) { @@ -556,16 +514,15 @@ public abstract class GeneralMap extends World implements ButtonEvent savedProvince = null; } } - + // Einheiten setzen - + int freeArmies = -1; - + private void actPlace() { if ( freeArmies == -1 ) { freeArmies = calculateArmies(); - players[currentPlayer].gotEntities(freeArmies); } else if ( freeArmies == 0 ) { modus.setBackColor(Color.white); modus.setForeColor(Color.black); @@ -641,36 +598,16 @@ public abstract class GeneralMap extends World implements ButtonEvent // 4. Einheiten durch Sterne if ( players[currentPlayer].getStars() > 0) { - 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."); - } - + String toUseString = JOptionPane.showInputDialog(null, "Wieviele Sterne willst du verwenden?"); int starsToUse = Utils.StringToInt(toUseString); - - if ( starsToUse <= players[currentPlayer].getStars() ) + int[] starBoni = new int [] {1,2,4,7,10,13,17,21,25,30}; + if ( starsToUse > 0 && starsToUse < 11 ) { - 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"); - } + armiesToPlace = armiesToPlace + starBoni[starsToUse -1]; } - - else + if ( starsToUse < 0 && starsToUse > 10 ) { - JOptionPane.showMessageDialog(null,"Du besitzt nicht die erforderliche Anzahl an Sternen! \n Verarschen kannst du jemand anderen."); + JOptionPane.showMessageDialog(null,"Ungültige Zahl. Bitte eine Zahl zwischen 0 und 10 eingeben"); } } return armiesToPlace; @@ -698,30 +635,4 @@ 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/InputDialogWorld.java b/InputDialogWorld.java index ff6ca06..712a14f 100644 --- a/InputDialogWorld.java +++ b/InputDialogWorld.java @@ -66,7 +66,7 @@ public class InputDialogWorld extends World implements ButtonEvent { } } - public void buttonClicked(Button b) { + public void buttonClicked(Bildbutton b) { if(b == abort) { inputS = null; } else if(b == okay) { diff --git a/Map.java b/Map.java index e36c0c9..ab02a25 100644 --- a/Map.java +++ b/Map.java @@ -8,8 +8,8 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) */ public class Map extends World implements ButtonEvent { - private Button map1 = new Button ("map1",16,this); - private Button map2 = new Button ("map2",16,this); + Bildbutton map1 = new Bildbutton (new GreenfootImage("WeltkarteSkal.png"), this); + Bildbutton map2 = new Bildbutton (new GreenfootImage("USAKarteSkal.png"), this); private Button fertigst = new Button (" Fertigstellen",16,this); int[] colour; String[] pn; @@ -32,11 +32,11 @@ public class Map extends World implements ButtonEvent pn[i] = name[i]; } pnu=zahl; - addObject(map1, 50, 30); - addObject(map2, 170, 30); - addObject(fertigst,110,90 ); - map1.setSize(100, 50); - map2.setSize(100, 50); + addObject(map1, 200, 80); + addObject(map2, 470, 80); + addObject(fertigst,330,200 ); + map1.setSize(164, 100); + map2.setSize(164, 100); fertigst.setSize(100, 50); // for ( int i=0; i<=pnu; i++) // { @@ -45,7 +45,7 @@ public class Map extends World implements ButtonEvent // } } // Die Map Buttons geben der Variable m einen Wert - public void buttonClicked(Button b) + public void buttonClicked(Bildbutton b) { if (b== map1) diff --git a/Map_World.java b/Map_World.java index ecfe698..04d93c2 100644 --- a/Map_World.java +++ b/Map_World.java @@ -146,6 +146,5 @@ public class Map_World extends GeneralMap p.setOwner(dataL[(i-1)*2]); p.setEntityCount(dataL[(i*2)-1]); } - redrawPlayers(); } } diff --git a/Player.java b/Player.java index 056d20d..cc6a0de 100644 --- a/Player.java +++ b/Player.java @@ -23,7 +23,6 @@ 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) @@ -140,15 +139,10 @@ public class Player extends Actor } return p; } - - public int getEntitiesCount() { - return getWorld().getPlayerEntityCount(id); - } public void gotEntities(int gotEnt) { stats[3]+= gotEnt; - reloadMaxEntities(); redrawPlayer(); } @@ -158,34 +152,11 @@ public class Player extends Actor redrawPlayer(); } - public void gotProvince() { - stats[0]++; - reloadMaxInfluence(); - redrawPlayer(); - starsNeeded = true; - } - - public void lostProvince() { - stats[1]++; - redrawPlayer(); - } - - public void reloadMaxInfluence() + private void maxEntities(int entNumber) { - int c = getProvinceCount(); - if(stats[2]< c) + if (stats[5]< entNumber) { - stats[2]=c; - redrawPlayer(); - } - } - - public void reloadMaxEntities() - { - int c = getEntitiesCount(); - if (stats[5]< c) - { - stats[5]=c; + stats[5]=entNumber; redrawPlayer(); } } @@ -223,14 +194,6 @@ public class Player extends Actor } - private Color getTextCol() { - return (getWorld().getCurrentPlayerID() == id) ? new Color(0,0,0) : new Color(255,255,255); - } - - private Color getTransBackCol() { - return (getWorld().getCurrentPlayerID() == id) ? new Color(255,255,255) : new Color(0,0,0); - } - public void redrawPlayer() { getWorld().reloadPlayerStat(); @@ -239,6 +202,9 @@ public class Player extends Actor { n = "leererSpieler"; } + 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); GreenfootImage statistics = new GreenfootImage(137,120); if(getWorld().getCurrentPlayerID() == id) { statistics.setColor(new Color(255,255,255)); @@ -254,27 +220,45 @@ public class Player extends Actor 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\\GrueneArmee.jpg"); + redrawArrow(statistics,flag,textSize); break; } + + } + + private void redrawArrow(GreenfootImage statistics,GreenfootImage flag, int textSize) + { + // redraw(statistics,flag,textSize); redraw(statistics,flag,textSize); } diff --git a/Start_Load.java b/Start_Load.java index 5f82682..fcdd217 100644 --- a/Start_Load.java +++ b/Start_Load.java @@ -12,9 +12,9 @@ public class Start_Load extends World implements ButtonEvent // Light Theme: "backgroundLight.png" // Dark Theme: "backgroundDark.png" - Button chulien = new Button("Neues Spiel", 16 , this); - Button spielanleitung = new Button("Spielanleitung", 16, this); - Button zurück = new Button("zurück", 16, this); + Button chulien; + Button spielanleitung; + Button zurück; /** * Constructor for objects of class Start_Load. * @@ -23,6 +23,9 @@ public class Start_Load extends World implements ButtonEvent { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(1600, 900, 1); + chulien = new Button("Neues Spiel", 16 , this); + spielanleitung = new Button("Spielanleitung", 16, this); + zurück = new Button("zurück", 16, this); setBackground(backgroundImage); chulien.setSize(100,50); spielanleitung.setSize(100,50); @@ -30,10 +33,8 @@ public class Start_Load extends World implements ButtonEvent addObject (chulien, (1600-chulien.getWidth())/2+100, (900-chulien.getHeight())/2); addObject (spielanleitung, (1600-spielanleitung.getWidth())/2+100, (900-spielanleitung.getHeight())/2 + 80); - Greenfoot.setSpeed(100); - Greenfoot.start(); } - public void buttonClicked ( Button b) + public void buttonClicked ( Bildbutton b) { if ( b == chulien) { diff --git a/images/BlaueArmeeSkal.png b/images/BlaueArmeeSkal.png new file mode 100644 index 0000000..8ec2423 Binary files /dev/null and b/images/BlaueArmeeSkal.png differ diff --git a/images/GelbeArmeeSkal.png b/images/GelbeArmeeSkal.png new file mode 100644 index 0000000..137fe8f Binary files /dev/null and b/images/GelbeArmeeSkal.png differ diff --git a/images/GrueneArmeeSkal.png b/images/GrueneArmeeSkal.png new file mode 100644 index 0000000..c11ef6f Binary files /dev/null and b/images/GrueneArmeeSkal.png differ diff --git a/images/LilaArmeeSkal.png b/images/LilaArmeeSkal.png new file mode 100644 index 0000000..ebda51c Binary files /dev/null and b/images/LilaArmeeSkal.png differ diff --git a/images/MapWorldFight.png b/images/MapWorldFight.png index 4abdaa9..905e310 100644 Binary files a/images/MapWorldFight.png and b/images/MapWorldFight.png differ diff --git a/images/MapWorldMove.png b/images/MapWorldMove.png index 11789fb..31e6023 100644 Binary files a/images/MapWorldMove.png and b/images/MapWorldMove.png differ diff --git a/images/RoteArmeeSkal.png b/images/RoteArmeeSkal.png new file mode 100644 index 0000000..9376638 Binary files /dev/null and b/images/RoteArmeeSkal.png differ diff --git a/images/SchwarzeArmeeSkal.png b/images/SchwarzeArmeeSkal.png new file mode 100644 index 0000000..c45bd83 Binary files /dev/null and b/images/SchwarzeArmeeSkal.png differ diff --git a/images/USAKarteSkal.png b/images/USAKarteSkal.png new file mode 100644 index 0000000..2dc0b74 Binary files /dev/null and b/images/USAKarteSkal.png differ diff --git a/images/WeltkarteSkal.png b/images/WeltkarteSkal.png new file mode 100644 index 0000000..8d70c32 Binary files /dev/null and b/images/WeltkarteSkal.png differ diff --git a/images/dickebertaskal-blau.png b/images/dickebertaskal-blau.png index df57e72..5c5f01c 100644 Binary files a/images/dickebertaskal-blau.png and b/images/dickebertaskal-blau.png differ diff --git a/images/dickebertaskal-gelb.png b/images/dickebertaskal-gelb.png index 6511026..41c9cea 100644 Binary files a/images/dickebertaskal-gelb.png and b/images/dickebertaskal-gelb.png differ diff --git a/images/dickebertaskal-gruen.png b/images/dickebertaskal-gruen.png index c8a2d23..6248173 100644 Binary files a/images/dickebertaskal-gruen.png and b/images/dickebertaskal-gruen.png differ diff --git a/images/dickebertaskal-lila.png b/images/dickebertaskal-lila.png index 1270741..094f832 100644 Binary files a/images/dickebertaskal-lila.png and b/images/dickebertaskal-lila.png differ diff --git a/images/dickebertaskal-rot.png b/images/dickebertaskal-rot.png index a5ae4e7..ec15e33 100644 Binary files a/images/dickebertaskal-rot.png and b/images/dickebertaskal-rot.png differ diff --git a/images/dickebertaskal-schwarz.png b/images/dickebertaskal-schwarz.png index edda99d..d86734f 100644 Binary files a/images/dickebertaskal-schwarz.png and b/images/dickebertaskal-schwarz.png differ