Merge-Korrigierung

master
Zocker1999NET 8 years ago
parent 87b5b16ae0
commit a114c76004

@ -12,15 +12,15 @@ neue Maps werden als Unterklasse dieser Klasse eingefügt.
@author GruenerWal, MaxiJohl, Felix Stupp, Samuel @author GruenerWal, MaxiJohl, Felix Stupp, Samuel
@version 0.3.0 @version 0.3.0
*/ */
public abstract class GeneralMap extends World implements ButtonEvent public abstract class GeneralMap extends World implements ButtonEvent
{ {
/* /*
Felder, im Moment nur Anzahl der Provinzen Felder, im Moment nur Anzahl der Provinzen
Später evtl. weitere Werte wie Schwierigkeit denkbar Später evtl. weitere Werte wie Schwierigkeit denkbar
*/ */
Button modus = new Button("Kampf\nbeginnen",25,this); Button modus = new Button("Kampf\nbeginnen",25,this);
private final int X_OFFSET = 200; // Verschiebt die Provinzen nach rechts private final int X_OFFSET = 200; // Verschiebt die Provinzen nach rechts
private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten
@ -73,13 +73,24 @@ public abstract class GeneralMap extends World implements ButtonEvent
} }
createPlayerObjects(playerList.length); 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() public int currentPlayer()
{ {
return currentPlayer; return currentPlayer;
} }
public void redrawGameStates() public void redrawGameStates()
{ {
int textSize = 20; int textSize = 20;
@ -99,7 +110,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 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); GreenfootImage GameStatesEmpty = new GreenfootImage(GameStates.getWidth(),textSize);
GameStatesEmpty.drawImage(GameStates,0,0); GameStatesEmpty.drawImage(GameStates,0,0);
GreenfootImage States = new GreenfootImage("MapWorldMove.png"); GreenfootImage States = new GreenfootImage("MapWorldMove.png");
States.drawImage(GameStatesEmpty,X,Y); States.drawImage(GameStatesEmpty,X,Y);
@ -146,6 +157,20 @@ 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. Zeigt die angegebene Nachricht in einem JOptionPane Dialogfeld an.
@param msg Die anzuzeigend e Nachricht @param msg Die anzuzeigend e Nachricht
@ -162,7 +187,7 @@ public abstract class GeneralMap extends World implements ButtonEvent
} else if (status == GameStates.VERSCHIEBEN) { } else if (status == GameStates.VERSCHIEBEN) {
actMove(); actMove();
} }
redrawGameStates(); redrawGameStates();
} }
/** /**
@ -172,7 +197,7 @@ public abstract class GeneralMap extends World implements ButtonEvent
{ {
return players.length; return players.length;
} }
/** /**
* Gibt die Farbe des angefragten Spielers heraus. * Gibt die Farbe des angefragten Spielers heraus.
* @param int pID -> Farbe des Spielers * @param int pID -> Farbe des Spielers
@ -182,6 +207,14 @@ public abstract class GeneralMap extends World implements ButtonEvent
return players[pID].getColor(); 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. Gibt den Namen des aktuellen Spielers aus.
@return Der Name des aktuellen Spielers @return Der Name des aktuellen Spielers
@ -240,10 +273,10 @@ public abstract class GeneralMap extends World implements ButtonEvent
@param playerID Die ID des Spielers, für den die Einheiten gezählt werden sollen. @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. @return Die Anzahl der Einheiten, die dem Spieler gehören.
*/ */
public int getProvinceEntityCount(int playerID) public int getPlayerEntityCount(int playerID)
{ {
int c = 0; int c = 0;
for (int i = 1; i > provinces.length; i++) { for (int i = 1; i < provinces.length; i++) {
if(provinces[i].getOwner() == playerID) { if(provinces[i].getOwner() == playerID) {
c = c + provinces[i].getEntityCount(); c = c + provinces[i].getEntityCount();
} }
@ -291,6 +324,7 @@ public abstract class GeneralMap extends World implements ButtonEvent
modus.setForeColor(Color.black); modus.setForeColor(Color.black);
modus.setText("Kampf\nbeenden"); modus.setText("Kampf\nbeenden");
} else if (status==GameStates.KAMPF) { } else if (status==GameStates.KAMPF) {
giveRandomStars(players[currentPlayer]);
status=GameStates.VERSCHIEBEN; status=GameStates.VERSCHIEBEN;
savedProvince = null; savedProvince = null;
modus.setText("Nächster\nSpieler"); modus.setText("Nächster\nSpieler");
@ -314,12 +348,12 @@ public abstract class GeneralMap extends World implements ButtonEvent
} }
// Kampfsystem // Kampfsystem
Province offenderProvince; Province offenderProvince;
Province defenderProvince; Province defenderProvince;
String maxDiceOffender = ""; String maxDiceOffender = "";
String maxDiceDefender = ""; String maxDiceDefender = "";
private void actFight() { private void actFight() {
for(int i = 1; i <= (provinces.length - 1); i++) { for(int i = 1; i <= (provinces.length - 1); i++) {
if (provinces[i].hasClicked() == true) { if (provinces[i].hasClicked() == true) {
@ -411,20 +445,25 @@ public abstract class GeneralMap extends World implements ButtonEvent
diceDefender = null; diceDefender = null;
decider(maxDiceOffenderArray, maxDiceDefenderArray); decider(maxDiceOffenderArray, maxDiceDefenderArray);
} }
// berechnet Zahlen und findet Gewinner; führt Konsequenz aus // berechnet Zahlen und findet Gewinner; führt Konsequenz aus
private void decider(int[] maxDiceOffender, int [] maxDiceDefender) private void decider(int[] maxDiceOffender, int [] maxDiceDefender)
{ {
Player offPl = players[offenderProvince.getOwner()];
Player defPl = players[defenderProvince.getOwner()];
int maxDefender = maxDiceDefender[1]; int maxDefender = maxDiceDefender[1];
int maxOffender = maxDiceOffender[2]; int maxOffender = maxDiceOffender[2];
if (maxOffender > maxDefender) if (maxOffender > maxDefender)
{ {
defenderProvince.removeFromEntities(1); defenderProvince.removeFromEntities(1);
defPl.lostEntity();
if (defenderProvince.getEntityCount() <= 0) { if (defenderProvince.getEntityCount() <= 0) {
defenderProvince.setOwner(offenderProvince.getOwner()); defenderProvince.setOwner(offenderProvince.getOwner());
offenderProvince.removeFromEntities(1); offenderProvince.removeFromEntities(1);
defenderProvince.setEntityCount(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()) + ")."); JOptionPane.showMessageDialog(null,"Somit gewinnt der Angreifer (" + getPlayerName(offenderProvince.getOwner()) + "). Die Provinz gehört fortan dem Angreifer (" + getPlayerName(offenderProvince.getOwner()) + ").");
} else { } 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."); 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.");
@ -434,12 +473,14 @@ public abstract class GeneralMap extends World implements ButtonEvent
if (maxOffender < maxDefender && offenderProvince.getEntityCount()>1) if (maxOffender < maxDefender && offenderProvince.getEntityCount()>1)
{ {
offenderProvince.removeFromEntities(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."); 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) if (maxOffender == maxDefender && offenderProvince.getEntityCount()>1)
{ {
offenderProvince.removeFromEntities(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."); 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.");
} }
@ -450,9 +491,9 @@ public abstract class GeneralMap extends World implements ButtonEvent
} }
// Einheiten verschieben // Einheiten verschieben
Province savedProvince = null; Province savedProvince = null;
private void actMove() { private void actMove() {
for ( int i = 1; i <= (provinces.length - 1); i++) { for ( int i = 1; i <= (provinces.length - 1); i++) {
if (provinces[i].hasClicked() == true) { if (provinces[i].hasClicked() == true) {
@ -514,15 +555,16 @@ public abstract class GeneralMap extends World implements ButtonEvent
savedProvince = null; savedProvince = null;
} }
} }
// Einheiten setzen // Einheiten setzen
int freeArmies = -1; int freeArmies = -1;
private void actPlace() private void actPlace()
{ {
if ( freeArmies == -1 ) { if ( freeArmies == -1 ) {
freeArmies = calculateArmies(); freeArmies = calculateArmies();
players[currentPlayer].gotEntities(freeArmies);
} else if ( freeArmies == 0 ) { } else if ( freeArmies == 0 ) {
modus.setBackColor(Color.white); modus.setBackColor(Color.white);
modus.setForeColor(Color.black); modus.setForeColor(Color.black);
@ -598,16 +640,34 @@ public abstract class GeneralMap extends World implements ButtonEvent
// 4. Einheiten durch Sterne // 4. Einheiten durch Sterne
if ( players[currentPlayer].getStars() > 0) 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 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; return armiesToPlace;
@ -635,4 +695,28 @@ public abstract class GeneralMap extends World implements ButtonEvent
return Utils.cutArray(savedProvinces); 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);
}
}
}

@ -23,6 +23,7 @@ public class Player extends Actor
int textsize; int textsize;
int c; int c;
public int active; public int active;
boolean starsNeeded = false;
//definiert die ID und Namens Variable //definiert die ID und Namens Variable
public Player(int identity,String name, int c) public Player(int identity,String name, int c)
@ -139,10 +140,15 @@ public class Player extends Actor
} }
return p; return p;
} }
public int getEntitiesCount() {
return getWorld().getPlayerEntityCount(id);
}
public void gotEntities(int gotEnt) public void gotEntities(int gotEnt)
{ {
stats[3]+= gotEnt; stats[3]+= gotEnt;
reloadMaxEntities();
redrawPlayer(); redrawPlayer();
} }
@ -152,11 +158,34 @@ public class Player extends Actor
redrawPlayer(); redrawPlayer();
} }
private void maxEntities(int entNumber) public void gotProvince() {
stats[0]++;
reloadMaxInfluence();
redrawPlayer();
starsNeeded = true;
}
public void lostProvince() {
stats[1]++;
redrawPlayer();
}
public void reloadMaxInfluence()
{ {
if (stats[5]< entNumber) int c = getProvinceCount();
if(stats[2]< c)
{ {
stats[5]=entNumber; stats[2]=c;
redrawPlayer();
}
}
public void reloadMaxEntities()
{
int c = getEntitiesCount();
if (stats[5]< c)
{
stats[5]=c;
redrawPlayer(); redrawPlayer();
} }
} }
@ -194,6 +223,14 @@ 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() public void redrawPlayer()
{ {
getWorld().reloadPlayerStat(); getWorld().reloadPlayerStat();
@ -202,9 +239,6 @@ public class Player extends Actor
{ {
n = "leererSpieler"; 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); GreenfootImage statistics = new GreenfootImage(137,120);
if(getWorld().getCurrentPlayerID() == id) { if(getWorld().getCurrentPlayerID() == id) {
statistics.setColor(new Color(255,255,255)); statistics.setColor(new Color(255,255,255));
@ -220,45 +254,27 @@ public class Player extends Actor
private void oDecide(GreenfootImage statistics,int textSize) private void oDecide(GreenfootImage statistics,int textSize)
{ {
GreenfootImage flag = new GreenfootImage("images\\BlaueArmee.jpg"); GreenfootImage flag = new GreenfootImage("images\\BlaueArmee.jpg");
redraw(statistics,flag,textSize);
switch(color) switch(color)
{ {
case 2: case 2:
flag = new GreenfootImage("images\\BlaueArmee.jpg"); flag = new GreenfootImage("images\\BlaueArmee.jpg");
redraw(statistics,flag,textSize);
break; break;
case 5: case 5:
flag = new GreenfootImage("images\\GelbeArmee.jpg"); flag = new GreenfootImage("images\\GelbeArmee.jpg");
redraw(statistics,flag,textSize);
break; break;
case 6: case 6:
flag = new GreenfootImage("images\\LilaArmee.jpg"); flag = new GreenfootImage("images\\LilaArmee.jpg");
redraw(statistics,flag,textSize);
break; break;
case 4: case 4:
flag = new GreenfootImage("images\\RoteArmee.jpg"); flag = new GreenfootImage("images\\RoteArmee.jpg");
redraw(statistics,flag,textSize);
break; break;
case 1: case 1:
flag = new GreenfootImage("images\\SchwarzeArmee.jpg"); flag = new GreenfootImage("images\\SchwarzeArmee.jpg");
redraw(statistics,flag,textSize);
break; break;
case 3: case 3:
flag = new GreenfootImage("images\\GrueneArmee.jpg"); flag = new GreenfootImage("images\\GrueneArmee.jpg");
redrawArrow(statistics,flag,textSize);
break; break;
} }
}
private void redrawArrow(GreenfootImage statistics,GreenfootImage flag, int textSize)
{
// redraw(statistics,flag,textSize);
redraw(statistics,flag,textSize); redraw(statistics,flag,textSize);
} }
@ -272,4 +288,4 @@ public class Player extends Actor
setImage(statistics); setImage(statistics);
} }
} }
Loading…
Cancel
Save