Merge pull request #111 from HGE-IT-Course-2016/GiveStars

Sterne-Update
pull/113/head
Felix Stupp 8 years ago committed by GitHub
commit 3287759eff

@ -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);
}
}
}

@ -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() {

Loading…
Cancel
Save