Merge pull request #60 from HGE-IT-Course-2016/GeneralMapErweiterung

General map erweiterung
pull/61/head
Felix Stupp 8 years ago committed by GitHub
commit 0710c51534

@ -0,0 +1,74 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class ArmyPlacer here.
*
* @author GruenerWal, MaxiJohl
* @version 1.0.0
*/
public class ArmyPlacer extends Map_World
{
public int armiesToPlace;
public int armyMinimum;
/**
* Constructor for objects of class ArmyPlacer.
*
*/
public ArmyPlacer(String[] a1, int[] a2)
{
super(a1,a2);
// Hi.
// Dies
// ist
// ein
// unnützer
// Kommentar
// um
// Zeilen
// zu
// farmen
// :)
// Mit
// freundlichen
// Grüßen
// ,
// GruenerWal
}
public int calculateArmies()
{
armiesToPlace = armyMinimum;
armiesToPlace = armiesToPlace + Math.round(players[currentPlayer].getProvinceCount() / 3);
return 0;
}
public Province[] giveContinentArray(int cID)
{
Province[] savedProvinces = new Province[provinceCount +1];
Province[] continentProvinces;
for (int i = 1; i <= provinceCount; i++)
{
if (provinces[i].getContinentID() == cID)
{
savedProvinces[i] = provinces[i];
}
}
return Utils.cutArray(savedProvinces);
}
public void placeArmies()
{
}
}

@ -1,95 +0,0 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import greenfoot.MouseInfo.*;
import javax.swing.JOptionPane;
/**
* Schubst Einheiten umher.
*
* @author MaxiJohl, GruenerWal
* @version 1.1.0
*/
public class ArmySchubser extends Map_World
{
static Province savedProvince = null;
/**
* Konstruktor für ArmySchubser.
*
* NICHT BENUTZEN!
* Sämtliche benötigten Methoden sind static!
*/
public ArmySchubser(String[] playerList, int[] colorList)
{
super(playerList,colorList);
}
/**
* 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.
*/
public void moveEntities(Province sourceProvince, Province destinationProvince)
{
String toMoveString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du verschieben?");
Integer entitiesToMove = Integer.valueOf(toMoveString);
if ( entitiesToMove != null )
{
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.
*/
public 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;
}
}
/**
* Überprüft, ob eine Provinz angeklickt wurde.
* Wenn ja, wird diese als clickedProvince eingespeichert und useProvincesToMove aufgerufen.
*
* Kommt nachher in die GeneralMap!
*/
public void act()
{
Province clickedProvince;
for ( int i = 1; i <= (provinces.length - 1); i++)
{
if (provinces[i].hasClicked() == true)
{
clickedProvince = provinces[i];
useProvincesToMove(clickedProvince);
break;
}
}
}
}

@ -0,0 +1,8 @@
public class Debug3 extends Map_World {
public Debug3() {
super(
new String[] {"Spieler Nr. 1", "Player No. 2", "Spieler Nr. 3"},
new int[] {0,1,2}
);
}
}

@ -0,0 +1,8 @@
public class Debug4 extends Map_World {
public Debug4() {
super(
new String[] {"Spieler Nr. 1", "Player No. 2", "Spieler Nr. 3","Player No. 4"},
new int[] {0,1,2,3}
);
}
}

@ -0,0 +1,8 @@
public class Debug5 extends Map_World {
public Debug5() {
super(
new String[] {"Spieler Nr. 1", "Player No. 2", "Spieler Nr. 3", "Player No. 4", "Spieler Nr. 5"},
new int[] {0,1,2,3,4}
);
}
}

@ -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,40 +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;
}
}
}

@ -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,56 +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;
}
}
}

@ -1,164 +0,0 @@
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)

@ -1,5 +1,8 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.lang.Math;
import java.util.Arrays;
import greenfoot.MouseInfo.*;
import javax.swing.JOptionPane;
/**
Oberklasse für verschiedene Maps;
@ -8,14 +11,14 @@ import java.lang.Math;
@author GruenerWal, MaxiJohl, Felix Stupp
@version 0.3.0
*/
public abstract class GeneralMap extends World
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 = 0; // Verschiebt die Provinzen nach rechts
*/
Button modus = new Button("Kampf",25,this);
private final int X_OFFSET = 160; // Verschiebt die Provinzen nach rechts
private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten
/*
@ -25,11 +28,31 @@ public abstract class GeneralMap extends World
*/
private final double SCALE_VALUE = 1;
protected enum GameStates {
KAMPF,
VERSCHIEBEN,
SETZEN
}
protected Province[] provinces;
protected int[] continentBoni;
protected Player[] players;
protected int currentPlayer = 0;
protected GameStates status = GameStates.VERSCHIEBEN;
protected int provinceCount;
protected int armyMinimum;
// Kampfsystem
Province offenderProvince;
Province defenderProvince;
String maxDiceOffender = "";
String maxDiceDefender = "";
// Einheiten verschieben
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.
@ -38,13 +61,36 @@ public abstract class GeneralMap extends World
*/
public GeneralMap(String backImage, String[] playerList, int[] colorList)
{
super(1600,900,1);
super(1600,900,1);
players = new Player[playerList.length];
addObject( modus, 1500, 808);
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)
{
if(playerCount > 6) {
playerCount = 6; // Um denselben Effekt wie beim Code zuvor zu erzeugen
}
switch (playerCount) {
case 6:
addObject(players[5],1512,350);
case 5:
addObject(players[4],1512,230);
case 4:
addObject(players[3],1512,110);
case 3:
addObject(players[2],82,350);
case 2:
addObject(players[1],82,230);
}
addObject(players[0],82,110);
}
/**
Fügt alle Provinzen aus dem Array der Welt an der entsprechden Stelle zu.
*/
@ -52,6 +98,338 @@ public abstract class GeneralMap extends World
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);
}
/*
Legt die Startprovincen der Spieler fest.
*/
int[] dataL = new int[(provinces.length-1)*2];
/*
dataL speichert folgende Daten:
0. Spieler-ID des Besitzers (Provinz 1)
1. Einheitenanzahl (Provinz 1)
2. Spieler-ID des Besitzers (Provinz 2)
3. [...]
*/
if(players.length==3) {
/*
Spieler 1 darf beginnen; Hauptstadt: 40
Spieler 2 ist als zweites dran; Hauptstadt: 20
Spieler 3 ist als drittes dran und bekommt eine Karte; Hauptstadt: 9
*/
dataL = new int[] {1,1,3,2,2,2,2,1,1,1,1,1,3,2,1,1,3,4,3,1,2,2,1,2,1,2,3,3,3,3,3,3,1,1,2,2,2,4,2,3,1,1,3,4,1,2,3,4,2,2,2,1,3,1,1,3,1,3,1,4,3,1,2,1,2,1,1,2,2,2,3,1,2,2,2,4,2,3,1,4,3,1,1,2};
provinces[1].setOwner(1);
provinces[1].setEntityCount(1);
provinces[2].setOwner(3);
provinces[2].setEntityCount(2);
provinces[3].setOwner(2);
provinces[3].setEntityCount(2);
provinces[4].setOwner(2); //Fabrik
provinces[4].setEntityCount(1);
provinces[5].setOwner(1);//Fabrik
provinces[5].setEntityCount(1);
provinces[6].setOwner(1);//Fabrik
provinces[6].setEntityCount(1);
provinces[7].setOwner(3);
provinces[7].setEntityCount(2);
provinces[8].setOwner(1);
provinces[8].setEntityCount(1);
provinces[9].setOwner(3);
provinces[9].setEntityCount(4);
provinces[10].setOwner(3);
provinces[10].setEntityCount(1);
provinces[11].setOwner(2);//Fabrik
provinces[11].setEntityCount(2);
provinces[12].setOwner(1);
provinces[12].setEntityCount(2);
provinces[13].setOwner(1);//Fabrik
provinces[13].setEntityCount(2);
provinces[14].setOwner(3);//Fabrik
provinces[14].setEntityCount(3);
provinces[15].setOwner(3);//Fabrik
provinces[15].setEntityCount(3);
provinces[16].setOwner(3);//Fabrik
provinces[16].setEntityCount(3);
provinces[17].setOwner(1);
provinces[17].setEntityCount(1);
provinces[18].setOwner(2);
provinces[18].setEntityCount(2);
provinces[19].setOwner(2);//Fabrik
provinces[19].setEntityCount(4);
provinces[20].setOwner(2);
provinces[20].setEntityCount(3);
provinces[21].setOwner(1);
provinces[21].setEntityCount(1);
provinces[22].setOwner(3);//Fabrik
provinces[22].setEntityCount(4);
provinces[23].setOwner(1);
provinces[23].setEntityCount(2);
provinces[24].setOwner(3);
provinces[24].setEntityCount(4);
provinces[25].setOwner(2);
provinces[25].setEntityCount(2);
provinces[26].setOwner(2);//Fabrik
provinces[26].setEntityCount(1);
provinces[27].setOwner(3);
provinces[27].setEntityCount(1);
provinces[28].setOwner(1);//Fabrik
provinces[28].setEntityCount(3);
provinces[29].setOwner(1);//Fabrik
provinces[29].setEntityCount(3);
provinces[30].setOwner(1);
provinces[30].setEntityCount(4);
provinces[31].setOwner(3);
provinces[31].setEntityCount(1);
provinces[32].setOwner(2);
provinces[32].setEntityCount(1);
provinces[33].setOwner(2);
provinces[33].setEntityCount(1);
provinces[34].setOwner(1);
provinces[34].setEntityCount(2);
provinces[35].setOwner(2);
provinces[35].setEntityCount(2);
provinces[36].setOwner(3);
provinces[36].setEntityCount(1);
provinces[37].setOwner(2);
provinces[37].setEntityCount(2);
provinces[38].setOwner(2);//Fabrik
provinces[38].setEntityCount(4);
provinces[39].setOwner(2);
provinces[39].setEntityCount(3);
provinces[40].setOwner(1);
provinces[40].setEntityCount(4);
provinces[41].setOwner(3);//Fabrik
provinces[41].setEntityCount(1);
provinces[42].setOwner(1);
provinces[42].setEntityCount(2);
} else if(players.length==4) {
/*
Spieler 1 darf beginnen; Hauptstadt:22
Spieler 2 ist als zweites dran; Hauptstadt:20
Spieler 3 ist als drittes dran und bekommt eine Karte; Hauptstadt:2
Spieler 4 ist als viertes dran und bekommt eine Karte; Hauptstadt:39
*/
dataL = new int[] {1,1,3,3,3,3,3,2,3,2,3,3,2,2,1,2,2,2,3,2,2,3,3,2,2,3,1,3,1,3,1,3,3,2,4,2,2,4,2,4,1,1,1,2,1,5,1,3,2,2,4,3,4,1,4,2,2,2,2,2,4,1,2,1,4,5,3,2,3,2,3,2,4,1,4,1,4,4,4,1,1,2,4,4};
provinces[1].setOwner(1);
provinces[1].setEntityCount(1);
provinces[2].setOwner(3);
provinces[2].setEntityCount(3);
provinces[3].setOwner(3);
provinces[3].setEntityCount(3);
provinces[4].setOwner(3);//Fabrik
provinces[4].setEntityCount(2);
provinces[5].setOwner(3);//Fabrik
provinces[5].setEntityCount(2);
provinces[6].setOwner(3);//Fabrik
provinces[6].setEntityCount(3);
provinces[7].setOwner(2);
provinces[7].setEntityCount(2);
provinces[8].setOwner(1);
provinces[8].setEntityCount(2);
provinces[9].setOwner(2);
provinces[9].setEntityCount(2);
provinces[10].setOwner(3);//Fabrik
provinces[10].setEntityCount(2);
provinces[11].setOwner(2);//Fabrik
provinces[11].setEntityCount(3);
provinces[12].setOwner(3);
provinces[12].setEntityCount(2);
provinces[13].setOwner(2);//Fabrik
provinces[13].setEntityCount(3);
provinces[14].setOwner(1);//Fabrik
provinces[14].setEntityCount(3);
provinces[15].setOwner(1);//Fabrik
provinces[15].setEntityCount(3);
provinces[16].setOwner(1);//Fabrik
provinces[16].setEntityCount(3);
provinces[17].setOwner(3);
provinces[17].setEntityCount(2);
provinces[18].setOwner(4);
provinces[18].setEntityCount(2);
provinces[19].setOwner(2);//Fabrik
provinces[19].setEntityCount(4);
provinces[20].setOwner(2);
provinces[20].setEntityCount(4);
provinces[21].setOwner(1);
provinces[21].setEntityCount(1);
provinces[22].setOwner(1);//Fabrik
provinces[22].setEntityCount(2);
provinces[23].setOwner(1);
provinces[23].setEntityCount(5);
provinces[24].setOwner(1);
provinces[24].setEntityCount(3);
provinces[25].setOwner(2);
provinces[25].setEntityCount(2);
provinces[26].setOwner(4);//Fabrik
provinces[26].setEntityCount(3);
provinces[27].setOwner(4);
provinces[27].setEntityCount(1);
provinces[28].setOwner(4);//Fabrik
provinces[28].setEntityCount(2);
provinces[29].setOwner(2);//Fabrik
provinces[29].setEntityCount(2);
provinces[30].setOwner(2);
provinces[30].setEntityCount(2);
provinces[31].setOwner(4);
provinces[31].setEntityCount(1);
provinces[32].setOwner(2);
provinces[32].setEntityCount(1);
provinces[33].setOwner(4);
provinces[33].setEntityCount(5);
provinces[34].setOwner(3);
provinces[34].setEntityCount(2);
provinces[35].setOwner(3);
provinces[35].setEntityCount(2);
provinces[36].setOwner(3);
provinces[36].setEntityCount(2);
provinces[37].setOwner(4);
provinces[37].setEntityCount(1);
provinces[38].setOwner(4);//Fabrik
provinces[38].setEntityCount(1);
provinces[39].setOwner(4);
provinces[39].setEntityCount(4);
provinces[40].setOwner(4);
provinces[40].setEntityCount(1);
provinces[41].setOwner(1);//Fabrik
provinces[41].setEntityCount(2);
provinces[42].setOwner(4);
provinces[42].setEntityCount(4);
} else if(players.length==5) {
/*
Spieler 1 darf beginnen; Hauptstadt:13
Spieler 2 ist als zweites dran; Hauptstadt:7
Spieler 3 ist als drittes dran und bekommt eine Karte; Hauptstadt:22
Spieler 4 ist als viertes dran und bekommt eine Karte; Hauptstadt:20
Spieler 5 ist als fünftes dran und bekommt zwei Karte; Hauptstadt:41
*/
dataL = new int[] {3,1,1,2,4,2,2,2,2,2,2,2,2,4,4,1,2,2,4,1,4,3,3,1,1,4,1,2,3,3,1,2,2,3,4,2,4,5,4,3,2,2,3,5,3,3,1,2,3,3,3,2,2,3,5,2,5,3,5,3,1,3,1,3,4,1,5,1,5,1,5,2,3,2,4,2,5,2,1,2,5,4,5,2};
provinces[1].setOwner(3);
provinces[1].setEntityCount(1);
provinces[2].setOwner(1);
provinces[2].setEntityCount(2);
provinces[3].setOwner(4);
provinces[3].setEntityCount(2);
provinces[4].setOwner(2);//Fabrik
provinces[4].setEntityCount(2);
provinces[5].setOwner(2);//Fabrik
provinces[5].setEntityCount(2);
provinces[6].setOwner(2);//Fabrik
provinces[6].setEntityCount(2);
provinces[7].setOwner(2);
provinces[7].setEntityCount(4);
provinces[8].setOwner(4);
provinces[8].setEntityCount(1);
provinces[9].setOwner(2);
provinces[9].setEntityCount(2);
provinces[10].setOwner(4);
provinces[10].setEntityCount(1);
provinces[11].setOwner(4);//Fabrik
provinces[11].setEntityCount(3);
provinces[12].setOwner(3);
provinces[12].setEntityCount(1);
provinces[13].setOwner(1);
provinces[13].setEntityCount(4);
provinces[14].setOwner(1);//Fabrik
provinces[14].setEntityCount(2);
provinces[15].setOwner(3);//Fabrik
provinces[15].setEntityCount(3);
provinces[16].setOwner(1);//Fabrik
provinces[16].setEntityCount(2);
provinces[17].setOwner(2);
provinces[17].setEntityCount(3);
provinces[18].setOwner(4);
provinces[18].setEntityCount(2);
provinces[19].setOwner(4);//Fabrik
provinces[19].setEntityCount(5);
provinces[20].setOwner(4);
provinces[20].setEntityCount(3);
provinces[21].setOwner(2);
provinces[21].setEntityCount(2);
provinces[22].setOwner(3);//Fabrik
provinces[22].setEntityCount(5);
provinces[23].setOwner(3);
provinces[23].setEntityCount(3);
provinces[24].setOwner(1);
provinces[24].setEntityCount(2);
provinces[25].setOwner(3);
provinces[25].setEntityCount(3);
provinces[26].setOwner(3);//Fabrik
provinces[26].setEntityCount(2);
provinces[27].setOwner(2);
provinces[27].setEntityCount(3);
provinces[28].setOwner(5);//Fabrik
provinces[28].setEntityCount(2);
provinces[29].setOwner(5);//Fabrik
provinces[29].setEntityCount(3);
provinces[30].setOwner(5);
provinces[30].setEntityCount(3);
provinces[31].setOwner(1);
provinces[31].setEntityCount(3);
provinces[32].setOwner(1);
provinces[32].setEntityCount(3);
provinces[33].setOwner(4);
provinces[33].setEntityCount(1);
provinces[34].setOwner(5);
provinces[34].setEntityCount(1);
provinces[35].setOwner(5);
provinces[35].setEntityCount(1);
provinces[36].setOwner(5);
provinces[36].setEntityCount(2);
provinces[37].setOwner(3);
provinces[37].setEntityCount(2);
provinces[38].setOwner(4);//Fabrik
provinces[38].setEntityCount(2);
provinces[39].setOwner(5);
provinces[39].setEntityCount(2);
provinces[40].setOwner(1);
provinces[40].setEntityCount(2);
provinces[41].setOwner(5);//Fabrik
provinces[41].setEntityCount(4);
provinces[42].setOwner(5);
provinces[42].setEntityCount(2);
}
int errors = 0;
for(int i = 1; i < provinces.length; i++) {
Province p = provinces[i];
int oI = (i-1)*2; // ownerID inside dataL
int eI = oI+1; // entitiesCountID inside dataL
// Dieser Code überprüft die Datenliste mit den Daten, die die alte Methode (mit den vielen Zeilen) bereits hinterlegt haben sollte. Nur für Debugging!
if(p.getOwner() != dataL[oI]) {
errors++;
showDialog("dataL-Index " + oI + ", got " + dataL[oI] + ", expected " + p.getOwner());
} else if(p.getEntityCount() != dataL[eI]) {
errors++;
showDialog("dataL-Index " + eI + ", got " + dataL[eI] + ", expected " + p.getEntityCount());
}
}
if(errors == 0) {
showDialog("No errors found!");
}
}
/**
Zeigt die angegebene Nachricht in einem JOptionPane Dialogfeld an.
@param msg Die anzuzeigende Nachricht
*/
private void showDialog(String msg) {
JOptionPane.showMessageDialog(null,msg);
}
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;
}
}
}
}
/**
@ -61,16 +439,16 @@ public abstract class GeneralMap extends World
{
return players.length;
}
/**
Gibt den Namen des aktuellen Spielers aus.
@return Der Name des aktuellen Spielers
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
@ -80,7 +458,7 @@ public abstract class GeneralMap extends World
{
return players[plID].getDisplayName();
}
/**
Gibt die Anzahl der Sterne des aktuellen Spielers zurück.
@return Die Anzahl der Sterne des aktuellen Spielers
@ -89,7 +467,7 @@ public abstract class GeneralMap extends World
{
return players[currentPlayer].getStars();
}
/**
Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört.
@param prID Die gefragte Provinz
@ -101,7 +479,7 @@ public abstract class GeneralMap extends World
}
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
@ -114,7 +492,7 @@ public abstract class GeneralMap extends World
}
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.
@ -131,4 +509,205 @@ public abstract class GeneralMap extends World
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;
}
}
if ( modus == b && status==GameStates.SETZEN)
{
status=GameStates.KAMPF;
modus.setText("Kampf beenden");
}
if ( modus == b && status== GameStates.KAMPF)
{
status=GameStates.VERSCHIEBEN;
modus.setText("Nächster Spieler");
}
if ( modus == b && status==GameStates.VERSCHIEBEN)
{
if( currentPlayer== players.length-1)
{
currentPlayer=0;
}
else
{
currentPlayer+=1;
}
}
}
// Kampfsystem
private void OffenderProvince()
{
for ( int i = 1; i <= (provinces.length - 1); 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 <= (provinces.length - 1); 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;
}
// 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;
}
}
}

@ -23,7 +23,8 @@ public class Map_World extends GeneralMap
public Map_World(String[] playerList, int[] colourList)
{
super("",playerList,colourList);
super("",playerList,colorList);
setBackground("Risiko Karte.png");
/*
Hier werden später sämtliche Provinzen der Standard-Map erstellt.
Dies funktioniert folgendermassen:
@ -52,7 +53,7 @@ public class Map_World extends GeneralMap
// cID 1 - Nordamerika
provinces[1] = new Province( 1 , 1 , 64 , 106 , 1 , "Alaska" , new int[] {2 , 3 , 36});
provinces[2] = new Province( 2 , 1 , 162 , 106 , 1 , "NW-Territorien" , new int[] {1 , 3 , 4 , 9});
provinces[3] = new Province( 3 , 1 , 53 , 170 , 1 , "Alberta" , new int[] {1 , 2 , 4 , 5});
provinces[3] = new Province( 3 , 1 , 153 , 170 , 1 , "Alberta" , new int[] {1 , 2 , 4 , 5});
provinces[4] = new Province( 4 , 1 , 223 , 177 , 2 , "Ontario" , new int[] {2 , 3 , 5 , 6 , 7 , 9});
provinces[5] = new Province( 5 , 1 , 160 , 236 , 2 , "Weststaaten" , new int[] {3 , 4 , 6 , 8});
provinces[6] = new Province( 6 , 1 , 232 , 273 , 2 , "Oststaaten" , new int[] {4 , 5 , 7 , 8});

@ -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.
}
}

@ -9,265 +9,265 @@ import java.awt.Color;
*/
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;
int identity;
String name;
int color;
int textsize;
@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 ()
{
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 + ".");
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;
}
}
//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;
}
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++;
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;
}
}
if(stats[2] < provZahl)
{
stats[2]=provZahl;
}
return provZahl;
}
}
return provZahl;
}
public void gotEntities(int gotEnt)
{
stats[3]+= gotEnt;
}
public void gotEntities(int gotEnt)
{
stats[3]+= gotEnt;
}
public void lostEntity()
{
stats[4]+=1;
}
public void lostEntity()
{
stats[4]+=1;
}
private void maxEntities(int entNumber)
{
if (stats[5]< entNumber)
{
stats[5]=entNumber;
}
}
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;
}
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;
}
}
return pBesitzer;
}
private void gotlostProvince()
{
if (provVgl== provZahl)
{
gotProv = false;
lostProv =false;
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;
}
}
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 getGotProvince ()
{
return gotProv;
}
public boolean getLostProvince()
{
return lostProv;
}
public boolean getLostProvince()
{
return lostProv;
}
public int[] getStatistics()
{
return stats;
}
public int setColor(int c)
{
color = c;
return color;
}
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);
}
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 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,83);
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);
}
private void redraw(GreenfootImage statistics,GreenfootImage flag, int textSize)
{
flag.scale(137,83);
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);
}
}

@ -25,7 +25,7 @@ public class Province extends Actor
private boolean clicked = false;
/**
* Überprüft, ob die Provinz angeklickt wurde.
* Überprüft, ob die Provinz angeklickt wurde.
*/
public void act()
{
@ -45,7 +45,7 @@ public class Province extends Actor
stars = st;
}
displayName = s1;
// Der Teil, der sich um die Konvertierung des int-Array in ein boolean-Array kümmert.
// 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]) {
@ -60,7 +60,7 @@ public class Province extends Actor
}
}
// Zweiter Konstruktor, um auch das boolean-Array gegebenenfalls verwenden zu könnnen.
// 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;
@ -98,7 +98,7 @@ public class Province extends Actor
return continentID;
}
// Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt.
// Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt.
public boolean isProvinceNear(int i) {
if(i >= nextProvinces.length) {
return false;
@ -124,7 +124,7 @@ public class Province extends Actor
return owner;
}
// Setzt den Owner, benötigt String
// Setzt den Owner, benötigt String
public void setOwner(int o)
{
if(o < -1) {

@ -1,20 +1,21 @@
import greenfoot.*;
import java.awt.Color;
import java.util.*;
import java.lang.Object;
/**
Diese Klasse enthält nur statische Funktionen, welche für euch als Unterstützung gedacht sind. Damit könnt ihr dann hoffentlich viele Code-Zeilen sparen. :)
Diese Klasse enthält nur statische Funktionen, welche für euch als Unterstützung gedacht sind. Damit könnt ihr dann hoffentlich viele Code-Zeilen sparen. :)
@author Zocker1999_NET
@version 15.06.2016
@author Zocker1999_NET
@version 15.06.2016
*/
public final class Utils {
/**
Kopiert ein boolean-Array und übergibt diese.
@param a Das zu kopierende Array
@return Die Kopie des Arrays
*/
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++) {
@ -22,11 +23,12 @@ public final class Utils {
}
return b;
}
/**
Kopiert ein int-Array und übergibt diese.
@param a Das zu kopierende Array
@return Die Kopie des Arrays
*/
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++) {
@ -34,11 +36,12 @@ public final class Utils {
}
return b;
}
/**
Kopiert ein String-Array und übergibt diese.
@param a Das zu kopierende Array
@return Die Kopie des Arrays
*/
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++) {
@ -46,24 +49,24 @@ public final class Utils {
}
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.
*/
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));
i.fillRect(b,b, sx-(2*b),sy-(2*b));
}
/**
Sortiert ein int[]-Array absteigend.
@param a Das zu sortierende Array
*/
Sortiert ein int[]-Array absteigend.
@param a Das zu sortierende Array
*/
public static void sortDesc(int[] a) {
Arrays.sort(a);
int[] b = copyArray(a);
@ -72,4 +75,32 @@ public final class Utils {
}
}
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 Province[] cutArray(Province[] obA) {
boolean[] l = new boolean[obA.length];
int c = 0;
for(int i = 0; i < obA.length; i++) {
if(obA[i] != null) {
l[i] = true;
c++;
}
}
int p = 0;
Province[] ret = new Province[c];
for(int i = 0; i < l.length; i++) {
if(l[i]) {
ret[p] = obA[i];
p++;
}
}
return ret;
}
}

@ -41,6 +41,17 @@ Hier werden alle Klassen mit deren öffentliche Methoden (**public** und **prote
- Arbeitet bitte, wenn möglich, mit der *Utils*-Klasse, diese kann helfen den Code übersichtlicher und kürzer zu gestalten, da häufige und allgemein umsetzbare Aufgaben über diese einheitlich abgearbeitet werden sollen. Das Debuggen wird somit auch einfacher, sowohl für mich als auch für euch selbst.
- Ihr könnt auch ab und zu in die Dokumentationen der offiziellen Java-Bibliotheken schauen, falls ihr denkt, dass es bereits eine Methode geben sollte für den Vorgang, den ihr sonst selbst programmieren müsstet.
### Color-Zuweisung
An verschiedenen Stellen (wie beispielsweise beim Erstellen eines *Player*-Objektes) benötigt man eine Zahl als Farbwert, die einem Spieler eine Farbe zuweisen können. Auf folgende Zuordnung haben wir uns geeinigt:
0. schwarz
0. blau
0. grün
0. rot
0. gelb
0. lila
---
## Klassenverzeichnis
@ -876,4 +887,4 @@ Zeichnet innerhalb eines *GreenfootImage* ein Rechteck gefüllt mit der angegebe
#### sortDesc()
Sortiert ein *int[]*-Array absteigend.
Sortiert ein *int[]*-Array absteigend.

Loading…
Cancel
Save