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

@ -1,4 +1,6 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
import javax.swing.JOptionPane;
/** /**
* Write a description of class Colors here. * 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 lila = new Button ("Lila", 16, this);
Button gelb = new Button ("Gelb", 16, this); Button gelb = new Button ("Gelb", 16, this);
Button weiter = new Button ("Weiter", 16, this); Button weiter = new Button ("Weiter", 16, this);
int [] color = new int [6]; int[] color = new int [5];
String [] pn = new String [6]; String[] pn = new String [5];
int x = 0; int x = 0;
boolean possw = true; boolean possw = true; // schwarz
boolean posbl = true; boolean posbl = true; // blau
boolean posgr = true; boolean posgr = true; // gruen
boolean posrt = true; boolean posrt = true; // rot
boolean posgb = true; boolean posgb = true; // gelb
boolean posli = true; boolean posli = true; // lila
int sw = 1; int sw = 1;
int bl = 2; int bl = 2;
int gr = 3; int gr = 3;
@ -31,30 +33,58 @@ public class Colours extends World implements ButtonEvent
int gb = 5; int gb = 5;
int li = 6; 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. * Constructor for objects of class Colors.
* *
*/ */
public Colours(int x, int y, int z) public Colours(int x, int y, int z)
{ {
super(x, y, z); super(x, y, z);
setBackground(Start_Load.backgroundImage); 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 ein Farbbutton geklickt wurde
//Überprüft, ob die Farbe noch nicht ausgewählt 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 //der per Konstruktor die Daten der Colorklasse übertragen werden, dannach wird die Map die aktive Welt
public void buttonClicked (Button b) public void buttonClicked (Button b)
{ {
if ( b == schwarz && possw == true) if (x < 5) {
{ if (b == schwarz && possw == true) {
color[x] = sw; color[x] = sw;
pn[x]="Schwarz"; pn[x]=getName(x,"Schwarz");
if(pn[x].length() > 0) {
x+=1; x+=1;
possw = false; possw = false;
} }
if (b == blau && posbl == true) } else if (b == blau && posbl == true) {
{
color[x] = bl; color[x] = bl;
pn[x] = "Blau"; pn[x]=getName(x,"Blau");
if(pn[x].length() > 0) {
x+=1; x+=1;
posbl = false; posbl = false;
} }
if (b == grün && posgr == true ) } else if (b == grün && posgr == true ) {
{
color[x] = gr; color[x] = gr;
pn[x]="Grün"; pn[x]=getName(x,"Grün");
if(pn[x].length() > 0) {
x+=1; x+=1;
posgr = false; posgr = false;
} }
if ( b == rot && posrt == true) } else if (b == rot && posrt == true) {
{
color[x] = rt; color[x] = rt;
pn[x]="Rot"; pn[x]=getName(x,"Rot");
if(pn[x].length() > 0) {
x+=1; x+=1;
posrt = false; posrt = false;
} }
if ( b == gelb && posgb == true) } else if (b == gelb && posgb == true) {
{
color [x] = gb; color [x] = gb;
pn[x]="Gelb"; pn[x]=getName(x,"Gelb");
if(pn[x].length() > 0) {
x+=1; x+=1;
posgb = false; posgb = false;
} }
if ( b == lila && posli == true) } else if (b == lila && posli == true) {
{
color [x] = li; color [x] = li;
pn[x]="Lila"; pn[x]=getName(x,"Lila");
if(pn[x].length() > 0) {
x+=1; x+=1;
posli = false; 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]; String[] newpn = new String[x];
int[] newcolor = new int[x]; int[] newcolor = new int[x];
@ -122,13 +160,57 @@ public class Colours extends World implements ButtonEvent
{ {
newpn[i] = pn[i]; newpn[i] = pn[i];
newcolor[i] = color[i]; newcolor[i] = color[i];
} }
World m = new Map(newcolor,x,newpn); World m = new Map(newcolor,x,newpn);
Greenfoot.setWorld(m); 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() { public Debug4() {
super( super(
new String[] {"Spieler Nr. 1", "Player No. 2", "Spieler Nr. 3","Player No. 4"}, 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() { public Debug5() {
super( super(
new String[] {"Spieler Nr. 1", "Player No. 2", "Spieler Nr. 3", "Player No. 4", "Spieler Nr. 5"}, 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) * @author (your name)
* @version (a version number or a date) * @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 * 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) public int[] dice_defender(int troupNumberDefender)
{ {
diceEyesDefender = new int[2];
if(troupNumberDefender == 1) if(troupNumberDefender == 1)
{ {
diceEyesDefender[0] = (int) (Math.random() * 6 +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) * @author (your name)
* @version (a version number or a date) * @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 * 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) public int[] dice_offender(int troupNumberOffender)
{ {
diceEyesOffender = new int[3];
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!");

@ -1,15 +1,17 @@
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 java.util.Arrays;
import java.awt.Color;
import greenfoot.MouseInfo.*; import greenfoot.MouseInfo.*;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import java.awt.Color;
/** /**
Oberklasse für verschiedene Maps; Oberklasse für verschiedene Maps;
neue Maps werden als Unterklasse dieser Klasse eingefügt. neue Maps werden als Unterklasse dieser Klasse eingefügt.
@author GruenerWal, MaxiJohl, Felix Stupp @author GruenerWal, MaxiJohl, Felix Stupp, Samuel
@version 0.3.0 @version 0.3.0
*/ */
public abstract class GeneralMap extends World implements ButtonEvent 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 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); Button modus = new Button("Kampf\nbeginnen",25,this);
private final int X_OFFSET = 200; // Verschiebt die Provinzen nach rechts 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. 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; private final double SCALE_VALUE = 1;
protected enum GameStates { protected enum GameStates {
SETZEN,
KAMPF, KAMPF,
VERSCHIEBEN, VERSCHIEBEN
SETZEN
} }
protected Province[] provinces; protected Province[] provinces;
@ -40,20 +42,11 @@ public abstract class GeneralMap extends World implements ButtonEvent
protected Player[] players; protected Player[] players;
protected int currentPlayer = 0; protected int currentPlayer = 0;
protected GameStates status = GameStates.VERSCHIEBEN; protected GameStates status = GameStates.SETZEN;
protected int provinceCount; protected int provinceCount;
protected int armyMinimum; 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.
@ -64,6 +57,9 @@ public abstract class GeneralMap extends World implements ButtonEvent
{ {
super(1600,900,1); super(1600,900,1);
players = new Player[playerList.length]; players = new Player[playerList.length];
modus.setSize(100,100);
modus.setBackColor(Color.white);
modus.setForeColor(Color.black);
addObject( modus, 1500, 808); 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]);
@ -73,6 +69,47 @@ public abstract class GeneralMap extends World implements ButtonEvent
createPlayerObjects(playerList.length); 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) private void createPlayerObjects(int playerCount)
{ {
if(playerCount > 6) { if(playerCount > 6) {
@ -100,312 +137,6 @@ public abstract class GeneralMap extends World implements ButtonEvent
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[] {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() { public void act() {
if(status == GameStates.KAMPF) { if (status == GameStates.SETZEN) {
if(offenderProvince == null) { actPlace();
OffenderProvince(); } else if(status == GameStates.KAMPF) {
} else { actFight();
defenderProvince();
}
} else if (status == GameStates.VERSCHIEBEN) { } else if (status == GameStates.VERSCHIEBEN) {
Province clickedProvince; actMove();
for ( int i = 1; i <= (provinces.length - 1); i++) {
if (provinces[i].hasClicked() == true) {
clickedProvince = provinces[i];
useProvincesToMove(clickedProvince);
break;
}
}
} }
redrawGameStates();
} }
/** /**
@ -443,6 +166,15 @@ public abstract class GeneralMap extends World implements ButtonEvent
return players.length; 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. Gibt den Namen des aktuellen Spielers aus.
@return Der Name des aktuellen Spielers @return Der Name des aktuellen Spielers
@ -512,29 +244,30 @@ public abstract class GeneralMap extends World implements ButtonEvent
return c; return c;
} }
public void buttonClicked(Button b) { private void resetClicked() {
if(status == GameStates.KAMPF) { for(int i = 1; i <= (provinces.length - 1); i++) {
status = GameStates.VERSCHIEBEN; provinces[i].hasClicked();
} else if(status == GameStates.VERSCHIEBEN) {
status = GameStates.KAMPF;
currentPlayer++;
if(currentPlayer >= players.length) {
currentPlayer = 0;
} }
} }
if ( modus == b && status==GameStates.SETZEN)
{ public void buttonClicked(Button b) {
if ( modus == b ) {
if(status==GameStates.SETZEN && freeArmies == 0 ) {
status=GameStates.KAMPF; status=GameStates.KAMPF;
modus.setText("Kampf beenden"); offenderProvince = null;
} defenderProvince = null;
if ( modus == b && status== GameStates.KAMPF) maxDiceOffender = "";
{ maxDiceDefender = "";
modus.setBackColor(Color.white);
modus.setForeColor(Color.black);
modus.setText("Kampf\nbeenden");
} else if (status==GameStates.KAMPF) {
status=GameStates.VERSCHIEBEN; status=GameStates.VERSCHIEBEN;
modus.setText("Nächster Spieler"); savedProvince = null;
} modus.setText("Nächster\nSpieler");
if ( modus == b && status==GameStates.VERSCHIEBEN) } else if (status==GameStates.VERSCHIEBEN) {
{ freeArmies = -1;
if( currentPlayer== players.length-1) if(currentPlayer >= players.length-1)
{ {
currentPlayer=0; currentPlayer=0;
} }
@ -543,45 +276,68 @@ public abstract class GeneralMap extends World implements ButtonEvent
currentPlayer+=1; currentPlayer+=1;
} }
status=GameStates.SETZEN; status=GameStates.SETZEN;
modus.setText("Kampf beginnen"); modus.setText("Kampf\nbeginnen");
}
} }
} }
// Kampfsystem // Kampfsystem
private void OffenderProvince() Province offenderProvince;
{ Province defenderProvince;
for ( int i = 1; i <= (provinces.length - 1); i++) String maxDiceOffender = "";
{ String maxDiceDefender = "";
if (provinces[i].hasClicked() == true)
{ private void actFight() {
offenderProvince = provinces[i]; for(int i = 1; i <= (provinces.length - 1); i++) {
provinces[i].redrawProvince(2); if (provinces[i].hasClicked() == true) {
// System.out.println("Die Provinz " + provinces[i].getDisplayName() + " wurde als angreifende Provinz ausgewählt! Sie gehört Spieler" + provinces[i].getOwner()); 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) if(p.getEntityCount() > 1) {
{ if(offenderProvince != null) {
defenderProvince = provinces[i]; offenderProvince.redrawProvince();
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()); 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(); 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() 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(); Dice_Offender diceOffender = new Dice_Offender();
// System.out.println("Der Angreifer ereichte folgende Würfelzahlen:"); // System.out.println("Der Angreifer ereichte folgende Würfelzahlen:");
int[] maxDiceOffenderArray = diceOffender.dice_offender(offenderProvince.getEntityCount()); int[] maxDiceOffenderArray = diceOffender.dice_offender(offenderProvince.getEntityCount());
@ -590,79 +346,90 @@ public abstract class GeneralMap extends World implements ButtonEvent
int[] maxDiceDefenderArray = diceDefender.dice_defender(defenderProvince.getEntityCount()); int[] maxDiceDefenderArray = diceDefender.dice_defender(defenderProvince.getEntityCount());
Arrays.sort(maxDiceOffenderArray); Arrays.sort(maxDiceOffenderArray);
Arrays.sort(maxDiceDefenderArray); Arrays.sort(maxDiceDefenderArray);
maxDiceOffender = "";
for(int i = 0;i<3;i++) for(int i = 0;i<3;i++)
{ {
if(maxDiceOffenderArray[i] != 0) {
if(i == 0) if(i == 0)
{ {
maxDiceOffender = "" + maxDiceOffenderArray[i]; maxDiceOffender = "" + maxDiceOffenderArray[i];
} }
else else
{ {
maxDiceOffender = maxDiceOffender + ";" + maxDiceOffenderArray[i]; maxDiceOffender = maxDiceOffender + ", " + maxDiceOffenderArray[i];
}
} }
} }
maxDiceDefender = "";
for(int i = 0;i<2;i++) for(int i = 0;i<2;i++)
{ {
if(maxDiceDefenderArray[i] != 0) {
if(i == 0) if(i == 0)
{ {
maxDiceDefender = "" + maxDiceDefenderArray[i]; maxDiceDefender = "" + maxDiceDefenderArray[i];
} }
else else
{ {
maxDiceDefender = maxDiceDefender + ";" + maxDiceDefenderArray[i]; 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); }
JOptionPane.showMessageDialog(null,"Es wurde gewürfelt. Der Angreifer erreichte folgende Würfelzahlen: " + maxDiceOffender + "\nDer Verteidiger erreichte diese Würfelzahlen: " + maxDiceDefender);
diceOffender = null; diceOffender = null;
diceDefender = null; diceDefender = null;
decider(maxDiceOffenderArray, maxDiceDefenderArray); decider(maxDiceOffenderArray, maxDiceDefenderArray);
} }
// berechnet Zahlen und findet Gewinner; führt Konsequenz aus
private void decider(int[] maxDiceOffender, int [] maxDiceDefender) private void decider(int[] maxDiceOffender, int [] maxDiceDefender)
{ {
int maxDefender = maxDiceDefender[1]; int maxDefender = maxDiceDefender[1];
int maxOffender = maxDiceOffender[2]; int maxOffender = maxDiceOffender[2];
if (maxOffender > maxDefender && defenderProvince.getEntityCount()>1) if (maxOffender > maxDefender)
{ {
int EntitiesOffender = offenderProvince.getEntityCount(); defenderProvince.removeFromEntities(1);
int EntitiesDefender = defenderProvince.getEntityCount(); if (defenderProvince.getEntityCount() <= 0) {
defenderProvince.setEntityCount(EntitiesDefender - 1); defenderProvince.setOwner(offenderProvince.getOwner());
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"); 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) if (maxOffender < maxDefender && offenderProvince.getEntityCount()>1)
{ {
int EntitiesOffender = offenderProvince.getEntityCount(); offenderProvince.removeFromEntities(1);
int EntitiesDefender = defenderProvince.getEntityCount(); 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.");
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) if (maxOffender == maxDefender && offenderProvince.getEntityCount()>1)
{ {
int EntitiesOffender = offenderProvince.getEntityCount(); offenderProvince.removeFromEntities(1);
int EntitiesDefender = defenderProvince.getEntityCount(); 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.");
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) offenderProvince.redrawProvince();
{ defenderProvince.redrawProvince();
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; offenderProvince = null;
defenderProvince = null; defenderProvince = null;
} }
// Einheiten verschieben // 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. Nimmt zwei Provinzen entgegen, und fragt, wieviele Einheiten vom ersten zum zweiten Eintrag verschoben werden sollen.
Überprüft, ob eine Verschiebung möglich ist und führt sie bei Erfolg aus. Überprüft, ob eine Verschiebung möglich ist und führt sie bei Erfolg aus.
@ -697,19 +464,143 @@ public abstract class GeneralMap extends World implements ButtonEvent
*/ */
private void useProvincesToMove(Province givenProvince) private void useProvincesToMove(Province givenProvince)
{ {
if(givenProvince.getOwner() != currentPlayer) {
return;
}
if (savedProvince == null) if (savedProvince == null)
{ {
savedProvince = givenProvince; savedProvince = givenProvince;
givenProvince.redrawProvince(2);
} }
else if ((savedProvince != null) && (givenProvince != savedProvince))
else if ((savedProvince != null) && (givenProvince != savedProvince) && (savedProvince.getOwner() == givenProvince.getOwner()) && (savedProvince.getOwner() == currentPlayer) )
{ {
if (givenProvince.isProvinceNear(savedProvince.getID()) == true) if (givenProvince.isProvinceNear(savedProvince.getID()) == true)
{ {
moveEntities(savedProvince,givenProvince); moveEntities(savedProvince,givenProvince);
} }
savedProvince.redrawProvince();
savedProvince = null; 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() { public void redraw() {
GreenfootImage tI = new GreenfootImage(text,textSize,foreC,backC); 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) { if(autoSize) {
sx = tI.getWidth(); sx = tI.getWidth();
sy = tI.getHeight(); sy = tI.getHeight();

@ -10,15 +10,11 @@ Klasse der Standard-Welt
public class Map_World extends GeneralMap public class Map_World extends GeneralMap
{ {
/**
Anzahl der Provinzen.
*/
/** /**
Konstruktor der Weltkarte; Konstruktor der Weltkarte;
konstruiert eine GeneralMap mit den Ausmassen 1600 auf 900 Pixel. konstruiert eine GeneralMap mit den Ausmassen 1600 auf 900 Pixel.
*/ */
public Map_World(String[] playerList, int[] colorList) public Map_World(String[] playerList, int[] colorList)
{ {
super(playerList,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[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[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[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 // cID 2 - Europa
provinces[10] = new Province(10 , 2 , 454 , 142 , 1 , "Island" , new int[] {9 , 11 , 12}); 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[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[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[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[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 // cID 3 - Suedamerika
provinces[17] = new Province(17 , 3 , 245 , 396 , 1 , "Venezuela" , new int[] {8 , 18 , 19}); 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[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[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[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 // cID 5 - Asien
provinces[27] = new Province(27 , 5 , 664 , 345 , 2 , "Mittlerer Osten" , new int[] {24 , 26 , 16 , 23 , 31 , 28}); 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}); provinces[42] = new Province(42 , 6 , 934 , 628 , 1 , "West Australien" , new int[] {40 , 41 , 39});
initProvinces(); 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. * Write a description of class Player here.
* *
* @author (Genosse Betakevin und Genosse Julien) * @author (Genosse Betakevin und Genosse Julien und Genosse GruenerWal)
* @version (version 666) * @version 6.6.6-build2
*/ */
public class Player extends Actor public class Player extends Actor
{ {
@ -22,6 +22,7 @@ public class Player extends Actor
int color; int color;
int textsize; int textsize;
int c; int c;
public int active;
//definiert die ID und Namens Variable //definiert die ID und Namens Variable
public Player(int identity,String name, int c) public Player(int identity,String name, int c)
@ -47,6 +48,16 @@ public class Player extends Actor
return stars; 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 // Von Felix: Methode nicht architektur-konform
/* // 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
@ -233,16 +244,31 @@ public class Player extends Actor
break; break;
case 3: case 3:
flag = new GreenfootImage("images\\GrueneArmee.jpg"); flag = new GreenfootImage("images\\GrueneArmee.jpg");
redrawArrow(statistics,flag,textSize);
redraw(statistics,flag,textSize);
break; 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); flag.scale(137,83);
statistics.drawImage(flag,0,textSize); 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)); 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. * Write a description of class Province here.
* *
* @author GruenerWal, Felix Stupp * @author GruenerWal, Felix Stupp
* @version 0.0.2 * @version 1.1.0
*/ */
public class Province extends Actor public class Province extends Actor
{ {
@ -22,7 +22,8 @@ public class Province extends Actor
private int xPos; private int xPos;
private int yPos; private int yPos;
private int eCount; private int eCount;
public int textSize;
private GreenfootImage province;
private boolean clicked = false; private boolean clicked = false;
/** /**
* Überprüft, ob die Provinz angeklickt wurde. * Überprüft, ob die Provinz angeklickt wurde.
@ -171,63 +172,77 @@ public class Province extends Actor
public void redrawProvince(int ColorInt) public void redrawProvince(int ColorInt)
{ {
int textSize;
textSize = 20; 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) 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); province.drawImage(provinceName,0,0);
setImage(province); setImage(province);
oDecide(province,textSize,owner,eCount); oDecide(province,textSize,owner,eCount);
} }
if(ColorInt ==2) 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); province.drawImage(provinceName,0,0);
setImage(province); setImage(province);
oDecide(province,textSize,owner,eCount); oDecide(province,textSize,owner,eCount);
} }
if(ColorInt == 3) 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); province.drawImage(provinceName,0,0);
setImage(province); setImage(province);
oDecide(province,textSize,owner,eCount); 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) public void oDecide(GreenfootImage province,int textSize, int owner, int eCount)
{ {
String ownerString; String ownerString;
if(owner == 0) if(getWorld().getPlayerColor(owner) == 0)
{ {
ownerString = "schwarz"; ownerString = "schwarz";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
} }
else else
{ {
switch(owner) switch(getWorld().getPlayerColor(owner))
{ {
case 1: case 1:
ownerString = "schwarz"; ownerString = "schwarz";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 2: case 2:
ownerString = "rot"; ownerString = "blau";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 3: case 3:
ownerString = "blau"; ownerString = "gruen";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 4: case 4:
ownerString = "gelb"; ownerString = "rot";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 5: case 5:
ownerString = "gruen"; ownerString = "gelb";
eCalculate(province,ownerString,textSize); eCalculate(province,ownerString,textSize);
break; break;
case 6: 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