Print

Print


Hi Randy,

I'm a bit unsure if it helps you, but you can simply subclass RectanglePortrayal2D directly with CoordinationPlayers, something like the following code (haven't tested).

This way you'll have a color variable (called paint) by default.
public class CoordinationPlayer
        extends RectanglePortrayal2D
        implements Steppable {

    private static final double DIAMETER = 6.0;
   
    public CoordinationPlayer() {
        super(DIAMETER);
        paint = (random.nextInt(2) == 0) ? Color.RED : Color.YELLOW;
    }

    ...
}
This way you don't need the magic in the setupPortroyals() function.

HTH,
Richard
--
Richard O. Legendi
Software developer
Intelligent Applications and Web Services
AITIA International, Inc. 
http://people.inf.elte.hu/legendi/
On 2012.03.19. 14:53, Randolph Latimer wrote:
[log in to unmask]" type="cite">I'm starting out again with Mason and will appreciate some help with what I expect are fairly simple questions.

I'm transferring a Coordination Game model from Ascape to Mason.
The Ascape code is described here, if anyone's interested -
http://ascape.sourceforge.net/manual/Section3.html

In Mason, I'm using the Schoolyard model as a starter.
In Coordination Game, each agent needs a variable for its color.
I'm trying something like this (I don't think I'm implementing Mason SimpleColorMap correctly):

public class CoordinationPlayer implements Steppable
{
    //public static final double MAX_FORCE = 3.0;
    protected SimpleColorMap colormap = new SimpleColorMap(0,1,Color.black,Color.white);
    public Color color;
    public  MersenneTwisterFast random = new MersenneTwisterFast();

    public CoordinationPlayer()
    {
        if (random.nextInt(2) == 0)
            color = Color.red;// colormap.getColor(.2);
        else color = Color.yellow; //colormap.getColor(.7);
    }

    public Color getColor()
    {
         return color;
    }

In CoordinationGameWithUI, - the color is displayed here, in this hybrid code from the Schoolyard model.
I'm trying to set the color with setPortryalForClass, where each class object has its own color.
This isn't working correctly:

    public void setupPortrayals()
    {
        CoordinationPlayers students = (CoordinationPlayers) state;

        yardgridPortrayal.setField(students.yardgrid);
I'M TRYING TO SET THE COLOR HERE:
        yardgridPortrayal.setPortrayalForClass(CoordinationPlayer.class,
                     new RectanglePortrayal2D(CoordinationPlayer.getColor(),true)); //new
                                                 RectanglePortrayal2D(Color.red,true));
        yardgridPortrayal.setPortrayalForNull(new RectanglePortrayal2D(Color.blue,true));


Thanks for any help -
Randy Latimer