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

General map erweiterung
master
Felix Stupp 10 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: Hinweis zum Verbleib der Klasse:
Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden.
Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen.
*/ */
import greenfoot.*; import greenfoot.*;
@ -15,40 +15,40 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse
*/ */
public class Dice_Defender extends Dice public class Dice_Defender extends Dice
{ {
/** /**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever * Act - do whatever the Dice_Offender wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment. * the 'Act' or 'Run' button gets pressed in the environment.
*/ */
int[] diceEyesDefender = new int[2]; int[] diceEyesDefender = new int[2];
public void act() public void act()
{ {
// Add your action code here. // Add your action code here.
} }
/** /**
* Die Methode für das Würfeln mit bis zu drei Würfeln des Angreifers, es wird ein Array mit den drei Zahlen zurückgegeben, höchster Wert befindet sich immer an dritter Stelle. * Die Methode für das Würfeln mit bis zu drei Würfeln des Angreifers, es wird ein Array mit den drei Zahlen zurückgegeben, höchster Wert befindet sich immer an dritter Stelle.
* @param troupNumberDefender Anzahl der Truppen auf dem ausgewählten Feld * @param troupNumberDefender Anzahl der Truppen auf dem ausgewählten Feld
*/ */
public int[] dice_defender(int troupNumberDefender) public int[] dice_defender(int troupNumberDefender)
{ {
if(troupNumberDefender == 1) if(troupNumberDefender == 1)
{ {
diceEyesDefender[0] = (int) (Math.random() * 6 +1); diceEyesDefender[0] = (int) (Math.random() * 6 +1);
return diceEyesDefender; return diceEyesDefender;
} }
if(troupNumberDefender >=2 ) if(troupNumberDefender >=2 )
{ {
diceEyesDefender[0] = (int) (Math.random() * 6 +1); diceEyesDefender[0] = (int) (Math.random() * 6 +1);
diceEyesDefender[1] = (int) (Math.random()* 6 +1); diceEyesDefender[1] = (int) (Math.random()* 6 +1);
// System.out.println(diceEyesDefender[0]); // System.out.println(diceEyesDefender[0]);
// System.out.println(diceEyesDefender[1]); // System.out.println(diceEyesDefender[1]);
return diceEyesDefender; return diceEyesDefender;
} }
Arrays.sort(diceEyesDefender); Arrays.sort(diceEyesDefender);
return diceEyesDefender; return diceEyesDefender;
} }
} }

@ -1,7 +1,7 @@
/* /*
Hinweis zum Verbleib der Klasse: Hinweis zum Verbleib der Klasse:
Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden.
Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen.
*/ */
import greenfoot.*; import greenfoot.*;
@ -15,56 +15,56 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse
*/ */
public class Dice_Offender extends Dice public class Dice_Offender extends Dice
{ {
/** /**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever * Act - do whatever the Dice_Offender wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment. * the 'Act' or 'Run' button gets pressed in the environment.
*/ */
int[] diceEyesOffender = new int[3]; int[] diceEyesOffender = new int[3];
public void act() public void act()
{ {
// Add your action code here. // Add your action code here.
} }
/** /**
* Die Methode für das Würfeln mit bis zu drei Würfeln des Angreifers, es wird ein Array mit den drei Zahlen zurückgegeben, höchster Wert befindet sich immer an dritter Stelle. * Die Methode für das Würfeln mit bis zu drei Würfeln des Angreifers, es wird ein Array mit den drei Zahlen zurückgegeben, höchster Wert befindet sich immer an dritter Stelle.
* @param troupNumberOffender Anzahl der Truppen auf dem ausgewählten Feld * @param troupNumberOffender Anzahl der Truppen auf dem ausgewählten Feld
*/ */
public int[] dice_offender(int troupNumberOffender) public int[] dice_offender(int troupNumberOffender)
{ {
if(troupNumberOffender == 1) if(troupNumberOffender == 1)
{ {
System.out.println("Mit einer verbleibenden Truppe auff dem Feld kann man nicht angreifen!"); System.out.println("Mit einer verbleibenden Truppe auff dem Feld kann man nicht angreifen!");
} }
if(troupNumberOffender == 2) if(troupNumberOffender == 2)
{ {
diceEyesOffender[0] = (int) (Math.random()*6+1); diceEyesOffender[0] = (int) (Math.random()*6+1);
// System.out.println(diceEyesOffender[0]); // System.out.println(diceEyesOffender[0]);
return diceEyesOffender; return diceEyesOffender;
} }
if(troupNumberOffender == 3) if(troupNumberOffender == 3)
{ {
diceEyesOffender[0] = (int) (Math.random() * 6 +1); diceEyesOffender[0] = (int) (Math.random() * 6 +1);
diceEyesOffender[1] = (int) (Math.random()* 6 +1); diceEyesOffender[1] = (int) (Math.random()* 6 +1);
// System.out.println(diceEyesOffender[0]); // System.out.println(diceEyesOffender[0]);
// System.out.println(diceEyesOffender[1]); // System.out.println(diceEyesOffender[1]);
return diceEyesOffender; return diceEyesOffender;
} }
if(troupNumberOffender > 3) if(troupNumberOffender > 3)
{ {
diceEyesOffender[0] = (int) (Math.random() * 6 +1); diceEyesOffender[0] = (int) (Math.random() * 6 +1);
diceEyesOffender[1] = (int) (Math.random()* 6 +1); diceEyesOffender[1] = (int) (Math.random()* 6 +1);
diceEyesOffender[2] = (int) (Math.random()* 6 + 1); diceEyesOffender[2] = (int) (Math.random()* 6 + 1);
// System.out.println(diceEyesOffender[0]); // System.out.println(diceEyesOffender[0]);
// System.out.println(diceEyesOffender[1]); // System.out.println(diceEyesOffender[1]);
// System.out.println(diceEyesOffender[2]); // System.out.println(diceEyesOffender[2]);
return diceEyesOffender; return diceEyesOffender;
} }
Arrays.sort(diceEyesOffender); Arrays.sort(diceEyesOffender);
return diceEyesOffender; return diceEyesOffender;
} }
} }

@ -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 greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.lang.Math; import java.lang.Math;
import java.util.Arrays;
import greenfoot.MouseInfo.*;
import javax.swing.JOptionPane;
/** /**
Oberklasse für verschiedene Maps; Oberklasse für verschiedene Maps;
@ -8,14 +11,14 @@ import java.lang.Math;
@author GruenerWal, MaxiJohl, Felix Stupp @author GruenerWal, MaxiJohl, Felix Stupp
@version 0.3.0 @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 Felder, im Moment nur Anzahl der Provinzen
Später evtl. weitere Werte wie Schwierigkeit denkbar Später evtl. weitere Werte wie Schwierigkeit denkbar
*/ */
Button modus = new Button("Kampf",25,this);
private final int X_OFFSET = 0; // Verschiebt die Provinzen nach rechts private final int X_OFFSET = 160; // Verschiebt die Provinzen nach rechts
private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten
/* /*
@ -25,11 +28,31 @@ public abstract class GeneralMap extends World
*/ */
private final double SCALE_VALUE = 1; private final double SCALE_VALUE = 1;
protected enum GameStates {
KAMPF,
VERSCHIEBEN,
SETZEN
}
protected Province[] provinces; protected Province[] provinces;
protected int[] continentBoni;
protected Player[] players; protected Player[] players;
protected int currentPlayer = 0; 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. Erstellt eine GeneralMap mit allen Eigenschaften und initialisiert die Arrays für Provinzen und Spieler.
@param backImage Das Hintergrundbild, welches von dieser Klasse geladen und dargestellt wird. @param backImage Das Hintergrundbild, welches von dieser Klasse geladen und dargestellt wird.
@ -38,13 +61,36 @@ public abstract class GeneralMap extends World
*/ */
public GeneralMap(String backImage, String[] playerList, int[] colorList) public GeneralMap(String backImage, String[] playerList, int[] colorList)
{ {
super(1600,900,1); super(1600,900,1);
players = new Player[playerList.length]; players = new Player[playerList.length];
addObject( modus, 1500, 808);
for (int i = 0; i < playerList.length; i++) { for (int i = 0; i < playerList.length; i++) {
players[i] = new Player(i,playerList[i],colorList[i]); players[i] = new Player(i,playerList[i],colorList[i]);
} }
createPlayerObjects(playerList.length);
} }
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. 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++) { for(int i = 1; i < provinces.length; i++) {
addObject(provinces[i],((int) Math.floor(provinces[i].getXPos() * SCALE_VALUE)) + X_OFFSET,((int) Math.floor(provinces[i].getYPos() * SCALE_VALUE)) + Y_OFFSET); addObject(provinces[i],((int) Math.floor(provinces[i].getXPos() * SCALE_VALUE)) + X_OFFSET,((int) Math.floor(provinces[i].getYPos() * SCALE_VALUE)) + Y_OFFSET);
} }
/*
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; return players.length;
} }
/** /**
Gibt den Namen des aktuellen Spielers aus. Gibt den Namen des aktuellen Spielers aus.
@return Der Name des aktuellen Spielers @return Der Name des aktuellen Spielers
*/ */
public String getPlayerName() public String getPlayerName()
{ {
return players[currentPlayer].getDisplayName(); return players[currentPlayer].getDisplayName();
} }
/** /**
Gibt den Namen des Spielers aus, dem dessen ID gehört. Gibt den Namen des Spielers aus, dem dessen ID gehört.
@param plID Die ID des zu findenden Spielers @param plID Die ID des zu findenden Spielers
@ -80,7 +458,7 @@ public abstract class GeneralMap extends World
{ {
return players[plID].getDisplayName(); return players[plID].getDisplayName();
} }
/** /**
Gibt die Anzahl der Sterne des aktuellen Spielers zurück. Gibt die Anzahl der Sterne des aktuellen Spielers zurück.
@return Die Anzahl der Sterne des aktuellen Spielers @return Die Anzahl der Sterne des aktuellen Spielers
@ -89,7 +467,7 @@ public abstract class GeneralMap extends World
{ {
return players[currentPlayer].getStars(); return players[currentPlayer].getStars();
} }
/** /**
Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört. Gibt die ID des Spielers zurück, dem die gefragte Provinz gehört.
@param prID Die gefragte Provinz @param prID Die gefragte Provinz
@ -101,7 +479,7 @@ public abstract class GeneralMap extends World
} }
return provinces[prID].getOwner(); return provinces[prID].getOwner();
} }
/** /**
Gibt eine Liste mit allen Provinzen und deren Besitzern zurück. Gibt eine Liste mit allen Provinzen und deren Besitzern zurück.
@return Array mit der Provinz-ID als Index und dem Besitzer als Wert @return Array mit der Provinz-ID als Index und dem Besitzer als Wert
@ -114,7 +492,7 @@ public abstract class GeneralMap extends World
} }
return prOwners; return prOwners;
} }
/** /**
Zählt die Anzahl der Einheiten von allen Provinzen zusammen, die einem bestimmten Spieler gehört. Zählt die Anzahl der Einheiten von allen Provinzen zusammen, die einem bestimmten Spieler gehört.
@param playerID Die ID des Spielers, für den die Einheiten gezählt werden sollen. @param playerID Die ID des Spielers, für den die Einheiten gezählt werden sollen.
@ -131,4 +509,205 @@ public abstract class GeneralMap extends World
return c; 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) 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. Hier werden später sämtliche Provinzen der Standard-Map erstellt.
Dies funktioniert folgendermassen: Dies funktioniert folgendermassen:
@ -52,7 +53,7 @@ public class Map_World extends GeneralMap
// cID 1 - Nordamerika // cID 1 - Nordamerika
provinces[1] = new Province( 1 , 1 , 64 , 106 , 1 , "Alaska" , new int[] {2 , 3 , 36}); 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[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[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[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}); 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: Hinweis zum Verbleib der Klasse:
Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden. Diese Klasse soll, da sie zurzeit weder vollständig, noch in Verwendung, noch in der Architektur definiert ist, zum Beta-Meilenstein entfernt werden.
Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen. Sollte die Klasse jedoch zuvor noch Verwendung finden, wird sie nach Absprache mit den jeweiligen Autoren/Benutzern in die Architektur aufgenommen.
*/ */
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
@ -14,16 +14,16 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
*/ */
public class Menue_Button extends Button public class Menue_Button extends Button
{ {
public Menue_Button(ButtonEvent h) { public Menue_Button(ButtonEvent h) {
super(h); super(h);
} }
/** /**
* Act - do whatever the Menue_Button wants to do. This method is called whenever * Act - do whatever the Menue_Button wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment. * the 'Act' or 'Run' button gets pressed in the environment.
*/ */
public void act() public void act()
{ {
setLocation(100,38);// Add your action code here. setLocation(100,38);// Add your action code here.
} }
} }

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

@ -25,7 +25,7 @@ public class Province extends Actor
private boolean clicked = false; private boolean clicked = false;
/** /**
* Überprüft, ob die Provinz angeklickt wurde. * Überprüft, ob die Provinz angeklickt wurde.
*/ */
public void act() public void act()
{ {
@ -45,7 +45,7 @@ public class Province extends Actor
stars = st; stars = st;
} }
displayName = s1; 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; int maxNum = 0;
for(int i = 0; i < ia1.length; i++) { for(int i = 0; i < ia1.length; i++) {
if(maxNum < ia1[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) public Province(int pID, int cID, int x, int y, int st, String s1, boolean[] ba1)
{ {
provinceID = pID; provinceID = pID;
@ -98,7 +98,7 @@ public class Province extends Actor
return continentID; 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) { public boolean isProvinceNear(int i) {
if(i >= nextProvinces.length) { if(i >= nextProvinces.length) {
return false; return false;
@ -124,7 +124,7 @@ public class Province extends Actor
return owner; return owner;
} }
// Setzt den Owner, benötigt String // Setzt den Owner, benötigt String
public void setOwner(int o) public void setOwner(int o)
{ {
if(o < -1) { if(o < -1) {

@ -1,20 +1,21 @@
import greenfoot.*; import greenfoot.*;
import java.awt.Color; import java.awt.Color;
import java.util.*; 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 @author Zocker1999_NET
@version 15.06.2016 @version 15.06.2016
*/ */
public final class Utils { public final class Utils {
/** /**
Kopiert ein boolean-Array und übergibt diese. Kopiert ein boolean-Array und übergibt diese.
@param a Das zu kopierende Array @param a Das zu kopierende Array
@return Die Kopie des Arrays @return Die Kopie des Arrays
*/ */
public static boolean[] copyArray(boolean[] a) { public static boolean[] copyArray(boolean[] a) {
boolean[] b = new boolean[a.length]; boolean[] b = new boolean[a.length];
for(int i = 0; i < a.length; i++) { for(int i = 0; i < a.length; i++) {
@ -22,11 +23,12 @@ public final class Utils {
} }
return b; return b;
} }
/** /**
Kopiert ein int-Array und übergibt diese. Kopiert ein int-Array und übergibt diese.
@param a Das zu kopierende Array @param a Das zu kopierende Array
@return Die Kopie des Arrays @return Die Kopie des Arrays
*/ */
public static int[] copyArray(int[] a) { public static int[] copyArray(int[] a) {
int[] b = new int[a.length]; int[] b = new int[a.length];
for(int i = 0; i < a.length; i++) { for(int i = 0; i < a.length; i++) {
@ -34,11 +36,12 @@ public final class Utils {
} }
return b; return b;
} }
/** /**
Kopiert ein String-Array und übergibt diese. Kopiert ein String-Array und übergibt diese.
@param a Das zu kopierende Array @param a Das zu kopierende Array
@return Die Kopie des Arrays @return Die Kopie des Arrays
*/ */
public static String[] copyArray(String[] a) { public static String[] copyArray(String[] a) {
String[] b = new String[a.length]; String[] b = new String[a.length];
for(int i = 0; i < a.length; i++) { for(int i = 0; i < a.length; i++) {
@ -46,24 +49,24 @@ public final class Utils {
} }
return b; return b;
} }
/** /**
Zeichnet innerhalb eines GreenfootImage ein gefülltes Rechteck in der gegebenen Farbe und mit dem gegebenen Abstand zum Rand. Zeichnet innerhalb eines GreenfootImage ein gefülltes Rechteck in der gegebenen Farbe und mit dem gegebenen Abstand zum Rand.
@param i Das GreenfootImage, in dem gezeichnet werden soll. @param i Das GreenfootImage, in dem gezeichnet werden soll.
@param c Die Farbe, in der das gefüllte Rechteck gezeichnet werden soll. @param c Die Farbe, in der das gefüllte Rechteck gezeichnet werden soll.
@param b Der Abstand zum Rand der Grafik. @param b Der Abstand zum Rand der Grafik.
*/ */
public static void drawInsideRectangle(GreenfootImage i, Color c, int b) { public static void drawInsideRectangle(GreenfootImage i, Color c, int b) {
int sx = i.getWidth(); int sx = i.getWidth();
int sy = i.getHeight(); int sy = i.getHeight();
i.setColor(c); i.setColor(c);
i.fillRect(b,b,sx-(2*b),sy-(2*b)); i.fillRect(b,b, sx-(2*b),sy-(2*b));
} }
/** /**
Sortiert ein int[]-Array absteigend. Sortiert ein int[]-Array absteigend.
@param a Das zu sortierende Array @param a Das zu sortierende Array
*/ */
public static void sortDesc(int[] a) { public static void sortDesc(int[] a) {
Arrays.sort(a); Arrays.sort(a);
int[] b = copyArray(a); int[] b = copyArray(a);
@ -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. - 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. - 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 ## Klassenverzeichnis
@ -876,4 +887,4 @@ Zeichnet innerhalb eines *GreenfootImage* ein Rechteck gefüllt mit der angegebe
#### sortDesc() #### sortDesc()
Sortiert ein *int[]*-Array absteigend. Sortiert ein *int[]*-Array absteigend.

Loading…
Cancel
Save