@ -1,10 +1,3 @@
/ *
Hinweis zum Verbleib der Klasse :
Diese Klasse wird nach ihrer Fertigstellung in die GeneralMap integriert .
Dabei wird der Code der act ( ) - Methode innerhalb einer If - Abfrage bei bestimmten States ausgef ü hrt .
Sonstige Methoden werden im Original belassen , sofern keine Ü berschneidungen bei den Bezeichnern vorhanden sind .
* /
import greenfoot.* ; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import greenfoot.MouseInfo.* ;
import javax.swing.JOptionPane ;
@ -13,56 +6,90 @@ import javax.swing.JOptionPane;
* Schubst Einheiten umher .
*
* @author MaxiJohl , GruenerWal
* @version 0. 1.1
* @version 0. 3.0
* /
public class ArmySchubser extends Map_World
{
{
static Province savedProvince = null ;
/ * *
* Constructor for objects of class ArmySchubser.
* Konstruktor f ü r ArmySchubser.
*
* NICHT BENUTZEN !
* S ä mtliche ben ö tigten Methoden sind static !
* /
public ArmySchubser ( String [ ] playerList , int [ ] colorList )
{
super ( playerList , colorList ) ;
// Hi.
}
public void act ( )
/ * *
* Nimmt zwei Provinzen entgegen , und fragt , wieviele Einheiten vom ersten zum zweiten Eintrag verschoben werden sollen .
* Ü berpr ü ft , ob eine Verschiebung m ö glich ist und f ü hrt sie bei Erfolg aus .
* /
public static void moveEntities ( Province sourceProvince , Province destinationProvince )
{
Province firstProvince = null ;
Province secondProvince = null ;
String toMoveString = JOptionPane . showInputDialog ( null , "Wieviele Einheiten willst du verschieben?" ) ;
Integer entitiesToMove = Integer . valueOf ( toMoveString ) ;
for ( int i = 1 ; i < = provinceCount ; i + + )
if ( ( sourceProvince . getEntityCount ( ) - entitiesToMove ) > 0 )
{
if ( provinces [ i ] . hasClicked ( ) = = true )
{
provinces [ i ] = firstProvince ;
break ;
}
sourceProvince . removeFromEntities ( entitiesToMove ) ;
destinationProvince . addToEntities ( entitiesToMove ) ;
}
for ( int i = 1 ; i < = provinceCount ; i + + )
if ( ( sourceProvince . getEntityCount ( ) - entitiesToMove ) < = 0 )
{
if ( provinces [ i ] . hasClicked ( ) = = true & & provinces [ i ] ! = firstProvince )
{
provinces [ i ] = secondProvince ;
break ;
}
JOptionPane . showMessageDialog ( null , "Du hast nicht genügend Einheiten, um die gewünschte Anzahl von " + sourceProvince . getDisplayName ( ) + " nach " + destinationProvince . getDisplayName ( ) + " zu verschieben, Köhler." ) ;
}
}
String toMove = JOptionPane . showInputDialog ( null , "Wieviele Einheiten willst du verschieben?" ) ;
Integer entitiesToMove = Integer . valueOf ( toMove ) ;
if ( ( firstProvince . getEntityCount ( ) - entitiesToMove ) > 0 & & firstProvince . isProvinceNear ( secondProvince . getID ( ) ) = = true )
/ * *
* Speichert ein gegebene Provinz als savedProvince ein , insofern dieser Platz nicht bereits belegt ist .
* Ist er das , so wird ü berpr ü ft , ob eine neue , an savedProvince angrenzende Provinz angeklickt wurde .
* Ist dies der Fall , werden beide Provinzen an moveEntities ü bergeben .
* /
public static void useProvincesToMove ( Province givenProvince )
{
if ( savedProvince = = null )
{
firstProvince . removeFromEntities ( entitiesToMove ) ;
secondProvince . addToEntities ( entitiesToMove ) ;
savedProvince = givenProvince ;
}
else
if ( savedProvinc e ! = nu ll & & givenProvince ! = sav edProvince)
{
System . out . println ( "Du hast nicht genügend Einheiten, um die gewünschte Anzahl von " + firstProvince . getDisplayName ( ) + " nach " + secondProvince . getDisplayName ( ) + " zu verschieben, Köhler." ) ;
if ( givenProvince . isProvinceNear ( savedProvince . getID ( ) ) = = true )
{
moveEntities ( savedProvince , givenProvince ) ;
}
else
{
savedProvince = null ;
}
}
}
/ * *
* Ü berpr ü ft , ob eine Provinz angeklickt wurde .
* Wenn ja , wird diese als clickedProvince eingespeichert und useProvincesToMove aufgerufen .
*
* Kommt nachher in die GeneralMap !
* /
public void act ( )
{
Province clickedProvince = null ;
for ( int i = 1 ; i < = provinceCount ; i + + )
{
if ( provinces [ i ] . hasClicked ( ) = = true )
{
clickedProvince = provinces [ i ] ;
useProvincesToMove ( clickedProvince ) ;
break ;
}
}
}
}