Merge branch 'master' into GeneralMapErweiterung

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

@ -1,7 +1,7 @@
/*
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.
Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen.
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.
Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen.
*/
import greenfoot.*;
@ -15,64 +15,40 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse
*/
public class Dice_Defender extends Dice
{
/**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
/**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
int[] diceEyesDefender = new int[2];
public void act()
{
// Add your action code here.
}
int[] diceEyesDefender = new int[2];
public void act()
{
// 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.
* @param troupNumberDefender Anzahl der Truppen auf dem ausgewählten Feld
*/
public int[] dice_defender(int troupNumberDefender)
{
if(troupNumberDefender == 1)
{
diceEyesDefender[0] = (int) (Math.random() * 6 +1);
return diceEyesDefender;
}
if(troupNumberDefender >=2 )
{
diceEyesDefender[0] = (int) (Math.random() * 6 +1);
diceEyesDefender[1] = (int) (Math.random()* 6 +1);
System.out.println(diceEyesDefender[0]);
System.out.println(diceEyesDefender[1]);
return diceEyesDefender;
}
Arrays.sort(diceEyesDefender);
return diceEyesDefender;
/**
* 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
*/
public int[] dice_defender(int troupNumberDefender)
{
if(troupNumberDefender == 1)
{
diceEyesDefender[0] = (int) (Math.random() * 6 +1);
return diceEyesDefender;
}
if(troupNumberDefender >=2 )
{
diceEyesDefender[0] = (int) (Math.random() * 6 +1);
diceEyesDefender[1] = (int) (Math.random()* 6 +1);
// System.out.println(diceEyesDefender[0]);
// System.out.println(diceEyesDefender[1]);
return diceEyesDefender;
}
Arrays.sort(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:
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.
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.
Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen.
*/
import greenfoot.*;
@ -15,96 +15,56 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse
*/
public class Dice_Offender extends Dice
{
/**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
/**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
int[] diceEyesOffender = new int[3];
public void act()
{
// Add your action code here.
}
int[] diceEyesOffender = new int[3];
public void act()
{
// 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.
* @param troupNumberOffender Anzahl der Truppen auf dem ausgewählten Feld
*/
public int[] dice_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()*6+1);
System.out.println(diceEyesOffender[0]);
return diceEyesOffender;
/**
* 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
*/
public int[] dice_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()*6+1);
// System.out.println(diceEyesOffender[0]);
return diceEyesOffender;
}
if(troupNumberOffender == 3)
{
diceEyesOffender[0] = (int) (Math.random() * 6 +1);
diceEyesOffender[1] = (int) (Math.random()* 6 +1);
System.out.println(diceEyesOffender[0]);
System.out.println(diceEyesOffender[1]);
return diceEyesOffender;
}
if(troupNumberOffender > 3)
{
diceEyesOffender[0] = (int) (Math.random() * 6 +1);
diceEyesOffender[1] = (int) (Math.random()* 6 +1);
diceEyesOffender[2] = (int) (Math.random()* 6 + 1);
System.out.println(diceEyesOffender[0]);
System.out.println(diceEyesOffender[1]);
System.out.println(diceEyesOffender[2]);
return diceEyesOffender;
}
Arrays.sort(diceEyesOffender);
return diceEyesOffender;
}
if(troupNumberOffender == 3)
{
diceEyesOffender[0] = (int) (Math.random() * 6 +1);
diceEyesOffender[1] = (int) (Math.random()* 6 +1);
// System.out.println(diceEyesOffender[0]);
// System.out.println(diceEyesOffender[1]);
return diceEyesOffender;
}
if(troupNumberOffender > 3)
{
diceEyesOffender[0] = (int) (Math.random() * 6 +1);
diceEyesOffender[1] = (int) (Math.random()* 6 +1);
diceEyesOffender[2] = (int) (Math.random()* 6 + 1);
// System.out.println(diceEyesOffender[0]);
// System.out.println(diceEyesOffender[1]);
// System.out.println(diceEyesOffender[2]);
return diceEyesOffender;
}
Arrays.sort(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
{
/*
Felder, im Moment nur Anzahl der Provinzen
Später evtl. weitere Werte wie Schwierigkeit denkbar
*/
private final int X_OFFSET = 160; // Verschiebt die Provinzen nach rechts
private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten
/*
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.
Bei diesem Beispiel wäre hier, neben dem Offset oben, der Wert 0.8 einzutragen.
*/
private final double SCALE_VALUE = 1;
protected enum GameStates {
KAMPF,
VERSCHIEBEN
}
protected Province[] provinces;
protected Player[] players;
protected int currentPlayer = 0;
protected GameStates status = GameStates.VERSCHIEBEN;
Province offenderProvince;
Province defenderProvince;
Province savedProvince = null;
/**
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 playerList Die Liste mit den Namen der Spieler
@param colorList Die Liste mit den Farben der Spieler
*/
public GeneralMap(String backImage, String[] playerList, int[] colorList)
{
super(1600,900,1);
players = new Player[playerList.length];
for (int i = 0; i < playerList.length; i++) {
players[i] = new Player(i,playerList[i],colorList[i]);
}
/*
Felder, im Moment nur Anzahl der Provinzen
Später evtl. weitere Werte wie Schwierigkeit denkbar
*/
private final int X_OFFSET = 160; // Verschiebt die Provinzen nach rechts
private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten
/*
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.
Bei diesem Beispiel wäre hier, neben dem Offset oben, der Wert 0.8 einzutragen.
*/
private final double SCALE_VALUE = 1;
protected enum GameStates {
KAMPF,
VERSCHIEBEN
}
protected Province[] provinces;
protected Player[] players;
protected int currentPlayer = 0;
protected GameStates status = GameStates.VERSCHIEBEN;
Province offenderProvince;
Province defenderProvince;
Province savedProvince = null;
/**
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 playerList Die Liste mit den Namen der Spieler
@param colorList Die Liste mit den Farben der Spieler
*/
public GeneralMap(String backImage, String[] playerList, int[] colorList)
{
super(1600,900,1);
players = new Player[playerList.length];
for (int i = 0; i < playerList.length; i++) {
players[i] = new Player(i,playerList[i],colorList[i]);
}
createPlayerObjects(playerList.length);
}
}
private void createPlayerObjects(int playerCount)
{
addObject(players[0],82,110);
if (playerCount > 1)
{
addObject(players[1],82,230);
if (playerCount > 2)
{
addObject(players[2],82,350);
if (playerCount > 3)
{
addObject(players[3],1512,110);
if (playerCount > 4)
{
addObject(players[4],1512,230);
if (playerCount > 5)
{
addObject(players[5],1512,350);
}
}
}
}
}
}
/**
Fügt alle Provinzen aus dem Array der Welt an der entsprechden Stelle zu.
*/
protected void initProvinces() {
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);
}
}
public void act() {
if(status == GameStates.KAMPF) {
if(offenderProvince == null)
{
OffenderProvince();
}
else
{
defenderProvince();
}
} else if(status == GameStates.VERSCHIEBEN) {
Province clickedProvince;
for ( int i = 1; i <= (provinces.length - 1); i++)
{
if (provinces[i].hasClicked() == true)
{
clickedProvince = provinces[i];
useProvincesToMove(clickedProvince);
break;
}
}
}
}
/**
Gibt die Anzahl der vorhandenen Spieler aus.
*/
public int getPlayerCount()
{
return players.length;
}
/**
Gibt den Namen des aktuellen Spielers aus.
@return Der Name des aktuellen Spielers
*/
public String getPlayerName()
{
return players[currentPlayer].getDisplayName();
}
/**
Gibt den Namen des Spielers aus, dem dessen ID gehört.
@param plID Die ID des zu findenden Spielers
@return Der Name des Spielers
*/
public String getPlayerName(int plID)
{
return players[plID].getDisplayName();
}
/**
Gibt die Anzahl der Sterne des aktuellen Spielers zurück.
@return Die Anzahl der Sterne des aktuellen Spielers
*/
public int getPlayerStars()
{
return players[currentPlayer].getStars();
}
/**
Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört.
@param prID Die gefragte Provinz
*/
public int getProvinceOwner(int prID)
{
if(prID < 1 || prID > provinces.length) {
return -1;
}
return provinces[prID].getOwner();
}
/**
Gibt eine Liste mit allen Provinzen und deren Besitzern zurück.
@return Array mit der Provinz-ID als Index und dem Besitzer als Wert
*/
public int[] getProvinceOwners()
{
int[] prOwners = new int[provinces.length];
for (int i = 1; i > provinces.length; i++) {
prOwners[i] = provinces[i].getOwner();
}
return prOwners;
}
/**
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.
@return Die Anzahl der Einheiten, die dem Spieler gehören.
*/
public int getProvinceEntityCount(int playerID)
{
int c = 0;
for (int i = 1; i > provinces.length; i++) {
if(provinces[i].getOwner() == playerID) {
c = c + provinces[i].getEntityCount();
}
}
return c;
}
public void buttonClicked(Button b) {
if(status == GameStates.KAMPF) {
status = GameStates.VERSCHIEBEN;
} else if(status == GameStates.VERSCHIEBEN) {
status = GameStates.KAMPF;
currentPlayer++;
if(currentPlayer >= players.length) {
currentPlayer = 0;
}
}
}
// Kampfsystem
private void OffenderProvince()
{
for ( int i = 1; i <= (provinces.length - 1); i++)
{
if (provinces[i].hasClicked() == true)
{
offenderProvince = provinces[i];
System.out.println("1");
}
}
}
private void defenderProvince()
{
{
for (int i = 1; i <= (provinces.length - 1); i++)
{
if (provinces[i].hasClicked() == true)//&& defenderProvince != offenderProvince)
{
defenderProvince = provinces[i];
System.out.println("2");
chooser();
break;
}
}
}
}
private void chooser()
{
Dice_Offender diceOffender = new Dice_Offender();
int[] maxDiceOffender = diceOffender.max_offender(offenderProvince.getEntityCount());
Dice_Defender diceDefender = new Dice_Defender();
int[] maxDiceDefender = diceDefender.max_defender(defenderProvince.getEntityCount());
Arrays.sort(maxDiceOffender);
Arrays.sort(maxDiceDefender);
decider(maxDiceOffender, maxDiceDefender);
}
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);
}
if (maxOffender<maxDefender && offenderProvince.getEntityCount()>1)
{
int EntitiesOffender = offenderProvince.getEntityCount();
int EntitiesDefender = defenderProvince.getEntityCount();
offenderProvince.setEntityCount(EntitiesOffender - 1);
}
if (maxOffender>maxDefender && defenderProvince.getEntityCount()==1)
{
defenderProvince.setOwner(offenderProvince.getOwner());
defenderProvince.setEntityCount(0);
}
if (maxOffender>maxDefender && offenderProvince.getEntityCount()==1)
{
offenderProvince.setOwner(defenderProvince.getOwner());
offenderProvince.setEntityCount(0);
}
System.out.println("3");
offenderProvince = null;
defenderProvince = null;
}
// Einheiten verschieben
/**
* 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.
*/
private void moveEntities(Province sourceProvince, Province destinationProvince)
{
String toMoveString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du verschieben?");
int entitiesToMove = Utils.StringToInt(toMoveString);
if (entitiesToMove == 0) {
JOptionPane.showMessageDialog(null,"Bitte eine Zahl eingeben, Kommandant " + getPlayerName() + ".");
return;
}
if ( (sourceProvince.getEntityCount() - entitiesToMove) > 0)
{
sourceProvince.removeFromEntities(entitiesToMove);
destinationProvince.addToEntities(entitiesToMove);
JOptionPane.showMessageDialog(null,"Einheiten erfolgreich verschoben, Kommandant " + getPlayerName() + ".");
}
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.");
}
}
/**
* 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 dies der Fall, werden beide Provinzen an moveEntities übergeben.
*/
private void useProvincesToMove(Province givenProvince)
{
if (savedProvince == null)
{
savedProvince = givenProvince;
}
else if ((savedProvince != null) && (givenProvince != savedProvince) && (savedProvince.getOwner() == givenProvince.getOwner()) && (savedProvince.getOwner() == currentPlayer) )
{
if (givenProvince.isProvinceNear(savedProvince.getID()) == true)
{
moveEntities(savedProvince,givenProvince);
}
savedProvince = null;
}
}
addObject(players[0],82,110);
if (playerCount > 1)
{
addObject(players[1],82,230);
if (playerCount > 2)
{
addObject(players[2],82,350);
if (playerCount > 3)
{
addObject(players[3],1512,110);
if (playerCount > 4)
{
addObject(players[4],1512,230);
if (playerCount > 5)
{
addObject(players[5],1512,350);
}
}
}
}
}
}
/**
Fügt alle Provinzen aus dem Array der Welt an der entsprechden Stelle zu.
*/
protected void initProvinces() {
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);
}
}
public void act() {
if(status == GameStates.KAMPF) {
if(offenderProvince == null)
{
OffenderProvince();
}
else
{
defenderProvince();
}
} else if(status == GameStates.VERSCHIEBEN) {
Province clickedProvince;
for ( int i = 1; i <= (provinces.length - 1); i++)
{
if (provinces[i].hasClicked() == true)
{
clickedProvince = provinces[i];
useProvincesToMove(clickedProvince);
break;
}
}
}
}
/**
Gibt die Anzahl der vorhandenen Spieler aus.
*/
public int getPlayerCount()
{
return players.length;
}
/**
Gibt den Namen des aktuellen Spielers aus.
@return Der Name des aktuellen Spielers
*/
public String getPlayerName()
{
return players[currentPlayer].getDisplayName();
}
/**
Gibt den Namen des Spielers aus, dem dessen ID gehört.
@param plID Die ID des zu findenden Spielers
@return Der Name des Spielers
*/
public String getPlayerName(int plID)
{
return players[plID].getDisplayName();
}
/**
Gibt die Anzahl der Sterne des aktuellen Spielers zurück.
@return Die Anzahl der Sterne des aktuellen Spielers
*/
public int getPlayerStars()
{
return players[currentPlayer].getStars();
}
/**
Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört.
@param prID Die gefragte Provinz
*/
public int getProvinceOwner(int prID)
{
if(prID < 1 || prID > provinces.length) {
return -1;
}
return provinces[prID].getOwner();
}
/**
Gibt eine Liste mit allen Provinzen und deren Besitzern zurück.
@return Array mit der Provinz-ID als Index und dem Besitzer als Wert
*/
public int[] getProvinceOwners()
{
int[] prOwners = new int[provinces.length];
for (int i = 1; i > provinces.length; i++) {
prOwners[i] = provinces[i].getOwner();
}
return prOwners;
}
/**
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.
@return Die Anzahl der Einheiten, die dem Spieler gehören.
*/
public int getProvinceEntityCount(int playerID)
{
int c = 0;
for (int i = 1; i > provinces.length; i++) {
if(provinces[i].getOwner() == playerID) {
c = c + provinces[i].getEntityCount();
}
}
return c;
}
public void buttonClicked(Button b) {
if(status == GameStates.KAMPF) {
status = GameStates.VERSCHIEBEN;
} else if(status == GameStates.VERSCHIEBEN) {
status = GameStates.KAMPF;
currentPlayer++;
if(currentPlayer >= players.length) {
currentPlayer = 0;
}
}
}
// Kampfsystem
private void OffenderProvince()
{
for ( int i = 1; i <= (provinces.length - 1); i++)
{
if (provinces[i].hasClicked() == true)
{
offenderProvince = provinces[i];
System.out.println("1");
}
}
}
private void defenderProvince()
{
{
for (int i = 1; i <= (provinces.length - 1); i++)
{
if (provinces[i].hasClicked() == true)//&& defenderProvince != offenderProvince)
{
defenderProvince = provinces[i];
System.out.println("2");
chooser();
break;
}
}
}
}
private void chooser()
{
Dice_Offender diceOffender = new Dice_Offender();
int[] maxDiceOffender = diceOffender.max_offender(offenderProvince.getEntityCount());
Dice_Defender diceDefender = new Dice_Defender();
int[] maxDiceDefender = diceDefender.max_defender(defenderProvince.getEntityCount());
Arrays.sort(maxDiceOffender);
Arrays.sort(maxDiceDefender);
decider(maxDiceOffender, maxDiceDefender);
}
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);
}
if (maxOffender<maxDefender && offenderProvince.getEntityCount()>1)
{
int EntitiesOffender = offenderProvince.getEntityCount();
int EntitiesDefender = defenderProvince.getEntityCount();
offenderProvince.setEntityCount(EntitiesOffender - 1);
}
if (maxOffender>maxDefender && defenderProvince.getEntityCount()==1)
{
defenderProvince.setOwner(offenderProvince.getOwner());
defenderProvince.setEntityCount(0);
}
if (maxOffender>maxDefender && offenderProvince.getEntityCount()==1)
{
offenderProvince.setOwner(defenderProvince.getOwner());
offenderProvince.setEntityCount(0);
}
System.out.println("3");
offenderProvince = null;
defenderProvince = null;
}
// Einheiten verschieben
/**
* 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.
*/
private void moveEntities(Province sourceProvince, Province destinationProvince)
{
String toMoveString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du verschieben?");
int entitiesToMove = Utils.StringToInt(toMoveString);
if (entitiesToMove == 0) {
JOptionPane.showMessageDialog(null,"Bitte eine Zahl eingeben, Kommandant " + getPlayerName() + ".");
return;
}
if ( (sourceProvince.getEntityCount() - entitiesToMove) > 0)
{
sourceProvince.removeFromEntities(entitiesToMove);
destinationProvince.addToEntities(entitiesToMove);
JOptionPane.showMessageDialog(null,"Einheiten erfolgreich verschoben, Kommandant " + getPlayerName() + ".");
}
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.");
}
}
/**
* 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 dies der Fall, werden beide Provinzen an moveEntities übergeben.
*/
private void useProvincesToMove(Province givenProvince)
{
if (savedProvince == null)
{
savedProvince = givenProvince;
}
else if ((savedProvince != null) && (givenProvince != savedProvince) && (savedProvince.getOwner() == givenProvince.getOwner()) && (savedProvince.getOwner() == currentPlayer) )
{
if (givenProvince.isProvinceNear(savedProvince.getID()) == true)
{
moveEntities(savedProvince,givenProvince);
}
savedProvince = null;
}
}
}

@ -1,7 +1,7 @@
/*
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.
Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen.
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.
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)
@ -14,16 +14,16 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
*/
public class Menue_Button extends Button
{
public Menue_Button(ButtonEvent h) {
super(h);
}
/**
* Act - do whatever the Menue_Button wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
setLocation(100,38);// Add your action code here.
}
public Menue_Button(ButtonEvent h) {
super(h);
}
/**
* Act - do whatever the Menue_Button wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
setLocation(100,38);// Add your action code here.
}
}

@ -1,4 +1,5 @@
import greenfoot.*;
import java.awt.Color;
/**
* Write a description of class Player here.
@ -8,193 +9,265 @@ import greenfoot.*;
*/
public class Player extends Actor
{
@Override public GeneralMap getWorld(){
return (GeneralMap) super.getWorld();
}
int stars=0;
int add=0;
int id=0;
int provZahl=0;
int provVgl=0;
int [] stats = new int [6];
boolean [] pBesitzer = new boolean [42];
boolean gotProv = false;
boolean lostProv = false;
private String n;
private int c;
//definiert die ID und Namens Variable
public Player( int identity,String name, int color)
{
n = name;
id = identity;
c = color;
}
//gibt die Spieler ID zurück
public int getID()
{
return id;
}
// gibt den Spielernamen zurück
public String getDisplayName ()
{
return n;
}
//gibt die Sternenanzahl zurück
public int getStars ()
{
return stars;
}
// erhöht die Sternenzahl um eine random ausgewählte Anzahl von 1-3
public void addToStars ()
{
int rand;
int pre;
rand = (int)(1+6*Math.random());
if (rand == 1 || rand == 2|| rand == 3)
{
add = 1;
}
if (rand == 4|| rand == 5)
{
add = 2;
}
if (rand == 6)
{
add = 3;
}
if (gotProv== true)
{
pre = stars;
stars+=add;
System.out.println("Deine vorherige Sternenanzahl betrug " + pre + ".");
System.out.println("Du hast " + add + " Sterne erhalten.");
System.out.println("Deine aktuelle Sternenanzahl beträgt " + stars + ".");
}
}
//eine Methode um addToStars zu testen
public void add ()
{
addToStars();
}
//eine für das Testen gedachte Methode, die die Anzahl der Sterne auf ein gewünschtes Maß setzt
public int setStars (int set)
{
stars = set;
return stars;
}
//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)
{
int s;
s = stars - sub;
if (s>=0)
{
stars = s;
}
else
{
System.out.println ("Du hast nur " + stars + " Sterne, du kannst also nicht " + sub + " Sterne abziehen");
}
return stars;
}
public int getProvinceCount ()
{
GeneralMap w= getWorld();
int[] provinces = w.getProvinceOwners();
for (int x=0; x<=42; x++ )
{
if ( provinces [x] ==id)
{
provZahl++;
}
}
if(stats[2] < provZahl)
{
stats[2]=provZahl;
}
return provZahl;
}
public void gotEntities(int gotEnt)
{
stats[3]+= gotEnt;
}
public void lostEntity()
{
stats[4]+=1;
}
private void maxEntities(int entNumber)
{
if (stats[5]< entNumber)
{
stats[5]=entNumber;
}
}
public boolean[] getMyProvinces()
{
GeneralMap w= getWorld();
int[] provinces = w.getProvinceOwners();
for (int x=0; x<=42; x++)
{
if (provinces[x]== id)
{
pBesitzer[x]=true;
}
else
{
pBesitzer[x]=false;
}
}
return pBesitzer;
}
private void gotlostProvince()
{
if (provVgl== provZahl)
{
gotProv = false;
lostProv =false;
}
if(provVgl< provZahl)
{
gotProv = true;
lostProv = false;
stats[0]+=1;
}
if (provVgl > provZahl)
{
gotProv = false;
lostProv = true;
stats[1]+=1;
}
provVgl = provZahl;
}
public boolean getGotProvince ()
{
return gotProv;
}
public boolean getLostProvince()
{
return lostProv;
}
public int[] getStatistics()
{
return stats;
}
private void redrawPlayer()
{
//Platzhalter
int x=0;
}
@Override public GeneralMap getWorld(){
return (GeneralMap) super.getWorld();
}
int stars=0;
int add=0;
int id=0;
int provZahl=0;
int provVgl=0;
int [] stats = new int [6];
boolean [] pBesitzer = new boolean [42];
boolean gotProv = false;
boolean lostProv = false;
int identity;
String name;
int color;
int textsize;
private String n;
private int c;
//definiert die ID und Namens Variable
public Player( int identity,String name, int color)
{
n = name;
id = identity;
c = color;
}
//gibt die Spieler ID zurück
public int getID()
{
return id;
}
// gibt den Spielernamen zurück
public String getDisplayName ()
{
return n;
}
//gibt die Sternenanzahl zurück
public int getStars ()
{
return stars;
}
// erhöht die Sternenzahl um eine random ausgewählte Anzahl von 1-3
public void addToStars ()
{
int rand;
int pre;
rand = (int)(1+6*Math.random());
if (rand == 1 || rand == 2|| rand == 3)
{
add = 1;
}
if (rand == 4|| rand == 5)
{
add = 2;
}
if (rand == 6)
{
add = 3;
}
if (gotProv== true)
{
pre = stars;
stars+=add;
System.out.println("Deine vorherige Sternenanzahl betrug " + pre + ".");
System.out.println("Du hast " + add + " Sterne erhalten.");
System.out.println("Deine aktuelle Sternenanzahl beträgt " + stars + ".");
}
}
//eine Methode um addToStars zu testen
public void add ()
{
addToStars();
}
//eine für das Testen gedachte Methode, die die Anzahl der Sterne auf ein gewünschtes Maß setzt
public int setStars (int set)
{
stars = set;
return stars;
}
//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)
{
int s;
s = stars - sub;
if (s>=0)
{
stars = s;
}
else
{
System.out.println ("Du hast nur " + stars + " Sterne, du kannst also nicht " + sub + " Sterne abziehen");
}
return stars;
}
public int getProvinceCount ()
{
GeneralMap w= getWorld();
int[] provinces = w.getProvinceOwners();
for (int x=0; x<=42; x++ )
{
if ( provinces [x] ==id)
{
provZahl++;
}
}
if(stats[2] < provZahl)
{
stats[2]=provZahl;
}
return provZahl;
}
public void gotEntities(int gotEnt)
{
stats[3]+= gotEnt;
}
public void lostEntity()
{
stats[4]+=1;
}
private void maxEntities(int entNumber)
{
if (stats[5]< entNumber)
{
stats[5]=entNumber;
}
}
public boolean[] getMyProvinces()
{
GeneralMap w= getWorld();
int[] provinces = w.getProvinceOwners();
for (int x=0; x<=42; x++)
{
if (provinces[x]== id)
{
pBesitzer[x]=true;
}
else
{
pBesitzer[x]=false;
}
}
return pBesitzer;
}
private void gotlostProvince()
{
if (provVgl== provZahl)
{
gotProv = false;
lostProv =false;
}
if(provVgl< provZahl)
{
gotProv = true;
lostProv = false;
stats[0]+=1;
}
if (provVgl > provZahl)
{
gotProv = false;
lostProv = true;
stats[1]+=1;
}
provVgl = provZahl;
}
public boolean getGotProvince ()
{
return gotProv;
}
public boolean getLostProvince()
{
return lostProv;
}
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
{
@Override public GeneralMap 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;
}
}
@Override public GeneralMap getWorld() {
return (GeneralMap) super.getWorld();
}
// Haupt-Konstruktor
public Province(int pID, int cID, int x, int y, int st, String s1, int[] ia1)
{
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;
}
}
}
private int stars = 1;
private int provinceID;
private String displayName;
private int owner = 0;
private boolean[] nextProvinces;
private int continentID;
private int xPos;
private int yPos;
private int eCount;
// Zweiter Konstruktor, um auch das boolean-Array gegebenenfalls verwenden zu könnnen.
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);
}
private boolean clicked = false;
// Liefert die X-Position als Integer
public int getXPos()
{
return xPos;
}
/**
* Überprüft, ob die Provinz angeklickt wurde.
*/
public void act()
{
if(Greenfoot.mouseClicked(this)) {
clicked = true;
}
}
// Liefert die Y-Position als Integer
public int getYPos()
{
return yPos;
}
// Haupt-Konstruktor
public Province(int pID, int cID, int x, int y, int st, String s1, int[] ia1)
{
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
public int getID()
{
return provinceID;
}
// Zweiter Konstruktor, um auch das boolean-Array gegebenenfalls verwenden zu könnnen.
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 Kontinent-ID als Integer
public int getContinentID()
{
return continentID;
}
// Liefert die X-Position als Integer
public int getXPos()
{
return xPos;
}
// Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt.
public boolean isProvinceNear(int i) {
if(i >= nextProvinces.length) {
return false;
}
return nextProvinces[i];
}
// Liefert die Y-Position als Integer
public int getYPos()
{
return yPos;
}
// Liefert den Anzeigenamen als String
public String getDisplayName()
{
return displayName;
}
// Liefert die Provinz-ID als Integer
public int getID()
{
return provinceID;
}
// Liefert die Sterne als Integer
public int getStars()
{
return stars;
}
// Liefert die Kontinent-ID als Integer
public int getContinentID()
{
return continentID;
}
// Liefert den Owner als String
public int getOwner()
{
return owner;
}
// Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt.
public boolean isProvinceNear(int i) {
if(i >= nextProvinces.length) {
return false;
}
return nextProvinces[i];
}
// Setzt den Owner, benötigt String
public void setOwner(int o)
{
if(o < -1) {
o = -1;
}
owner = o;
}
// Liefert den Anzeigenamen als String
public String getDisplayName()
{
return displayName;
}
public int getEntityCount() {
return eCount;
}
// Liefert die Sterne als Integer
public int getStars()
{
return stars;
}
private void checkEntityCount() {
if(eCount < 0) {
eCount = 0;
}
}
// Liefert den Owner als String
public int getOwner()
{
return owner;
}
public int addToEntities(int a) {
eCount = eCount + a;
checkEntityCount();
redrawProvince();
return eCount;
}
// Setzt den Owner, benötigt String
public void setOwner(int o)
{
if(o < -1) {
o = -1;
}
owner = o;
}
public int removeFromEntities(int a) {
eCount = eCount - a;
checkEntityCount();
redrawProvince();
return eCount;
}
public int getEntityCount() {
return eCount;
}
public int setEntityCount(int a) {
eCount = a;
checkEntityCount();
redrawProvince();
return eCount;
}
private void checkEntityCount() {
if(eCount < 0) {
eCount = 0;
}
}
public void redrawProvince()
{
int textSize;
textSize = 20;
GreenfootImage province = new GreenfootImage(100,100);
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 int addToEntities(int a) {
eCount = eCount + a;
checkEntityCount();
redrawProvince();
return eCount;
}
public void oDecide(GreenfootImage province,int textSize)
{
String ownerString;
switch(owner)
{
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 removeFromEntities(int a) {
eCount = eCount - a;
checkEntityCount();
redrawProvince();
return eCount;
}
}
}
public int setEntityCount(int a) {
eCount = a;
checkEntityCount();
redrawProvince();
return eCount;
}
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 == 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 void redrawProvince()
{
int textSize;
textSize = 20;
GreenfootImage province = new GreenfootImage(100,100);
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)
{
String ownerString;
if(owner == 0)
{
ownerString = "schwarz";
eCalculate(province,ownerString,textSize);
}
else
{
switch(owner)
{
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);
break;
}
}
}
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:
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.
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.
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)
@ -14,16 +14,16 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
*/
public class Roll_Button extends Button
{
public Roll_Button(ButtonEvent h) {
super(h);
}
/**
* 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.
*/
public void act()
{
// Add your action code here.
}
public Roll_Button(ButtonEvent h) {
super(h);
}
/**
* 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.
*/
public void act()
{
// 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 {
/**
Kopiert ein boolean-Array und übergibt diese.
@param a Das zu kopierende Array
@return Die Kopie des Arrays
*/
public static boolean[] copyArray(boolean[] a) {
boolean[] b = new boolean[a.length];
for(int i = 0; i < a.length; i++) {
b[i] = a[i];
}
return b;
}
/**
Kopiert ein boolean-Array und übergibt diese.
@param a Das zu kopierende Array
@return Die Kopie des Arrays
*/
public static boolean[] copyArray(boolean[] a) {
boolean[] b = new boolean[a.length];
for(int i = 0; i < a.length; i++) {
b[i] = a[i];
}
return b;
}
/**
Kopiert ein int-Array und übergibt diese.
@param a Das zu kopierende Array
@return Die Kopie des Arrays
*/
public static int[] copyArray(int[] a) {
int[] b = new int[a.length];
for(int i = 0; i < a.length; i++) {
b[i] = a[i];
}
return b;
}
/**
Kopiert ein int-Array und übergibt diese.
@param a Das zu kopierende Array
@return Die Kopie des Arrays
*/
public static int[] copyArray(int[] a) {
int[] b = new int[a.length];
for(int i = 0; i < a.length; i++) {
b[i] = a[i];
}
return b;
}
/**
Kopiert ein String-Array und übergibt diese.
@param a Das zu kopierende Array
@return Die Kopie des Arrays
*/
public static String[] copyArray(String[] a) {
String[] b = new String[a.length];
for(int i = 0; i < a.length; i++) {
b[i] = a[i];
}
return b;
}
/**
Kopiert ein String-Array und übergibt diese.
@param a Das zu kopierende Array
@return Die Kopie des Arrays
*/
public static String[] copyArray(String[] a) {
String[] b = new String[a.length];
for(int i = 0; i < a.length; i++) {
b[i] = a[i];
}
return b;
}
/**
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 c Die Farbe, in der das gefüllte Rechteck gezeichnet werden soll.
@param b Der Abstand zum Rand der Grafik.
*/
public static void drawInsideRectangle(GreenfootImage i, Color c, int b) {
int sx = i.getWidth();
int sy = i.getHeight();
i.setColor(c);
i.fillRect(b,b, sx-(2*b),sy-(2*b));
}
/**
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 c Die Farbe, in der das gefüllte Rechteck gezeichnet werden soll.
@param b Der Abstand zum Rand der Grafik.
*/
public static void drawInsideRectangle(GreenfootImage i, Color c, int b) {
int sx = i.getWidth();
int sy = i.getHeight();
i.setColor(c);
i.fillRect(b,b, sx-(2*b),sy-(2*b));
}
/**
Sortiert ein int[]-Array absteigend.
@param a Das zu sortierende Array
*/
public static void sortDesc(int[] a) {
Arrays.sort(a);
int[] b = copyArray(a);
for(int i = (a.length - 1); i >= 0; i--) {
a[i] = b[i];
}
}
/**
Sortiert ein int[]-Array absteigend.
@param a Das zu sortierende Array
*/
public static void sortDesc(int[] a) {
Arrays.sort(a);
int[] b = copyArray(a);
for(int i = (a.length - 1); i >= 0; i--) {
a[i] = b[i];
}
}
public static int StringToInt(String s) {
int i = 0;
try {
Integer in = Integer.valueOf(s);
i = in;
} catch (java.lang.NumberFormatException e) {}
return i;
}
public static int StringToInt(String s) {
int i = 0;
try {
Integer in = Integer.valueOf(s);
i = in;
} catch (java.lang.NumberFormatException e) {}
return i;
}
}

Loading…
Cancel
Save