Merge branch 'master' into GeneralMapErweiterung

pull/60/head
Zocker1999NET 8 years ago
commit 61261bcd7e

@ -1,7 +1,7 @@
/* /*
Hinweis zum Verbleib der Klasse: 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. 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. Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen.
*/ */
import greenfoot.*; import greenfoot.*;
@ -15,64 +15,40 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse
*/ */
public class Dice_Defender extends Dice public class Dice_Defender extends Dice
{ {
/** /**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever * Act - do whatever the Dice_Offender wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment. * the 'Act' or 'Run' button gets pressed in the environment.
*/ */
int[] diceEyesDefender = new int[2]; int[] diceEyesDefender = new int[2];
public void act() public void act()
{ {
// Add your action code here. // 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. * 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 * @param troupNumberDefender Anzahl der Truppen auf dem ausgewählten Feld
*/ */
public int[] dice_defender(int troupNumberDefender) public int[] dice_defender(int troupNumberDefender)
{ {
if(troupNumberDefender == 1) if(troupNumberDefender == 1)
{ {
diceEyesDefender[0] = (int) (Math.random() * 6 +1); diceEyesDefender[0] = (int) (Math.random() * 6 +1);
return diceEyesDefender; return diceEyesDefender;
} }
if(troupNumberDefender >=2 ) if(troupNumberDefender >=2 )
{ {
diceEyesDefender[0] = (int) (Math.random() * 6 +1); diceEyesDefender[0] = (int) (Math.random() * 6 +1);
diceEyesDefender[1] = (int) (Math.random()* 6 +1); diceEyesDefender[1] = (int) (Math.random()* 6 +1);
System.out.println(diceEyesDefender[0]); // System.out.println(diceEyesDefender[0]);
System.out.println(diceEyesDefender[1]); // System.out.println(diceEyesDefender[1]);
return diceEyesDefender; return diceEyesDefender;
} }
Arrays.sort(diceEyesDefender); Arrays.sort(diceEyesDefender);
return 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;
}
} }

@ -1,7 +1,7 @@
/* /*
Hinweis zum Verbleib der Klasse: 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. 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. Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen.
*/ */
import greenfoot.*; import greenfoot.*;
@ -15,96 +15,56 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse
*/ */
public class Dice_Offender extends Dice public class Dice_Offender extends Dice
{ {
/** /**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever * Act - do whatever the Dice_Offender wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment. * the 'Act' or 'Run' button gets pressed in the environment.
*/ */
int[] diceEyesOffender = new int[3]; int[] diceEyesOffender = new int[3];
public void act() public void act()
{ {
// Add your action code here. // 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. * 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 * @param troupNumberOffender Anzahl der Truppen auf dem ausgewählten Feld
*/ */
public int[] dice_offender(int troupNumberOffender) public int[] dice_offender(int troupNumberOffender)
{ {
if(troupNumberOffender == 1) if(troupNumberOffender == 1)
{ {
System.out.println("Mit einer verbleibenden Truppe auff dem Feld kann man nicht angreifen!"); System.out.println("Mit einer verbleibenden Truppe auff dem Feld kann man nicht angreifen!");
} }
if(troupNumberOffender == 2) if(troupNumberOffender == 2)
{ {
diceEyesOffender[0] = (int) (Math.random()*6+1); diceEyesOffender[0] = (int) (Math.random()*6+1);
System.out.println(diceEyesOffender[0]); // System.out.println(diceEyesOffender[0]);
return diceEyesOffender; return diceEyesOffender;
} }
if(troupNumberOffender == 3) if(troupNumberOffender == 3)
{ {
diceEyesOffender[0] = (int) (Math.random() * 6 +1); diceEyesOffender[0] = (int) (Math.random() * 6 +1);
diceEyesOffender[1] = (int) (Math.random()* 6 +1); diceEyesOffender[1] = (int) (Math.random()* 6 +1);
System.out.println(diceEyesOffender[0]); // System.out.println(diceEyesOffender[0]);
System.out.println(diceEyesOffender[1]); // System.out.println(diceEyesOffender[1]);
return diceEyesOffender; return diceEyesOffender;
} }
if(troupNumberOffender > 3) if(troupNumberOffender > 3)
{ {
diceEyesOffender[0] = (int) (Math.random() * 6 +1); diceEyesOffender[0] = (int) (Math.random() * 6 +1);
diceEyesOffender[1] = (int) (Math.random()* 6 +1); diceEyesOffender[1] = (int) (Math.random()* 6 +1);
diceEyesOffender[2] = (int) (Math.random()* 6 + 1); diceEyesOffender[2] = (int) (Math.random()* 6 + 1);
System.out.println(diceEyesOffender[0]); // System.out.println(diceEyesOffender[0]);
System.out.println(diceEyesOffender[1]); // System.out.println(diceEyesOffender[1]);
System.out.println(diceEyesOffender[2]); // System.out.println(diceEyesOffender[2]);
return diceEyesOffender; return diceEyesOffender;
} }
Arrays.sort(diceEyesOffender); Arrays.sort(diceEyesOffender);
return 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;
}
} }

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

@ -13,332 +13,332 @@ neue Maps werden als Unterklasse dieser Klasse eingefügt.
*/ */
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
*/ */
private final int X_OFFSET = 160; // Verschiebt die Provinzen nach rechts private final int X_OFFSET = 160; // 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
/* /*
Die einzelnen Positionen der Provinzen wird mit SCALE_VALUE/10000 multipliziert. 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. 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. Bei diesem Beispiel wäre hier, neben dem Offset oben, der Wert 0.8 einzutragen.
*/ */
private final double SCALE_VALUE = 1; private final double SCALE_VALUE = 1;
protected enum GameStates { protected enum GameStates {
KAMPF, KAMPF,
VERSCHIEBEN VERSCHIEBEN
} }
protected Province[] provinces; protected Province[] provinces;
protected Player[] players; protected Player[] players;
protected int currentPlayer = 0; protected int currentPlayer = 0;
protected GameStates status = GameStates.VERSCHIEBEN; protected GameStates status = GameStates.VERSCHIEBEN;
Province offenderProvince; Province offenderProvince;
Province defenderProvince; Province defenderProvince;
Province savedProvince = null; Province savedProvince = null;
/** /**
Erstellt eine GeneralMap mit allen Eigenschaften und initialisiert die Arrays für Provinzen und Spieler. 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 backImage Das Hintergrundbild, welches von dieser Klasse geladen und dargestellt wird.
@param playerList Die Liste mit den Namen der Spieler @param playerList Die Liste mit den Namen der Spieler
@param colorList Die Liste mit den Farben der Spieler @param colorList Die Liste mit den Farben der Spieler
*/ */
public GeneralMap(String backImage, String[] playerList, int[] colorList) public GeneralMap(String backImage, String[] playerList, int[] colorList)
{ {
super(1600,900,1); super(1600,900,1);
players = new Player[playerList.length]; players = new Player[playerList.length];
for (int i = 0; i < playerList.length; i++) { for (int i = 0; i < playerList.length; i++) {
players[i] = new Player(i,playerList[i],colorList[i]); players[i] = new Player(i,playerList[i],colorList[i]);
} }
createPlayerObjects(playerList.length); createPlayerObjects(playerList.length);
} }
private void createPlayerObjects(int playerCount) private void createPlayerObjects(int playerCount)
{ {
addObject(players[0],82,110); addObject(players[0],82,110);
if (playerCount > 1) if (playerCount > 1)
{ {
addObject(players[1],82,230); addObject(players[1],82,230);
if (playerCount > 2) if (playerCount > 2)
{ {
addObject(players[2],82,350); addObject(players[2],82,350);
if (playerCount > 3) if (playerCount > 3)
{ {
addObject(players[3],1512,110); addObject(players[3],1512,110);
if (playerCount > 4) if (playerCount > 4)
{ {
addObject(players[4],1512,230); addObject(players[4],1512,230);
if (playerCount > 5) if (playerCount > 5)
{ {
addObject(players[5],1512,350); addObject(players[5],1512,350);
} }
} }
} }
} }
} }
} }
/** /**
Fügt alle Provinzen aus dem Array der Welt an der entsprechden Stelle zu. Fügt alle Provinzen aus dem Array der Welt an der entsprechden Stelle zu.
*/ */
protected void initProvinces() { protected void initProvinces() {
for(int i = 1; i < provinces.length; i++) { 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); 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() { public void act() {
if(status == GameStates.KAMPF) { if(status == GameStates.KAMPF) {
if(offenderProvince == null) if(offenderProvince == null)
{ {
OffenderProvince(); OffenderProvince();
} }
else else
{ {
defenderProvince(); defenderProvince();
} }
} else if(status == GameStates.VERSCHIEBEN) { } else if(status == GameStates.VERSCHIEBEN) {
Province clickedProvince; Province clickedProvince;
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)
{ {
clickedProvince = provinces[i]; clickedProvince = provinces[i];
useProvincesToMove(clickedProvince); useProvincesToMove(clickedProvince);
break; break;
} }
} }
} }
} }
/** /**
Gibt die Anzahl der vorhandenen Spieler aus. Gibt die Anzahl der vorhandenen Spieler aus.
*/ */
public int getPlayerCount() public int getPlayerCount()
{ {
return players.length; return players.length;
} }
/** /**
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
*/ */
public String getPlayerName() public String getPlayerName()
{ {
return players[currentPlayer].getDisplayName(); return players[currentPlayer].getDisplayName();
} }
/** /**
Gibt den Namen des Spielers aus, dem dessen ID gehört. Gibt den Namen des Spielers aus, dem dessen ID gehört.
@param plID Die ID des zu findenden Spielers @param plID Die ID des zu findenden Spielers
@return Der Name des Spielers @return Der Name des Spielers
*/ */
public String getPlayerName(int plID) public String getPlayerName(int plID)
{ {
return players[plID].getDisplayName(); return players[plID].getDisplayName();
} }
/** /**
Gibt die Anzahl der Sterne des aktuellen Spielers zurück. Gibt die Anzahl der Sterne des aktuellen Spielers zurück.
@return Die Anzahl der Sterne des aktuellen Spielers @return Die Anzahl der Sterne des aktuellen Spielers
*/ */
public int getPlayerStars() public int getPlayerStars()
{ {
return players[currentPlayer].getStars(); return players[currentPlayer].getStars();
} }
/** /**
Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört. Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört.
@param prID Die gefragte Provinz @param prID Die gefragte Provinz
*/ */
public int getProvinceOwner(int prID) public int getProvinceOwner(int prID)
{ {
if(prID < 1 || prID > provinces.length) { if(prID < 1 || prID > provinces.length) {
return -1; return -1;
} }
return provinces[prID].getOwner(); return provinces[prID].getOwner();
} }
/** /**
Gibt eine Liste mit allen Provinzen und deren Besitzern zurück. Gibt eine Liste mit allen Provinzen und deren Besitzern zurück.
@return Array mit der Provinz-ID als Index und dem Besitzer als Wert @return Array mit der Provinz-ID als Index und dem Besitzer als Wert
*/ */
public int[] getProvinceOwners() public int[] getProvinceOwners()
{ {
int[] prOwners = new int[provinces.length]; int[] prOwners = new int[provinces.length];
for (int i = 1; i > provinces.length; i++) { for (int i = 1; i > provinces.length; i++) {
prOwners[i] = provinces[i].getOwner(); prOwners[i] = provinces[i].getOwner();
} }
return prOwners; return prOwners;
} }
/** /**
Zählt die Anzahl der Einheiten von allen Provinzen zusammen, die einem bestimmten Spieler gehört. 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. @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 getProvinceEntityCount(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();
} }
} }
return c; return c;
} }
public void buttonClicked(Button b) { public void buttonClicked(Button b) {
if(status == GameStates.KAMPF) { if(status == GameStates.KAMPF) {
status = GameStates.VERSCHIEBEN; status = GameStates.VERSCHIEBEN;
} else if(status == GameStates.VERSCHIEBEN) { } else if(status == GameStates.VERSCHIEBEN) {
status = GameStates.KAMPF; status = GameStates.KAMPF;
currentPlayer++; currentPlayer++;
if(currentPlayer >= players.length) { if(currentPlayer >= players.length) {
currentPlayer = 0; currentPlayer = 0;
} }
} }
} }
// Kampfsystem // Kampfsystem
private void OffenderProvince() private void OffenderProvince()
{ {
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)
{ {
offenderProvince = provinces[i]; offenderProvince = provinces[i];
System.out.println("1"); System.out.println("1");
} }
} }
} }
private void defenderProvince() private void defenderProvince()
{ {
{ {
for (int i = 1; i <= (provinces.length - 1); i++) for (int i = 1; i <= (provinces.length - 1); i++)
{ {
if (provinces[i].hasClicked() == true)//&& defenderProvince != offenderProvince) if (provinces[i].hasClicked() == true)//&& defenderProvince != offenderProvince)
{ {
defenderProvince = provinces[i]; defenderProvince = provinces[i];
System.out.println("2"); System.out.println("2");
chooser(); chooser();
break; break;
} }
} }
} }
} }
private void chooser() private void chooser()
{ {
Dice_Offender diceOffender = new Dice_Offender(); Dice_Offender diceOffender = new Dice_Offender();
int[] maxDiceOffender = diceOffender.max_offender(offenderProvince.getEntityCount()); int[] maxDiceOffender = diceOffender.max_offender(offenderProvince.getEntityCount());
Dice_Defender diceDefender = new Dice_Defender(); Dice_Defender diceDefender = new Dice_Defender();
int[] maxDiceDefender = diceDefender.max_defender(defenderProvince.getEntityCount()); int[] maxDiceDefender = diceDefender.max_defender(defenderProvince.getEntityCount());
Arrays.sort(maxDiceOffender); Arrays.sort(maxDiceOffender);
Arrays.sort(maxDiceDefender); Arrays.sort(maxDiceDefender);
decider(maxDiceOffender, maxDiceDefender); decider(maxDiceOffender, maxDiceDefender);
} }
private void decider(int[] maxDiceOffender, int [] maxDiceDefender) private void decider(int[] maxDiceOffender, int [] maxDiceDefender)
{ {
int maxDefender = maxDiceDefender[1]; int maxDefender = maxDiceDefender[1];
int maxOffender = maxDiceOffender[2]; int maxOffender = maxDiceOffender[2];
if (maxOffender>maxDefender && defenderProvince.getEntityCount()>1) if (maxOffender>maxDefender && defenderProvince.getEntityCount()>1)
{ {
int EntitiesOffender = offenderProvince.getEntityCount(); int EntitiesOffender = offenderProvince.getEntityCount();
int EntitiesDefender = defenderProvince.getEntityCount(); int EntitiesDefender = defenderProvince.getEntityCount();
defenderProvince.setEntityCount(EntitiesDefender - 1); defenderProvince.setEntityCount(EntitiesDefender - 1);
} }
if (maxOffender<maxDefender && offenderProvince.getEntityCount()>1) if (maxOffender<maxDefender && offenderProvince.getEntityCount()>1)
{ {
int EntitiesOffender = offenderProvince.getEntityCount(); int EntitiesOffender = offenderProvince.getEntityCount();
int EntitiesDefender = defenderProvince.getEntityCount(); int EntitiesDefender = defenderProvince.getEntityCount();
offenderProvince.setEntityCount(EntitiesOffender - 1); offenderProvince.setEntityCount(EntitiesOffender - 1);
} }
if (maxOffender>maxDefender && defenderProvince.getEntityCount()==1) if (maxOffender>maxDefender && defenderProvince.getEntityCount()==1)
{ {
defenderProvince.setOwner(offenderProvince.getOwner()); defenderProvince.setOwner(offenderProvince.getOwner());
defenderProvince.setEntityCount(0); defenderProvince.setEntityCount(0);
} }
if (maxOffender>maxDefender && offenderProvince.getEntityCount()==1) if (maxOffender>maxDefender && offenderProvince.getEntityCount()==1)
{ {
offenderProvince.setOwner(defenderProvince.getOwner()); offenderProvince.setOwner(defenderProvince.getOwner());
offenderProvince.setEntityCount(0); offenderProvince.setEntityCount(0);
} }
System.out.println("3"); System.out.println("3");
offenderProvince = null; offenderProvince = null;
defenderProvince = null; defenderProvince = null;
} }
// Einheiten verschieben // Einheiten verschieben
/** /**
* Nimmt zwei Provinzen entgegen, und fragt, wieviele Einheiten vom ersten zum zweiten Eintrag verschoben werden sollen. * 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. * Überprüft, ob eine Verschiebung möglich ist und führt sie bei Erfolg aus.
*/ */
private void moveEntities(Province sourceProvince, Province destinationProvince) private void moveEntities(Province sourceProvince, Province destinationProvince)
{ {
String toMoveString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du verschieben?"); String toMoveString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du verschieben?");
int entitiesToMove = Utils.StringToInt(toMoveString); int entitiesToMove = Utils.StringToInt(toMoveString);
if (entitiesToMove == 0) { if (entitiesToMove == 0) {
JOptionPane.showMessageDialog(null,"Bitte eine Zahl eingeben, Kommandant " + getPlayerName() + "."); JOptionPane.showMessageDialog(null,"Bitte eine Zahl eingeben, Kommandant " + getPlayerName() + ".");
return; return;
} }
if ( (sourceProvince.getEntityCount() - entitiesToMove) > 0) if ( (sourceProvince.getEntityCount() - entitiesToMove) > 0)
{ {
sourceProvince.removeFromEntities(entitiesToMove); sourceProvince.removeFromEntities(entitiesToMove);
destinationProvince.addToEntities(entitiesToMove); destinationProvince.addToEntities(entitiesToMove);
JOptionPane.showMessageDialog(null,"Einheiten erfolgreich verschoben, Kommandant " + getPlayerName() + "."); JOptionPane.showMessageDialog(null,"Einheiten erfolgreich verschoben, Kommandant " + getPlayerName() + ".");
} }
else if ( (sourceProvince.getEntityCount() - entitiesToMove) <= 0) 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."); 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. * 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 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. * Ist dies der Fall, werden beide Provinzen an moveEntities übergeben.
*/ */
private void useProvincesToMove(Province givenProvince) private void useProvincesToMove(Province givenProvince)
{ {
if (savedProvince == null) if (savedProvince == null)
{ {
savedProvince = givenProvince; savedProvince = givenProvince;
} }
else if ((savedProvince != null) && (givenProvince != savedProvince) && (savedProvince.getOwner() == givenProvince.getOwner()) && (savedProvince.getOwner() == currentPlayer) ) else if ((savedProvince != null) && (givenProvince != savedProvince) && (savedProvince.getOwner() == givenProvince.getOwner()) && (savedProvince.getOwner() == currentPlayer) )
{ {
if (givenProvince.isProvinceNear(savedProvince.getID()) == true) if (givenProvince.isProvinceNear(savedProvince.getID()) == true)
{ {
moveEntities(savedProvince,givenProvince); moveEntities(savedProvince,givenProvince);
} }
savedProvince = null; savedProvince = null;
} }
} }
} }

@ -1,7 +1,7 @@
/* /*
Hinweis zum Verbleib der Klasse: 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. 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. 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) 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 class Menue_Button extends Button
{ {
public Menue_Button(ButtonEvent h) { public Menue_Button(ButtonEvent h) {
super(h); super(h);
} }
/** /**
* Act - do whatever the Menue_Button wants to do. This method is called whenever * Act - do whatever the Menue_Button wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment. * the 'Act' or 'Run' button gets pressed in the environment.
*/ */
public void act() public void act()
{ {
setLocation(100,38);// Add your action code here. setLocation(100,38);// Add your action code here.
} }
} }

@ -1,4 +1,5 @@
import greenfoot.*; import greenfoot.*;
import java.awt.Color;
/** /**
* Write a description of class Player here. * Write a description of class Player here.
@ -8,193 +9,265 @@ import greenfoot.*;
*/ */
public class Player extends Actor public class Player extends Actor
{ {
@Override public GeneralMap getWorld(){ @Override public GeneralMap getWorld(){
return (GeneralMap) super.getWorld(); return (GeneralMap) super.getWorld();
} }
int stars=0; int stars=0;
int add=0; int add=0;
int id=0; int id=0;
int provZahl=0; int provZahl=0;
int provVgl=0; int provVgl=0;
int [] stats = new int [6]; int [] stats = new int [6];
boolean [] pBesitzer = new boolean [42]; boolean [] pBesitzer = new boolean [42];
boolean gotProv = false; boolean gotProv = false;
boolean lostProv = false; boolean lostProv = false;
int identity;
private String n; String name;
private int c; int color;
//definiert die ID und Namens Variable int textsize;
public Player( int identity,String name, int color)
{ private String n;
n = name; private int c;
id = identity; //definiert die ID und Namens Variable
c = color; public Player( int identity,String name, int color)
} {
//gibt die Spieler ID zurück n = name;
public int getID() id = identity;
{ c = color;
return id; }
} //gibt die Spieler ID zurück
// gibt den Spielernamen zurück public int getID()
public String getDisplayName () {
{ return id;
return n; }
} // gibt den Spielernamen zurück
//gibt die Sternenanzahl zurück public String getDisplayName ()
public int getStars () {
{ return n;
return stars; }
} //gibt die Sternenanzahl zurück
// erhöht die Sternenzahl um eine random ausgewählte Anzahl von 1-3 public int getStars ()
public void addToStars () {
{ return stars;
}
int rand; // erhöht die Sternenzahl um eine random ausgewählte Anzahl von 1-3
int pre; public void addToStars ()
rand = (int)(1+6*Math.random()); {
if (rand == 1 || rand == 2|| rand == 3)
{ int rand;
add = 1; int pre;
} rand = (int)(1+6*Math.random());
if (rand == 4|| rand == 5) if (rand == 1 || rand == 2|| rand == 3)
{ {
add = 2; add = 1;
} }
if (rand == 6) if (rand == 4|| rand == 5)
{ {
add = 3; add = 2;
} }
if (gotProv== true) if (rand == 6)
{ {
pre = stars; add = 3;
stars+=add; }
System.out.println("Deine vorherige Sternenanzahl betrug " + pre + "."); if (gotProv== true)
System.out.println("Du hast " + add + " Sterne erhalten."); {
System.out.println("Deine aktuelle Sternenanzahl beträgt " + stars + "."); pre = stars;
stars+=add;
} System.out.println("Deine vorherige Sternenanzahl betrug " + pre + ".");
} System.out.println("Du hast " + add + " Sterne erhalten.");
//eine Methode um addToStars zu testen System.out.println("Deine aktuelle Sternenanzahl beträgt " + stars + ".");
public void add ()
{ }
addToStars(); }
} //eine Methode um addToStars zu testen
//eine für das Testen gedachte Methode, die die Anzahl der Sterne auf ein gewünschtes Maß setzt public void add ()
public int setStars (int set) {
{ addToStars();
stars = set; }
return stars; //eine für das Testen gedachte Methode, die die Anzahl der Sterne auf ein gewünschtes Maß setzt
} public int setStars (int set)
//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) stars = set;
{ return stars;
int s; }
//eine Methode, die das Abziehen von Sternen testet und, wenn das Ergebnis >= 0 ist, die Sternenanzahl um eine gewählte Anzahl verringert
s = stars - sub; public int removeFromStars(int sub)
if (s>=0) {
{ int s;
stars = s;
} s = stars - sub;
else if (s>=0)
{ {
System.out.println ("Du hast nur " + stars + " Sterne, du kannst also nicht " + sub + " Sterne abziehen"); stars = s;
} }
return stars; else
} {
System.out.println ("Du hast nur " + stars + " Sterne, du kannst also nicht " + sub + " Sterne abziehen");
public int getProvinceCount () }
{ return stars;
GeneralMap w= getWorld(); }
int[] provinces = w.getProvinceOwners();
for (int x=0; x<=42; x++ ) public int getProvinceCount ()
{ {
if ( provinces [x] ==id) GeneralMap w= getWorld();
{ int[] provinces = w.getProvinceOwners();
provZahl++; for (int x=0; x<=42; x++ )
{
} if ( provinces [x] ==id)
} {
if(stats[2] < provZahl) provZahl++;
{
stats[2]=provZahl; }
}
} if(stats[2] < provZahl)
return provZahl; {
} stats[2]=provZahl;
public void gotEntities(int gotEnt) }
{ return provZahl;
stats[3]+= gotEnt; }
}
public void lostEntity() public void gotEntities(int gotEnt)
{ {
stats[4]+=1; stats[3]+= gotEnt;
} }
private void maxEntities(int entNumber)
{ public void lostEntity()
if (stats[5]< entNumber) {
{ stats[4]+=1;
stats[5]=entNumber; }
}
} private void maxEntities(int entNumber)
public boolean[] getMyProvinces() {
{ if (stats[5]< entNumber)
GeneralMap w= getWorld(); {
int[] provinces = w.getProvinceOwners(); stats[5]=entNumber;
for (int x=0; x<=42; x++) }
{ }
if (provinces[x]== id)
{ public boolean[] getMyProvinces()
pBesitzer[x]=true; {
} GeneralMap w= getWorld();
else int[] provinces = w.getProvinceOwners();
{ for (int x=0; x<=42; x++)
pBesitzer[x]=false; {
} if (provinces[x]== id)
{
} pBesitzer[x]=true;
return pBesitzer; }
} else
{
private void gotlostProvince() pBesitzer[x]=false;
{ }
if (provVgl== provZahl)
{ }
gotProv = false; return pBesitzer;
lostProv =false; }
} private void gotlostProvince()
if(provVgl< provZahl) {
{ if (provVgl== provZahl)
gotProv = true; {
lostProv = false; gotProv = false;
stats[0]+=1; lostProv =false;
}
if (provVgl > provZahl) }
{ if(provVgl< provZahl)
gotProv = false; {
lostProv = true; gotProv = true;
stats[1]+=1; lostProv = false;
} stats[0]+=1;
provVgl = provZahl; }
} if (provVgl > provZahl)
{
public boolean getGotProvince () gotProv = false;
{ lostProv = true;
return gotProv; stats[1]+=1;
} }
provVgl = provZahl;
public boolean getLostProvince() }
{
return lostProv; public boolean getGotProvince ()
} {
public int[] getStatistics() return gotProv;
{ }
return stats;
} public boolean getLostProvince()
private void redrawPlayer() {
{ return lostProv;
//Platzhalter }
int x=0;
} 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);
}
} }

@ -9,264 +9,277 @@ import java.awt.Color;
*/ */
public class Province extends Actor public class Province extends Actor
{ {
@Override public GeneralMap getWorld() { @Override public GeneralMap getWorld() {
return (GeneralMap) super.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;
}
}
// Haupt-Konstruktor private int stars = 1;
public Province(int pID, int cID, int x, int y, int st, String s1, int[] ia1) private int provinceID;
{ private String displayName;
provinceID = pID; private int owner = 0;
continentID = cID; private boolean[] nextProvinces;
xPos = x; private int continentID;
yPos = y; private int xPos;
if(st > 0) { private int yPos;
stars = st; private int eCount;
}
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;
}
}
}
// Zweiter Konstruktor, um auch das boolean-Array gegebenenfalls verwenden zu könnnen. private boolean clicked = false;
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 X-Position als Integer /**
public int getXPos() * Überprüft, ob die Provinz angeklickt wurde.
{ */
return xPos; public void act()
} {
if(Greenfoot.mouseClicked(this)) {
clicked = true;
}
}
// Liefert die Y-Position als Integer // Haupt-Konstruktor
public int getYPos() public Province(int pID, int cID, int x, int y, int st, String s1, int[] ia1)
{ {
return yPos; 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 // Zweiter Konstruktor, um auch das boolean-Array gegebenenfalls verwenden zu könnnen.
public int getID() public Province(int pID, int cID, int x, int y, int st, String s1, boolean[] ba1)
{ {
return provinceID; 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 // Liefert die X-Position als Integer
public int getContinentID() public int getXPos()
{ {
return continentID; return xPos;
} }
// Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt. // Liefert die Y-Position als Integer
public boolean isProvinceNear(int i) { public int getYPos()
if(i >= nextProvinces.length) { {
return false; return yPos;
} }
return nextProvinces[i];
}
// Liefert den Anzeigenamen als String // Liefert die Provinz-ID als Integer
public String getDisplayName() public int getID()
{ {
return displayName; return provinceID;
} }
// Liefert die Sterne als Integer // Liefert die Kontinent-ID als Integer
public int getStars() public int getContinentID()
{ {
return stars; return continentID;
} }
// Liefert den Owner als String // Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt.
public int getOwner() public boolean isProvinceNear(int i) {
{ if(i >= nextProvinces.length) {
return owner; return false;
} }
return nextProvinces[i];
}
// Setzt den Owner, benötigt String // Liefert den Anzeigenamen als String
public void setOwner(int o) public String getDisplayName()
{ {
if(o < -1) { return displayName;
o = -1; }
}
owner = o;
}
public int getEntityCount() { // Liefert die Sterne als Integer
return eCount; public int getStars()
} {
return stars;
}
private void checkEntityCount() { // Liefert den Owner als String
if(eCount < 0) { public int getOwner()
eCount = 0; {
} return owner;
} }
public int addToEntities(int a) { // Setzt den Owner, benötigt String
eCount = eCount + a; public void setOwner(int o)
checkEntityCount(); {
redrawProvince(); if(o < -1) {
return eCount; o = -1;
} }
owner = o;
}
public int removeFromEntities(int a) { public int getEntityCount() {
eCount = eCount - a; return eCount;
checkEntityCount(); }
redrawProvince();
return eCount;
}
public int setEntityCount(int a) { private void checkEntityCount() {
eCount = a; if(eCount < 0) {
checkEntityCount(); eCount = 0;
redrawProvince(); }
return eCount; }
}
public void redrawProvince() public int addToEntities(int a) {
{ eCount = eCount + a;
int textSize; checkEntityCount();
textSize = 20; redrawProvince();
GreenfootImage province = new GreenfootImage(100,100); return eCount;
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) public int removeFromEntities(int a) {
{ eCount = eCount - a;
String ownerString; checkEntityCount();
switch(owner) redrawProvince();
{ return eCount;
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 setEntityCount(int a) {
eCount = a;
} checkEntityCount();
redrawProvince();
return eCount;
}
private void eCalculate(GreenfootImage province, String ownerString,int textSize) public void redrawProvince()
{ {
int eCountTanks = eCount / 5; int textSize;
GreenfootImage tank = new GreenfootImage("images\\dickebertaskal-" + ownerString + ".png"); textSize = 20;
tank.scale(textSize,textSize); GreenfootImage province = new GreenfootImage(100,100);
if(eCountTanks <= 3) 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);
if(eCountTanks == 1) oDecide(province,textSize);
{ }
province.drawImage(tank,0,textSize);
} public void oDecide(GreenfootImage province,int textSize)
if(eCountTanks == 2) {
{ String ownerString;
province.drawImage(tank,0,textSize); if(owner == 0)
province.drawImage(tank,17,textSize); {
} ownerString = "schwarz";
if(eCountTanks == 3) eCalculate(province,ownerString,textSize);
{ }
province.drawImage(tank,0,textSize); else
province.drawImage(tank,textSize,textSize); {
province.drawImage(tank,textSize,textSize); switch(owner)
} {
} case 1:
else ownerString = "schwarz";
{ eCalculate(province,ownerString,textSize);
GreenfootImage eCountTanksImage = new GreenfootImage(Integer.toString(eCountTanks) + "x",textSize,Color.CYAN,new Color(1.0f,1.0f,1.0f,0.5f)); break;
province.drawImage(eCountTanksImage,0,textSize); case 2:
province.drawImage(tank,45,textSize); ownerString = "rot";
} eCalculate(province,ownerString,textSize);
int eCountHorse = (eCount - (eCountTanks * 5))/3; break;
GreenfootImage horse = new GreenfootImage("images\\pferdreiterskal-" + ownerString + ".png"); case 3:
horse.scale(textSize,textSize); ownerString = "blau";
if(eCountHorse == 1) eCalculate(province,ownerString,textSize);
{ break;
province.drawImage(horse,0,2 * textSize); case 4:
} ownerString = "gelb";
GreenfootImage Inf = new GreenfootImage("images\\infanterieskal-" + ownerString + ".png"); eCalculate(province,ownerString,textSize);
int eCountInf = eCount - (eCountTanks * 5) - (eCountHorse * 3); break;
Inf.scale(textSize,textSize); case 5:
if(eCountInf <= 4) ownerString = "gr++n";
{ eCalculate(province,ownerString,textSize);
if(eCountInf == 1) break;
{ case 6:
province.drawImage(Inf,0,3* textSize); ownerString = "lila";
} eCalculate(province,ownerString,textSize);
if(eCountInf == 2) break;
{
province.drawImage(Inf,0,3 * textSize); }
province.drawImage(Inf,25,3 * textSize); }
}
} }
setImage(province);
} 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;
}
} }

@ -1,7 +1,7 @@
/* /*
Hinweis zum Verbleib der Klasse: 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. 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. 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) 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 class Roll_Button extends Button
{ {
public Roll_Button(ButtonEvent h) { public Roll_Button(ButtonEvent h) {
super(h); super(h);
} }
/** /**
* Act - do whatever the Würfel_Button_Angriff wants to do. This method is called whenever * 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. * the 'Act' or 'Run' button gets pressed in the environment.
*/ */
public void act() public void act()
{ {
// Add your action code here. // Add your action code here.
} }
} }

@ -10,76 +10,76 @@ Diese Klasse enthält nur statische Funktionen, welche für euch als Unterstütz
*/ */
public final class Utils { public final class Utils {
/** /**
Kopiert ein boolean-Array und übergibt diese. Kopiert ein boolean-Array und übergibt diese.
@param a Das zu kopierende Array @param a Das zu kopierende Array
@return Die Kopie des Arrays @return Die Kopie des Arrays
*/ */
public static boolean[] copyArray(boolean[] a) { public static boolean[] copyArray(boolean[] a) {
boolean[] b = new boolean[a.length]; boolean[] b = new boolean[a.length];
for(int i = 0; i < a.length; i++) { for(int i = 0; i < a.length; i++) {
b[i] = a[i]; b[i] = a[i];
} }
return b; return b;
} }
/** /**
Kopiert ein int-Array und übergibt diese. Kopiert ein int-Array und übergibt diese.
@param a Das zu kopierende Array @param a Das zu kopierende Array
@return Die Kopie des Arrays @return Die Kopie des Arrays
*/ */
public static int[] copyArray(int[] a) { public static int[] copyArray(int[] a) {
int[] b = new int[a.length]; int[] b = new int[a.length];
for(int i = 0; i < a.length; i++) { for(int i = 0; i < a.length; i++) {
b[i] = a[i]; b[i] = a[i];
} }
return b; return b;
} }
/** /**
Kopiert ein String-Array und übergibt diese. Kopiert ein String-Array und übergibt diese.
@param a Das zu kopierende Array @param a Das zu kopierende Array
@return Die Kopie des Arrays @return Die Kopie des Arrays
*/ */
public static String[] copyArray(String[] a) { public static String[] copyArray(String[] a) {
String[] b = new String[a.length]; String[] b = new String[a.length];
for(int i = 0; i < a.length; i++) { for(int i = 0; i < a.length; i++) {
b[i] = a[i]; b[i] = a[i];
} }
return b; return b;
} }
/** /**
Zeichnet innerhalb eines GreenfootImage ein gefülltes Rechteck in der gegebenen Farbe und mit dem gegebenen Abstand zum Rand. 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 i Das GreenfootImage, in dem gezeichnet werden soll.
@param c Die Farbe, in der das gefüllte Rechteck gezeichnet werden soll. @param c Die Farbe, in der das gefüllte Rechteck gezeichnet werden soll.
@param b Der Abstand zum Rand der Grafik. @param b Der Abstand zum Rand der Grafik.
*/ */
public static void drawInsideRectangle(GreenfootImage i, Color c, int b) { public static void drawInsideRectangle(GreenfootImage i, Color c, int b) {
int sx = i.getWidth(); int sx = i.getWidth();
int sy = i.getHeight(); int sy = i.getHeight();
i.setColor(c); i.setColor(c);
i.fillRect(b,b, sx-(2*b),sy-(2*b)); i.fillRect(b,b, sx-(2*b),sy-(2*b));
} }
/** /**
Sortiert ein int[]-Array absteigend. Sortiert ein int[]-Array absteigend.
@param a Das zu sortierende Array @param a Das zu sortierende Array
*/ */
public static void sortDesc(int[] a) { public static void sortDesc(int[] a) {
Arrays.sort(a); Arrays.sort(a);
int[] b = copyArray(a); int[] b = copyArray(a);
for(int i = (a.length - 1); i >= 0; i--) { for(int i = (a.length - 1); i >= 0; i--) {
a[i] = b[i]; a[i] = b[i];
} }
} }
public static int StringToInt(String s) { public static int StringToInt(String s) {
int i = 0; int i = 0;
try { try {
Integer in = Integer.valueOf(s); Integer in = Integer.valueOf(s);
i = in; i = in;
} catch (java.lang.NumberFormatException e) {} } catch (java.lang.NumberFormatException e) {}
return i; return i;
} }
} }

Loading…
Cancel
Save