Merge remote-tracking branch 'refs/remotes/origin/master' into Spielanleitung

master
Zocker1999NET 10 years ago
commit 649c4332bd

@ -1,174 +0,0 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import javax.swing.JOptionPane;
/**
* Write a description of class ArmyPlacer here.
*
* @author GruenerWal, MaxiJohl
* @version 1.0.0
*/
public class ArmyPlacer extends Map_World
{
int freeArmies = -1;
/**
* 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
//
//
//
// I'll be back.
}
public int calculateArmies()
{
int armiesToPlace;
Province[] continentArray;
boolean continentChecked = false;
// 1. ArmyMinimum einbeziehen
armiesToPlace = armyMinimum;
// 2. Einheiten durch Provinzen einbeziehen
armiesToPlace = armiesToPlace + Math.round(players[currentPlayer].getProvinceCount() / 3);
// 3. Einheiten durch Kontinente
// Kontinente durchgehen
for ( int i = 1; i < continentBoni.length; i++ )
{
continentArray = giveContinentArray(i);
// Provinzen des aktuellen Kontinents durchgehen
for ( int p = 1; p >= continentArray.length; p++ )
{
// Prüfen, ob eine Provinz NICHT dem aktuellen Spieler gehört
if ( continentArray[p].getOwner() != currentPlayer )
{
break;
}
// Wenn nicht, wird der Kontinent als gecheckt markiert
else
{
continentChecked = true;
}
}
if ( continentChecked == true )
{
armiesToPlace = armiesToPlace + continentBoni[i];
continentChecked = false;
}
}
// 4. Einheiten durch Sterne
if ( players[currentPlayer].getStars() > 0)
{
String toUseString = JOptionPane.showInputDialog(null, "Wieviele Sterne willst du verwenden?");
int starsToUse = Utils.StringToInt(toUseString);
int[] starBoni = new int [] {1,2,4,7,10,13,17,21,25,30};
if ( starsToUse > 0 && starsToUse < 11 )
{
armiesToPlace = armiesToPlace + starBoni[starsToUse -1];
}
if ( starsToUse < 0 && starsToUse > 10 )
{
JOptionPane.showMessageDialog(null,"Ungültige Zahl. Bitte eine Zahl zwischen 0 und 10 eingeben");
}
}
return armiesToPlace;
}
public Province[] giveContinentArray(int cID)
{
Province[] savedProvinces = new Province[provinceCount +1];
Province[] continentProvinces;
int c = 0;
for (int i = 1; i <= provinceCount; i++)
{
if (provinces[i].getContinentID() == cID)
{
savedProvinces[i] = provinces[i];
c++;
}
}
if ( c < 1 )
{
return null;
}
else
{
return Utils.cutArray(savedProvinces);
}
}
public void placeArmies()
{
if ( freeArmies == -1 )
{
freeArmies = calculateArmies();
}
for ( int i = 1; i <= (provinces.length - 1); i++) {
if (provinces[i].hasClicked() == true && provinces[i].getOwner() == currentPlayer)
{
String toUseString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du setzen? Du hast noch " + freeArmies + " freie Einheiten.");
int armiesToUse = Utils.StringToInt(toUseString);
if ( armiesToUse <= freeArmies )
{
provinces[i].addToEntities(armiesToUse);
freeArmies = freeArmies- armiesToUse;
JOptionPane.showMessageDialog(null,"Einheiten erfolgreich gesetzt, Kommandant " + getPlayerName() + ".");
}
else if ( armiesToUse > freeArmies )
{
JOptionPane.showMessageDialog(null,"Nicht genügend freie Einheiten.");
}
}
}
}
public void act()
{
placeArmies();
}
}

@ -1,5 +1,6 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
import java.awt.Graphics2D;
/**
Diese Klasse stellt einen Button dar.
@ -149,17 +150,12 @@ public class Button extends GUI_Interface {
sy = tI.getHeight() + (6 * 2) + 4;
}
GreenfootImage all = new GreenfootImage(sx,sy);
Color gray = new Color(133,133,133,255);
Color black = new Color(0,0,0,255);
Color trans = new Color(0,0,0,0);
Utils.drawInsideRectangle(all,gray,0);
Utils.drawInsideRectangle(all,black,2);
Utils.drawInsideRectangle(all,gray,6);
Utils.drawInsideRectangle(all,black,7);
all.setColorAt(0,0,trans);
all.setColorAt(sx-1,0,trans);
all.setColorAt(0,sy-1,trans);
all.setColorAt(sx-1,sy-1,trans);
all.setColor(trans);
all.fill();
Graphics2D g = all.getAwtImage().createGraphics();
g.setColor(backC);
g.fillRoundRect(0,0,sx,sy,24,24);
all.drawImage(tI,(sx-tI.getWidth())/2,(sy-tI.getHeight())/2);
setImage(all);
}

@ -1,4 +1,6 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
import javax.swing.JOptionPane;
/**
* Write a description of class Colors here.
@ -15,15 +17,15 @@ public class Colours extends World implements ButtonEvent
Button lila = new Button ("Lila", 16, this);
Button gelb = new Button ("Gelb", 16, this);
Button weiter = new Button ("Weiter", 16, this);
int [] color = new int [6];
String [] pn = new String [6];
int[] color = new int [5];
String[] pn = new String [5];
int x = 0;
boolean possw = true;
boolean posbl = true;
boolean posgr = true;
boolean posrt = true;
boolean posgb = true;
boolean posli = true;
boolean possw = true; // schwarz
boolean posbl = true; // blau
boolean posgr = true; // gruen
boolean posrt = true; // rot
boolean posgb = true; // gelb
boolean posli = true; // lila
int sw = 1;
int bl = 2;
int gr = 3;
@ -31,30 +33,58 @@ public class Colours extends World implements ButtonEvent
int gb = 5;
int li = 6;
Label header = new Label("Klicke auf eine Farbe, um einen Spieler hinzuzufügen:",16);
Button remove = new Button("Rückgängig",16,this);
Label pl1 = new Label("",16);
Label pl2 = new Label("",16);
Label pl3 = new Label("",16);
Label pl4 = new Label("",16);
Label pl5 = new Label("",16);
/**
* Constructor for objects of class Colors.
*
*/
public Colours(int x, int y, int z)
{
super(x, y, z);
setBackground(Start_Load.backgroundImage);
addObject(schwarz, 50, 30);
addObject ( blau, 170, 30);
addObject ( grün, 280, 30);
addObject ( rot, 390, 30);
addObject(gelb, 500, 30);
addObject(lila, 610, 30);
addObject (weiter, 335,90);
schwarz.setSize(100, 50);
gelb.setSize(100, 50);
blau.setSize(100, 50);
grün.setSize(100, 50);
rot.setSize(100, 50);
lila.setSize(100, 50);
weiter.setSize(100, 50);
Button[] bList = new Button[] {schwarz,gelb,blau,grün,rot,lila,weiter,remove};
Label[] lList = new Label[] {header,pl1,pl2,pl3,pl4,pl5};
addObject(header,200,15);
addObject(schwarz, 70, 50);
addObject ( blau, 190, 50);
addObject ( grün, 300, 50);
addObject ( rot, 410, 50);
addObject(gelb, 520, 50);
addObject(lila, 630, 50);
addObject(remove,300,110);
addObject (weiter, 410,110);
addObject(pl1,355,160);
addObject(pl2,355,180);
addObject(pl3,355,200);
addObject(pl4,355,220);
addObject(pl5,355,240);
schwarz.setForeColor(Color.black);
gelb.setForeColor(Color.yellow);
blau.setForeColor(Color.blue);
grün.setForeColor(Color.green);
rot.setForeColor(Color.red);
lila.setForeColor(new Color(161,70,255));
for(int i = 0; i < bList.length; i++) {
bList[i].setSize(100,50);
}
for(int i = 0; i < lList.length; i++) {
lList[i].setBackColor(new Color(0,0,0,0));
}
redraw();
}
// Überprüft, ob ein Farbbutton geklickt wurde
//Überprüft, ob die Farbe noch nicht ausgewählt wurde
@ -66,55 +96,63 @@ public class Colours extends World implements ButtonEvent
//der per Konstruktor die Daten der Colorklasse übertragen werden, dannach wird die Map die aktive Welt
public void buttonClicked (Button b)
{
if ( b == schwarz && possw == true)
{
if (x < 5) {
if (b == schwarz && possw == true) {
color[x] = sw;
pn[x]="Schwarz";
pn[x]=getName(x,"Schwarz");
if(pn[x].length() > 0) {
x+=1;
possw = false;
}
if (b == blau && posbl == true)
{
} else if (b == blau && posbl == true) {
color[x] = bl;
pn[x] = "Blau";
pn[x]=getName(x,"Blau");
if(pn[x].length() > 0) {
x+=1;
posbl = false;
}
if (b == grün && posgr == true )
{
} else if (b == grün && posgr == true ) {
color[x] = gr;
pn[x]="Grün";
pn[x]=getName(x,"Grün");
if(pn[x].length() > 0) {
x+=1;
posgr = false;
}
if ( b == rot && posrt == true)
{
} else if (b == rot && posrt == true) {
color[x] = rt;
pn[x]="Rot";
pn[x]=getName(x,"Rot");
if(pn[x].length() > 0) {
x+=1;
posrt = false;
}
if ( b == gelb && posgb == true)
{
} else if (b == gelb && posgb == true) {
color [x] = gb;
pn[x]="Gelb";
pn[x]=getName(x,"Gelb");
if(pn[x].length() > 0) {
x+=1;
posgb = false;
}
if ( b == lila && posli == true)
{
} else if (b == lila && posli == true) {
color [x] = li;
pn[x]="Lila";
pn[x]=getName(x,"Lila");
if(pn[x].length() > 0) {
x+=1;
posli = false;
}
if ( b == weiter && x >=2 )
}
}
if(b == remove && x > 0) {
x -= 1;
switch(color[x]) {
case 1: possw = true; break;
case 2: posbl = true; break;
case 3: posgr = true; break;
case 4: posrt = true; break;
case 5: posgb = true; break;
case 6: posli = true; break;
}
}
if ( b == weiter && x > 2 )
{
String[] newpn = new String[x];
int[] newcolor = new int[x];
@ -122,13 +160,57 @@ public class Colours extends World implements ButtonEvent
{
newpn[i] = pn[i];
newcolor[i] = color[i];
}
World m = new Map(newcolor,x,newpn);
Greenfoot.setWorld(m);
}
redraw();
}
private Color getC(boolean pos) {
if(x >= 5) {
return Color.gray;
}
return (pos) ? Color.lightGray : Color.gray;
}
/**
Passt alle adaptiven Parameter automatisch an.
*/
private void redraw() {
schwarz.setBackColor(getC(possw));
blau.setBackColor(getC(posbl));
grün.setBackColor(getC(posgr));
rot.setBackColor(getC(posrt));
lila.setBackColor(getC(posli));
gelb.setBackColor(getC(posgb));
remove.setBackColor((x > 0) ? Color.black : Color.gray);
weiter.setBackColor((x > 2) ? Color.black : Color.gray);
pl1.setText("");
pl2.setText("");
pl3.setText("");
pl4.setText("");
pl5.setText("");
switch(x) {
case 5:
pl5.setText(pn[4]);
case 4:
pl4.setText(pn[3]);
case 3:
pl3.setText(pn[2]);
case 2:
pl2.setText(pn[1]);
case 1:
pl1.setText(pn[0]);
}
}
private String getName(int id, String col) {
String name = JOptionPane.showInputDialog(null, "Wie soll Spieler Nr. "+id+" mit der Farbe "+col+" heißen?");
if(name == null) {
name = "";
}
return name;
}
}

@ -2,7 +2,7 @@ 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}
new int[] {1,2,3,4}
);
}
}

@ -2,7 +2,7 @@ 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}
new int[] {1,2,3,4,5}
);
}
}

@ -13,7 +13,7 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse
* @author (your name)
* @version (a version number or a date)
*/
public class Dice_Defender extends Dice
public class Dice_Defender
{
/**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever
@ -32,6 +32,7 @@ public class Dice_Defender extends Dice
*/
public int[] dice_defender(int troupNumberDefender)
{
diceEyesDefender = new int[2];
if(troupNumberDefender == 1)
{
diceEyesDefender[0] = (int) (Math.random() * 6 +1);

@ -13,7 +13,7 @@ import java.util.Arrays; // (World, Actor, GreenfootImage, Greenfoot and Mouse
* @author (your name)
* @version (a version number or a date)
*/
public class Dice_Offender extends Dice
public class Dice_Offender
{
/**
* Act - do whatever the Dice_Offender wants to do. This method is called whenever
@ -32,6 +32,7 @@ public class Dice_Offender extends Dice
*/
public int[] dice_offender(int troupNumberOffender)
{
diceEyesOffender = new int[3];
if(troupNumberOffender == 1)
{
System.out.println("Mit einer verbleibenden Truppe auff dem Feld kann man nicht angreifen!");

@ -1,14 +1,16 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.lang.Math;
import java.util.Arrays;
import java.awt.Color;
import greenfoot.MouseInfo.*;
import javax.swing.JOptionPane;
import java.awt.Color;
/**
Oberklasse für verschiedene Maps;
neue Maps werden als Unterklasse dieser Klasse eingefügt.
@author GruenerWal, MaxiJohl, Felix Stupp
@author GruenerWal, MaxiJohl, Felix Stupp, Samuel
@version 0.3.0
*/
public abstract class GeneralMap extends World implements ButtonEvent
@ -17,10 +19,10 @@ public abstract class GeneralMap extends World implements ButtonEvent
Felder, im Moment nur Anzahl der Provinzen
Später evtl. weitere Werte wie Schwierigkeit denkbar
*/
Button modus = new Button("Kampf",25,this);
Button modus = new Button("Kampf\nbeginnen",25,this);
private final int X_OFFSET = 200; // Verschiebt die Provinzen nach rechts
private final int Y_OFFSET = 25; // Verschiebt die Provinzen nach unten
private final int Y_OFFSET = 0; // Verschiebt die Provinzen nach unten
/*
Die einzelnen Positionen der Provinzen wird mit SCALE_VALUE/10000 multipliziert.
@ -30,9 +32,9 @@ public abstract class GeneralMap extends World implements ButtonEvent
private final double SCALE_VALUE = 1;
protected enum GameStates {
SETZEN,
KAMPF,
VERSCHIEBEN,
SETZEN
VERSCHIEBEN
}
protected Province[] provinces;
@ -40,20 +42,11 @@ public abstract class GeneralMap extends World implements ButtonEvent
protected Player[] players;
protected int currentPlayer = 0;
protected GameStates status = GameStates.VERSCHIEBEN;
protected GameStates status = GameStates.SETZEN;
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.
@ -64,6 +57,9 @@ public abstract class GeneralMap extends World implements ButtonEvent
{
super(1600,900,1);
players = new Player[playerList.length];
modus.setSize(100,100);
modus.setBackColor(Color.white);
modus.setForeColor(Color.black);
addObject( modus, 1500, 808);
for (int i = 0; i < playerList.length; i++) {
players[i] = new Player(i,playerList[i],colorList[i]);
@ -73,6 +69,47 @@ public abstract class GeneralMap extends World implements ButtonEvent
createPlayerObjects(playerList.length);
}
public int currentPlayer()
{
return currentPlayer;
}
public void redrawGameStates()
{
int textSize = 20;
int X = 422;
int Y = 677;
if(status == GameStates.KAMPF)
{
GreenfootImage GameStatesEmpty = new GreenfootImage(750,textSize);
GreenfootImage GameStates = new GreenfootImage("KAMPF!!! Wähle die Provinzen aus, die kämpfen sollen, " + getPlayerName() + ".",textSize,new Color(255,255,255),new Color(0,0,0));
GameStatesEmpty.drawImage(GameStates,0,0);
GreenfootImage States = new GreenfootImage("MapWorldFight.png");
States.drawImage(GameStatesEmpty,X,Y);
setBackground(States);
}
if(status == GameStates.VERSCHIEBEN)
{
GreenfootImage GameStatesEmpty = new GreenfootImage(500,textSize);
GreenfootImage GameStates = new GreenfootImage("VERSCHIEBEN! Wähle die Provinzen aus, bei denen du schubsen möchtest, " + getPlayerName() + ".",textSize,new Color(255,255,255),new Color(0,0,0));
GameStatesEmpty.drawImage(GameStates,0,0);
GreenfootImage States = new GreenfootImage("MapWorldMove.png");
States.drawImage(GameStatesEmpty,X,Y);
setBackground(States);
}
if(status == GameStates.SETZEN)
{
GreenfootImage GameStatesEmpty = new GreenfootImage(500,textSize);
GreenfootImage GameStates = new GreenfootImage("SETZEN! Wähle die Provinz aus, der du schenken möchtest, " + getPlayerName() + ".",textSize,new Color(255,255,255),new Color(0,0,0)); // "Setzten" Lern Deutsch, Samuel
GameStatesEmpty.drawImage(GameStates,0,0);
GreenfootImage States = new GreenfootImage("MapWorld.png");
States.drawImage(GameStatesEmpty,X,Y);
setBackground(States);
}
}
private void createPlayerObjects(int playerCount)
{
if(playerCount > 6) {
@ -100,312 +137,6 @@ public abstract class GeneralMap extends World implements ButtonEvent
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[] {0,1,2,2,1,2,1,1,0,1,0,1,2,2,0,1,2,4,2,1,1,2,0,2,0,2,2,3,2,3,2,3,0,1,1,2,1,4,1,3,0,1,2,4,0,2,2,4,1,2,1,1,2,1,0,3,0,3,0,4,2,1,1,1,1,1,0,2,1,2,2,1,1,2,1,4,1,3,0,4,2,1,0,2};
provinces[1].setOwner(0);
provinces[1].setEntityCount(1);
provinces[2].setOwner(2);
provinces[2].setEntityCount(2);
provinces[3].setOwner(1);
provinces[3].setEntityCount(2);
provinces[4].setOwner(1); //Fabrik
provinces[4].setEntityCount(1);
provinces[5].setOwner(0);//Fabrik
provinces[5].setEntityCount(1);
provinces[6].setOwner(0);//Fabrik
provinces[6].setEntityCount(1);
provinces[7].setOwner(2);
provinces[7].setEntityCount(2);
provinces[8].setOwner(0);
provinces[8].setEntityCount(1);
provinces[9].setOwner(2);
provinces[9].setEntityCount(4);
provinces[10].setOwner(2);
provinces[10].setEntityCount(1);
provinces[11].setOwner(1);//Fabrik
provinces[11].setEntityCount(2);
provinces[12].setOwner(0);
provinces[12].setEntityCount(2);
provinces[13].setOwner(0);//Fabrik
provinces[13].setEntityCount(2);
provinces[14].setOwner(2);//Fabrik
provinces[14].setEntityCount(3);
provinces[15].setOwner(2);//Fabrik
provinces[15].setEntityCount(3);
provinces[16].setOwner(2);//Fabrik
provinces[16].setEntityCount(3);
provinces[17].setOwner(0);
provinces[17].setEntityCount(1);
provinces[18].setOwner(1);
provinces[18].setEntityCount(2);
provinces[19].setOwner(1);//Fabrik
provinces[19].setEntityCount(4);
provinces[20].setOwner(1);
provinces[20].setEntityCount(3);
provinces[21].setOwner(0);
provinces[21].setEntityCount(1);
provinces[22].setOwner(2);//Fabrik
provinces[22].setEntityCount(4);
provinces[23].setOwner(0);
provinces[23].setEntityCount(2);
provinces[24].setOwner(2);
provinces[24].setEntityCount(4);
provinces[25].setOwner(1);
provinces[25].setEntityCount(2);
provinces[26].setOwner(1);//Fabrik
provinces[26].setEntityCount(1);
provinces[27].setOwner(2);
provinces[27].setEntityCount(1);
provinces[28].setOwner(0);//Fabrik
provinces[28].setEntityCount(3);
provinces[29].setOwner(0);//Fabrik
provinces[29].setEntityCount(3);
provinces[30].setOwner(0);
provinces[30].setEntityCount(4);
provinces[31].setOwner(2);
provinces[31].setEntityCount(1);
provinces[32].setOwner(1);
provinces[32].setEntityCount(1);
provinces[33].setOwner(1);
provinces[33].setEntityCount(1);
provinces[34].setOwner(0);
provinces[34].setEntityCount(2);
provinces[35].setOwner(1);
provinces[35].setEntityCount(2);
provinces[36].setOwner(2);
provinces[36].setEntityCount(1);
provinces[37].setOwner(1);
provinces[37].setEntityCount(2);
provinces[38].setOwner(1);//Fabrik
provinces[38].setEntityCount(4);
provinces[39].setOwner(1);
provinces[39].setEntityCount(3);
provinces[40].setOwner(0);
provinces[40].setEntityCount(4);
provinces[41].setOwner(2);//Fabrik
provinces[41].setEntityCount(1);
provinces[42].setOwner(0);
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[] {0,1,2,3,2,3,2,2,2,2,2,3,1,2,0,2,1,2,2,2,1,3,2,2,1,3,0,3,0,3,0,3,2,2,3,2,1,4,1,4,0,1,0,2,0,5,0,3,1,2,3,3,3,1,3,2,1,2,1,2,3,1,1,1,3,5,2,2,2,2,2,2,3,1,3,1,3,4,3,1,0,2,3,4};
provinces[1].setOwner(0);
provinces[1].setEntityCount(1);
provinces[2].setOwner(2);
provinces[2].setEntityCount(3);
provinces[3].setOwner(2);
provinces[3].setEntityCount(3);
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(3);
provinces[7].setOwner(1);
provinces[7].setEntityCount(2);
provinces[8].setOwner(0);
provinces[8].setEntityCount(2);
provinces[9].setOwner(1);
provinces[9].setEntityCount(2);
provinces[10].setOwner(2);//Fabrik
provinces[10].setEntityCount(2);
provinces[11].setOwner(1);//Fabrik
provinces[11].setEntityCount(3);
provinces[12].setOwner(2);
provinces[12].setEntityCount(2);
provinces[13].setOwner(1);//Fabrik
provinces[13].setEntityCount(3);
provinces[14].setOwner(0);//Fabrik
provinces[14].setEntityCount(3);
provinces[15].setOwner(0);//Fabrik
provinces[15].setEntityCount(3);
provinces[16].setOwner(0);//Fabrik
provinces[16].setEntityCount(3);
provinces[17].setOwner(2);
provinces[17].setEntityCount(2);
provinces[18].setOwner(3);
provinces[18].setEntityCount(2);
provinces[19].setOwner(1);//Fabrik
provinces[19].setEntityCount(4);
provinces[20].setOwner(1);
provinces[20].setEntityCount(4);
provinces[21].setOwner(0);
provinces[21].setEntityCount(1);
provinces[22].setOwner(0);//Fabrik
provinces[22].setEntityCount(2);
provinces[23].setOwner(0);
provinces[23].setEntityCount(5);
provinces[24].setOwner(0);
provinces[24].setEntityCount(3);
provinces[25].setOwner(1);
provinces[25].setEntityCount(2);
provinces[26].setOwner(3);//Fabrik
provinces[26].setEntityCount(3);
provinces[27].setOwner(3);
provinces[27].setEntityCount(1);
provinces[28].setOwner(3);//Fabrik
provinces[28].setEntityCount(2);
provinces[29].setOwner(1);//Fabrik
provinces[29].setEntityCount(2);
provinces[30].setOwner(1);
provinces[30].setEntityCount(2);
provinces[31].setOwner(3);
provinces[31].setEntityCount(1);
provinces[32].setOwner(1);
provinces[32].setEntityCount(1);
provinces[33].setOwner(3);
provinces[33].setEntityCount(5);
provinces[34].setOwner(2);
provinces[34].setEntityCount(2);
provinces[35].setOwner(2);
provinces[35].setEntityCount(2);
provinces[36].setOwner(2);
provinces[36].setEntityCount(2);
provinces[37].setOwner(3);
provinces[37].setEntityCount(1);
provinces[38].setOwner(3);//Fabrik
provinces[38].setEntityCount(1);
provinces[39].setOwner(3);
provinces[39].setEntityCount(4);
provinces[40].setOwner(3);
provinces[40].setEntityCount(1);
provinces[41].setOwner(0);//Fabrik
provinces[41].setEntityCount(2);
provinces[42].setOwner(3);
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[] {2,1,0,2,3,2,1,2,1,2,1,2,1,4,3,1,1,2,3,1,3,3,2,1,0,4,0,2,2,3,0,2,1,3,3,2,3,5,3,3,1,2,2,5,2,3,0,2,2,3,2,2,1,3,4,2,4,3,4,3,0,3,0,3,3,1,4,1,4,1,4,2,2,2,3,2,4,2,0,2,4,4,4,2};
provinces[1].setOwner(2);
provinces[1].setEntityCount(1);
provinces[2].setOwner(0);
provinces[2].setEntityCount(2);
provinces[3].setOwner(3);
provinces[3].setEntityCount(2);
provinces[4].setOwner(1);//Fabrik
provinces[4].setEntityCount(2);
provinces[5].setOwner(1);//Fabrik
provinces[5].setEntityCount(2);
provinces[6].setOwner(1);//Fabrik
provinces[6].setEntityCount(2);
provinces[7].setOwner(1);
provinces[7].setEntityCount(4);
provinces[8].setOwner(3);
provinces[8].setEntityCount(1);
provinces[9].setOwner(1);
provinces[9].setEntityCount(2);
provinces[10].setOwner(3);
provinces[10].setEntityCount(1);
provinces[11].setOwner(3);//Fabrik
provinces[11].setEntityCount(3);
provinces[12].setOwner(2);
provinces[12].setEntityCount(1);
provinces[13].setOwner(0);
provinces[13].setEntityCount(4);
provinces[14].setOwner(0);//Fabrik
provinces[14].setEntityCount(2);
provinces[15].setOwner(2);//Fabrik
provinces[15].setEntityCount(3);
provinces[16].setOwner(0);//Fabrik
provinces[16].setEntityCount(2);
provinces[17].setOwner(1);
provinces[17].setEntityCount(3);
provinces[18].setOwner(3);
provinces[18].setEntityCount(2);
provinces[19].setOwner(3);//Fabrik
provinces[19].setEntityCount(5);
provinces[20].setOwner(3);
provinces[20].setEntityCount(3);
provinces[21].setOwner(1);
provinces[21].setEntityCount(2);
provinces[22].setOwner(2);//Fabrik
provinces[22].setEntityCount(5);
provinces[23].setOwner(2);
provinces[23].setEntityCount(3);
provinces[24].setOwner(0);
provinces[24].setEntityCount(2);
provinces[25].setOwner(2);
provinces[25].setEntityCount(3);
provinces[26].setOwner(2);//Fabrik
provinces[26].setEntityCount(2);
provinces[27].setOwner(1);
provinces[27].setEntityCount(3);
provinces[28].setOwner(4);//Fabrik
provinces[28].setEntityCount(2);
provinces[29].setOwner(4);//Fabrik
provinces[29].setEntityCount(3);
provinces[30].setOwner(4);
provinces[30].setEntityCount(3);
provinces[31].setOwner(0);
provinces[31].setEntityCount(3);
provinces[32].setOwner(0);
provinces[32].setEntityCount(3);
provinces[33].setOwner(3);
provinces[33].setEntityCount(1);
provinces[34].setOwner(4);
provinces[34].setEntityCount(1);
provinces[35].setOwner(4);
provinces[35].setEntityCount(1);
provinces[36].setOwner(4);
provinces[36].setEntityCount(2);
provinces[37].setOwner(2);
provinces[37].setEntityCount(2);
provinces[38].setOwner(3);//Fabrik
provinces[38].setEntityCount(2);
provinces[39].setOwner(4);
provinces[39].setEntityCount(2);
provinces[40].setOwner(0);
provinces[40].setEntityCount(2);
provinces[41].setOwner(4);//Fabrik
provinces[41].setEntityCount(4);
provinces[42].setOwner(4);
provinces[42].setEntityCount(2);
}
int errors = 0;
for(int i = 1; i < provinces.length; i++) {
Province p = provinces[i];
p.redrawProvince();
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!");
}
}
/**
@ -417,22 +148,14 @@ public abstract class GeneralMap extends World implements ButtonEvent
}
public void act() {
if(status == GameStates.KAMPF) {
if(offenderProvince == null) {
OffenderProvince();
} else {
defenderProvince();
}
if (status == GameStates.SETZEN) {
actPlace();
} else if(status == GameStates.KAMPF) {
actFight();
} 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;
}
}
actMove();
}
redrawGameStates();
}
/**
@ -443,6 +166,15 @@ public abstract class GeneralMap extends World implements ButtonEvent
return players.length;
}
/**
* Gibt die Farbe des angefragten Spielers heraus.
* @param int pID -> Farbe des Spielers
*/
public int getPlayerColor(int pID)
{
return players[pID].getColor();
}
/**
Gibt den Namen des aktuellen Spielers aus.
@return Der Name des aktuellen Spielers
@ -512,29 +244,30 @@ public abstract class GeneralMap extends World implements ButtonEvent
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;
private void resetClicked() {
for(int i = 1; i <= (provinces.length - 1); i++) {
provinces[i].hasClicked();
}
}
if ( modus == b && status==GameStates.SETZEN)
{
public void buttonClicked(Button b) {
if ( modus == b ) {
if(status==GameStates.SETZEN && freeArmies == 0 ) {
status=GameStates.KAMPF;
modus.setText("Kampf beenden");
}
if ( modus == b && status== GameStates.KAMPF)
{
offenderProvince = null;
defenderProvince = null;
maxDiceOffender = "";
maxDiceDefender = "";
modus.setBackColor(Color.white);
modus.setForeColor(Color.black);
modus.setText("Kampf\nbeenden");
} else if (status==GameStates.KAMPF) {
status=GameStates.VERSCHIEBEN;
modus.setText("Nächster Spieler");
}
if ( modus == b && status==GameStates.VERSCHIEBEN)
{
if( currentPlayer== players.length-1)
savedProvince = null;
modus.setText("Nächster\nSpieler");
} else if (status==GameStates.VERSCHIEBEN) {
freeArmies = -1;
if(currentPlayer >= players.length-1)
{
currentPlayer=0;
}
@ -543,45 +276,68 @@ public abstract class GeneralMap extends World implements ButtonEvent
currentPlayer+=1;
}
status=GameStates.SETZEN;
modus.setText("Kampf beginnen");
modus.setText("Kampf\nbeginnen");
}
}
}
// Kampfsystem
private void OffenderProvince()
{
for ( int i = 1; i <= (provinces.length - 1); i++)
{
if (provinces[i].hasClicked() == true)
{
offenderProvince = provinces[i];
provinces[i].redrawProvince(2);
// System.out.println("Die Provinz " + provinces[i].getDisplayName() + " wurde als angreifende Provinz ausgewählt! Sie gehört Spieler" + provinces[i].getOwner());
Province offenderProvince;
Province defenderProvince;
String maxDiceOffender = "";
String maxDiceDefender = "";
private void actFight() {
for(int i = 1; i <= (provinces.length - 1); i++) {
if (provinces[i].hasClicked() == true) {
if(provinces[i].getOwner() == currentPlayer) {
OffenderProvince(provinces[i]);
} else {
DefenderProvince(provinces[i]);
}
}
}
}
private void defenderProvince()
private void OffenderProvince(Province p)
{
{
for (int i = 1; i <= (provinces.length - 1); i++)
{
if (provinces[i].hasClicked() == true)//&& defenderProvince != offenderProvince)
{
defenderProvince = provinces[i];
provinces[i].redrawProvince(3);
// System.out.println("Die Provinz " + provinces[i].getDisplayName() + " wurde als verteidigende Provinz ausgewählt! Sie gehört Spieler" + provinces[i].getOwner());
if(p.getEntityCount() > 1) {
if(offenderProvince != null) {
offenderProvince.redrawProvince();
}
offenderProvince = p;
p.redrawProvince(2);
// System.out.println("Die Provinz " + provinces[i].getDisplayName() + " wurde als angreifende Provinz ausgewählt! Sie gehört Spieler" + provinces[i].getOwner());
chooser();
break;
}
}
private void DefenderProvince(Province p)
{
if(defenderProvince != null) {
defenderProvince.redrawProvince();
}
defenderProvince = p;
p.redrawProvince(3);
// System.out.println("Die Provinz " + provinces[i].getDisplayName() + " wurde als verteidigende Provinz ausgewählt! Sie gehört Spieler" + provinces[i].getOwner());
chooser();
}
private void chooser()
{
System.out.println("Es wird gewürfelt!");
if(offenderProvince == null || defenderProvince == null) {
return;
}
if(!offenderProvince.isProvinceNear(defenderProvince.getID())) {
JOptionPane.showMessageDialog(null,"Die Provinzen liegen nicht mal ansatzweise nebeneinander!");
offenderProvince.redrawProvince();
defenderProvince.redrawProvince();
offenderProvince = null;
defenderProvince = null;
return;
}
//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());
@ -590,29 +346,33 @@ public abstract class GeneralMap extends World implements ButtonEvent
int[] maxDiceDefenderArray = diceDefender.dice_defender(defenderProvince.getEntityCount());
Arrays.sort(maxDiceOffenderArray);
Arrays.sort(maxDiceDefenderArray);
maxDiceOffender = "";
for(int i = 0;i<3;i++)
{
if(maxDiceOffenderArray[i] != 0) {
if(i == 0)
{
maxDiceOffender = "" + maxDiceOffenderArray[i];
}
else
{
maxDiceOffender = maxDiceOffender + ";" + maxDiceOffenderArray[i];
maxDiceOffender = maxDiceOffender + ", " + maxDiceOffenderArray[i];
}
}
}
maxDiceDefender = "";
for(int i = 0;i<2;i++)
{
if(maxDiceDefenderArray[i] != 0) {
if(i == 0)
{
maxDiceDefender = "" + maxDiceDefenderArray[i];
}
else
{
maxDiceDefender = maxDiceDefender + ";" + maxDiceDefenderArray[i];
maxDiceDefender = maxDiceDefender + ", " + maxDiceDefenderArray[i];
}
}
}
JOptionPane.showMessageDialog(null,"Es wurde gewürfelt. Der Angreifer erreichte folgende Würfelzahlen: " + maxDiceOffender + "\nDer Verteidiger erreichte diese Würfelzahlen: " + maxDiceDefender);
diceOffender = null;
@ -620,49 +380,56 @@ public abstract class GeneralMap extends World implements ButtonEvent
decider(maxDiceOffenderArray, maxDiceDefenderArray);
}
// berechnet Zahlen und findet Gewinner; führt Konsequenz aus
private void decider(int[] maxDiceOffender, int [] maxDiceDefender)
{
int maxDefender = maxDiceDefender[1];
int maxOffender = maxDiceOffender[2];
if (maxOffender > maxDefender && defenderProvince.getEntityCount()>1)
if (maxOffender > maxDefender)
{
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");
defenderProvince.removeFromEntities(1);
if (defenderProvince.getEntityCount() <= 0) {
defenderProvince.setOwner(offenderProvince.getOwner());
offenderProvince.removeFromEntities(1);
defenderProvince.setEntityCount(1);
JOptionPane.showMessageDialog(null,"Somit gewinnt der Angreifer (" + getPlayerName(offenderProvince.getOwner()) + "). Die Provinz gehört fortan dem Angreifer (" + getPlayerName(offenderProvince.getOwner()) + ").");
} else {
JOptionPane.showMessageDialog(null,"Somit gewinnt der Angreifer (" + getPlayerName(offenderProvince.getOwner()) + "). Dem Verteidiger (" + getPlayerName(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");
offenderProvince.removeFromEntities(1);
JOptionPane.showMessageDialog(null,"Somit gewinnt der Verteidiger (" + getPlayerName(defenderProvince.getOwner()) + "). Dem Angreifer (" + getPlayerName(offenderProvince.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");
offenderProvince.removeFromEntities(1);
JOptionPane.showMessageDialog(null,"Da es unentschieden ist, gewinnt der Verteidiger (" + getPlayerName(defenderProvince.getOwner()) + "). Dem Angreifer (" + getPlayerName(offenderProvince.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.redrawProvince();
defenderProvince.redrawProvince();
offenderProvince = null;
defenderProvince = null;
}
// Einheiten verschieben
Province savedProvince = null;
private void actMove() {
for ( int i = 1; i <= (provinces.length - 1); i++) {
if (provinces[i].hasClicked() == true) {
useProvincesToMove(provinces[i]);
break;
}
}
}
/**
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.
@ -697,19 +464,143 @@ public abstract class GeneralMap extends World implements ButtonEvent
*/
private void useProvincesToMove(Province givenProvince)
{
if(givenProvince.getOwner() != currentPlayer) {
return;
}
if (savedProvince == null)
{
savedProvince = givenProvince;
givenProvince.redrawProvince(2);
}
else if ((savedProvince != null) && (givenProvince != savedProvince) && (savedProvince.getOwner() == givenProvince.getOwner()) && (savedProvince.getOwner() == currentPlayer) )
else if ((savedProvince != null) && (givenProvince != savedProvince))
{
if (givenProvince.isProvinceNear(savedProvince.getID()) == true)
{
moveEntities(savedProvince,givenProvince);
}
savedProvince.redrawProvince();
savedProvince = null;
}
}
// Einheiten setzen
int freeArmies = -1;
private void actPlace()
{
if ( freeArmies == -1 ) {
freeArmies = calculateArmies();
} else if ( freeArmies == 0 ) {
modus.setBackColor(Color.white);
modus.setForeColor(Color.black);
} else {
modus.setBackColor(Color.black);
modus.setForeColor(Color.black);
}
for ( int i = 1; i <= (provinces.length - 1); i++) {
if (provinces[i].hasClicked() == true && provinces[i].getOwner() == currentPlayer)
{
String toUseString = JOptionPane.showInputDialog(null, "Wieviele Einheiten willst du setzen? Du hast noch " + freeArmies + " freie Einheiten.");
int armiesToUse = Utils.StringToInt(toUseString);
if ( armiesToUse <= freeArmies )
{
if ( armiesToUse > 0 )
{
provinces[i].addToEntities(armiesToUse);
freeArmies = freeArmies- armiesToUse;
JOptionPane.showMessageDialog(null,"Einheiten erfolgreich gesetzt, Kommandant " + getPlayerName() + ".");
}
if ( armiesToUse < 0 )
{
JOptionPane.showMessageDialog(null,"Willst du mich verarschen?");
}
}
else
{
JOptionPane.showMessageDialog(null,"Nicht genügend freie Einheiten.");
}
}
}
}
private int calculateArmies()
{
int armiesToPlace;
Province[] continentArray;
boolean continentChecked = false;
// 1. ArmyMinimum einbeziehen
armiesToPlace = armyMinimum;
// 2. Einheiten durch Provinzen einbeziehen
armiesToPlace = armiesToPlace + Math.round(players[currentPlayer].getProvinceCount() / 3);
// 3. Einheiten durch Kontinente
// Kontinente durchgehen
for ( int i = 1; i < continentBoni.length; i++ )
{
continentArray = giveContinentArray(i);
// Provinzen des aktuellen Kontinents durchgehen
for ( int p = 1; p >= continentArray.length; p++ )
{
// Prüfen, ob eine Provinz NICHT dem aktuellen Spieler gehört
if ( continentArray[p].getOwner() != currentPlayer )
{
break;
}
// Wenn nicht, wird der Kontinent als gecheckt markiert
else
{
continentChecked = true;
}
}
if ( continentChecked == true )
{
armiesToPlace = armiesToPlace + continentBoni[i];
continentChecked = false;
}
}
// 4. Einheiten durch Sterne
if ( players[currentPlayer].getStars() > 0)
{
String toUseString = JOptionPane.showInputDialog(null, "Wieviele Sterne willst du verwenden?");
int starsToUse = Utils.StringToInt(toUseString);
int[] starBoni = new int [] {1,2,4,7,10,13,17,21,25,30};
if ( starsToUse > 0 && starsToUse < 11 )
{
armiesToPlace = armiesToPlace + starBoni[starsToUse -1];
}
if ( starsToUse < 0 && starsToUse > 10 )
{
JOptionPane.showMessageDialog(null,"Ungültige Zahl. Bitte eine Zahl zwischen 0 und 10 eingeben");
}
}
return armiesToPlace;
}
private Province[] giveContinentArray(int cID)
{
Province[] savedProvinces = new Province[provinceCount +1];
Province[] continentProvinces;
int c = 0;
for (int i = 1; i <= provinceCount; i++)
{
if (provinces[i].getContinentID() == cID)
{
savedProvinces[i] = provinces[i];
c++;
}
}
if ( c < 1 )
{
return null;
}
else
{
return Utils.cutArray(savedProvinces);
}
}
}

@ -90,6 +90,11 @@ public class Label extends GUI_Interface {
*/
public void redraw() {
GreenfootImage tI = new GreenfootImage(text,textSize,foreC,backC);
if(text == "") {
tI = new GreenfootImage(1,1);
tI.setColor(new Color(0,0,0,0));
tI.fill();
}
if(autoSize) {
sx = tI.getWidth();
sy = tI.getHeight();

@ -10,15 +10,11 @@ Klasse der Standard-Welt
public class Map_World extends GeneralMap
{
/**
Anzahl der Provinzen.
*/
/**
Konstruktor der Weltkarte;
konstruiert eine GeneralMap mit den Ausmassen 1600 auf 900 Pixel.
*/
public Map_World(String[] playerList, int[] colorList)
{
super(playerList,colorList);
@ -62,16 +58,16 @@ public class Map_World extends GeneralMap
provinces[6] = new Province( 6 , 1 , 232 , 273 , 2 , "Oststaaten" , new int[] {4 , 5 , 7 , 8});
provinces[7] = new Province( 7 , 1 , 300 , 180 , 2 , "Quebec" , new int[] {4 , 6 , 9});
provinces[8] = new Province( 8 , 1 , 181 , 347 , 1 , "Mittelamerika" , new int[] {5 , 6 , 17});
provinces[9] = new Province( 9 , 1 , 365 , 55 , 1 , "Groenland" , new int[] {2 , 4 , 7 , 10});
provinces[9] = new Province( 9 , 1 , 365 , 55 , 1 , "Grönland" , new int[] {2 , 4 , 7 , 10});
// cID 2 - Europa
provinces[10] = new Province(10 , 2 , 454 , 142 , 1 , "Island" , new int[] {9 , 11 , 12});
provinces[11] = new Province(11 , 2 , 424 , 221 , 2 , "Grossbritannien" , new int[] {10 , 12 , 14 , 15});
provinces[11] = new Province(11 , 2 , 424 , 221 , 2 , "Großbritannien" , new int[] {10 , 12 , 14 , 15});
provinces[12] = new Province(12 , 2 , 520 , 153 , 1 , "Skandinavien" , new int[] {10 , 11 , 13 , 14});
provinces[13] = new Province(13 , 2 , 636 , 180 , 2 , "Russland" , new int[] {12 , 14 , 16 , 27 , 31 , 32});
provinces[14] = new Province(14 , 2 , 528 , 232 , 2 , "Nordeuropa" , new int[] {11 , 12 , 13 , 15 , 16});
provinces[15] = new Province(15 , 2 , 449 , 335 , 2 , "Westeuropa" , new int[] {11 , 14 , 16 , 25});
provinces[16] = new Province(16 , 2 , 537 , 296 , 2 , "Suedeuropa" , new int[] {13 , 14 , 15 , 25 , 26 , 27});
provinces[16] = new Province(16 , 2 , 537 , 296 , 2 , "Südeuropa" , new int[] {13 , 14 , 15 , 25 , 26 , 27});
// cID 3 - Suedamerika
provinces[17] = new Province(17 , 3 , 245 , 396 , 1 , "Venezuela" , new int[] {8 , 18 , 19});
@ -85,7 +81,7 @@ public class Map_World extends GeneralMap
provinces[23] = new Province(23 , 4 , 572 , 537 , 2 , "Zentralafrika" , new int[] {22 , 25 , 24});
provinces[24] = new Province(24 , 4 , 632 , 500 , 2 , "Ostafrika" , new int[] {21 , 22 , 25 , 23 , 26});
provinces[25] = new Province(25 , 4 , 491 , 444 , 1 , "Nordafrika" , new int[] {15 , 16 , 26 , 23 , 24});
provinces[26] = new Province(26 , 4 , 574 , 414 , 1 , "Aegypten" , new int[] {27 , 25 , 24 , 16});
provinces[26] = new Province(26 , 4 , 574 , 414 , 1 , "Ägypten" , new int[] {27 , 25 , 24 , 16});
// cID 5 - Asien
provinces[27] = new Province(27 , 5 , 664 , 345 , 2 , "Mittlerer Osten" , new int[] {24 , 26 , 16 , 23 , 31 , 28});
@ -108,5 +104,47 @@ public class Map_World extends GeneralMap
provinces[42] = new Province(42 , 6 , 934 , 628 , 1 , "West Australien" , new int[] {40 , 41 , 39});
initProvinces();
/*
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[] {0,1,2,2,1,2,1,1,0,1,0,1,2,2,0,1,2,4,2,1,1,2,0,2,0,2,2,3,2,3,2,3,0,1,1,2,1,4,1,3,0,1,2,4,0,2,2,4,1,2,1,1,2,1,0,3,0,3,0,4,2,1,1,1,1,1,0,2,1,2,2,1,1,2,1,4,1,3,0,4,2,1,0,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[] {0,1,2,3,2,3,2,2,2,2,2,3,1,2,0,2,1,2,2,2,1,3,2,2,1,3,0,3,0,3,0,3,2,2,3,2,1,4,1,4,0,1,0,2,0,5,0,3,1,2,3,3,3,1,3,2,1,2,1,2,3,1,1,1,3,5,2,2,2,2,2,2,3,1,3,1,3,4,3,1,0,2,3,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[] {2,1,0,2,3,2,1,2,1,2,1,2,1,4,3,1,1,2,3,1,3,3,2,1,0,4,0,2,2,3,0,2,1,3,3,2,3,5,3,3,1,2,2,5,2,3,0,2,2,3,2,2,1,3,4,2,4,3,4,3,0,3,0,3,3,1,4,1,4,1,4,2,2,2,3,2,4,2,0,2,4,4,4,2};
}
for(int i = 1; i < provinces.length; i++) {
Province p = provinces[i];
p.setOwner(dataL[(i-1)*2]);
p.setEntityCount(dataL[(i*2)-1]);
}
}
}

@ -4,8 +4,8 @@ import java.awt.Color;
/**
* Write a description of class Player here.
*
* @author (Genosse Betakevin und Genosse Julien)
* @version (version 666)
* @author (Genosse Betakevin und Genosse Julien und Genosse GruenerWal)
* @version 6.6.6-build2
*/
public class Player extends Actor
{
@ -22,6 +22,7 @@ public class Player extends Actor
int color;
int textsize;
int c;
public int active;
//definiert die ID und Namens Variable
public Player(int identity,String name, int c)
@ -47,6 +48,16 @@ public class Player extends Actor
return stars;
}
/**
* Gibt die Farbe des Spielers als int-Wert heraus.
* Wahnsinn, dass du dir den Scheiß hier grad durchliest.
* ~GruenerWal
*/
public int getColor()
{
return color;
}
// Von Felix: Methode nicht architektur-konform
/* // erhöht die Sternenzahl um eine random ausgewählte Anzahl von 1-3
@ -233,16 +244,31 @@ public class Player extends Actor
break;
case 3:
flag = new GreenfootImage("images\\GrueneArmee.jpg");
redraw(statistics,flag,textSize);
redrawArrow(statistics,flag,textSize);
break;
}
}
private void redraw(GreenfootImage statistics,GreenfootImage flag, int textSize)
private void redrawArrow(GreenfootImage statistics,GreenfootImage flag, int textSize)
{
// redraw(statistics,flag,textSize);
GreenfootImage Arrow = new GreenfootImage(137,120);
if(id == 0 || id == 1|| id == 2)
{
Arrow.setColor(Color.GRAY);
Arrow.fill();
Arrow.drawImage(statistics,0,0);
redraw(Arrow,flag,textSize);
}
else
{
redraw(statistics,flag,textSize);
}
}
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] + "||" +stats[3] + "||" + stats[4] + "||" + stats[5],textSize,new Color(0,0,0),new Color(1.0f,1.0f,1.0f,0.5f));

@ -5,7 +5,7 @@ import java.awt.Color;
* Write a description of class Province here.
*
* @author GruenerWal, Felix Stupp
* @version 0.0.2
* @version 1.1.0
*/
public class Province extends Actor
{
@ -22,7 +22,8 @@ public class Province extends Actor
private int xPos;
private int yPos;
private int eCount;
public int textSize;
private GreenfootImage province;
private boolean clicked = false;
/**
* Überprüft, ob die Provinz angeklickt wurde.
@ -171,63 +172,77 @@ public class Province extends Actor
public void redrawProvince(int ColorInt)
{
int textSize;
textSize = 20;
GreenfootImage province = new GreenfootImage(120,100);
GreenfootImage provinceName = new GreenfootImage(displayName,textSize,new Color(0,0,0),new Color(1.0f,1.0f,1.0f,0.5f));
int eCountTanks = eCount / 5;
GreenfootImage LenghtCalculate = new GreenfootImage((eCount / 5) + "x",textSize, new Color(0,0,0), new Color(0,0,0));
int lenght = LenghtCalculate.getWidth() + (textSize *3);
if(lenght < provinceName.getWidth())
{
province = new GreenfootImage(provinceName.getWidth(),2*textSize);
}
else
{
province = new GreenfootImage(lenght,2*textSize);
}
if(ColorInt ==1)
{
GreenfootImage provinceName = new GreenfootImage(displayName,textSize,new Color(0,0,0),new Color(1.0f,1.0f,1.0f,0.5f));
province.drawImage(provinceName,0,0);
setImage(province);
oDecide(province,textSize,owner,eCount);
}
if(ColorInt ==2)
{
GreenfootImage provinceName = new GreenfootImage(displayName,textSize,new Color(0,0,0),Color.GREEN);
provinceName = new GreenfootImage(displayName,textSize,new Color(0,0,0),Color.GREEN);
province.drawImage(provinceName,0,0);
setImage(province);
oDecide(province,textSize,owner,eCount);
}
if(ColorInt == 3)
{
GreenfootImage provinceName = new GreenfootImage(displayName,textSize,new Color(0,0,0),Color.RED);
provinceName = new GreenfootImage(displayName,textSize,new Color(0,0,0),Color.RED);
province.drawImage(provinceName,0,0);
setImage(province);
oDecide(province,textSize,owner,eCount);
}
}
/**
* Weist dem Owner der Provinz sein entsprechendes Color-Tag zu.
*/
public void oDecide(GreenfootImage province,int textSize, int owner, int eCount)
{
String ownerString;
if(owner == 0)
if(getWorld().getPlayerColor(owner) == 0)
{
ownerString = "schwarz";
eCalculate(province,ownerString,textSize);
}
else
{
switch(owner)
switch(getWorld().getPlayerColor(owner))
{
case 1:
ownerString = "schwarz";
eCalculate(province,ownerString,textSize);
break;
case 2:
ownerString = "rot";
ownerString = "blau";
eCalculate(province,ownerString,textSize);
break;
case 3:
ownerString = "blau";
ownerString = "gruen";
eCalculate(province,ownerString,textSize);
break;
case 4:
ownerString = "gelb";
ownerString = "rot";
eCalculate(province,ownerString,textSize);
break;
case 5:
ownerString = "gruen";
ownerString = "gelb";
eCalculate(province,ownerString,textSize);
break;
case 6:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Loading…
Cancel
Save