Seem to be having problems with this still.

It seems like every time I change a value in the main constructor objects
array, it also changes the array values in the copies.

Are these copies essentially just pointers to the same array?

Basically the reason I need copies is so it can simulate future moves in the
game by updating a copy of the game state arrays.

So essentially I need to create copies of these arrays that I can manipulate
without these manipulations affecting the arrays they were copied from.

I hope that makes sense

Thanks

Paul

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Mike Keesey
Sent: 02 November 2006 22:53
To: 'Flashcoders mailing list'
Subject: RE: [Flashcoders] Copy Constructor

I might do it like this:

class mypackage.Connect4State extends Object {
        public function Connect4State(state:Connect4State) {
                super();
                if (state instanceof Connect4State) {
                        copy(state);
                } else {
                        board = new Array();
                        score = new Array();
                        // Default initialization code.
                }
        }
        public function copy(state:Connect4State):Void {
                board = state.board.concat();
                score = state.score.concat();
        }
        public var board:Array;
        public var score:Array;
}

Then you could call the construct with or without a parameter.

(Actually, I would never use public variables, but that's another
topic....)
―
Mike Keesey

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:flashcoders-
> [EMAIL PROTECTED] On Behalf Of Paul Steven
> Sent: Thursday, November 02, 2006 2:31 PM
> To: 'Flashcoders mailing list'
> Subject: RE: [Flashcoders] Copy Constructor
> 
> Perhaps it is easier if I explain what I need:
> 
> I am rewriting some Java code into AS2.
> 
> Basically I have a class called Connect4State
> 
> class Connect4State {
> 
>       public function Connect4State() {
> 
>               //  -------------------------
>               // Initialize the board array
>               // --------------------------
> 
>               board = new Array();
> 
>               code goes here
> 
> 
>               // --------------------------
>               // Initialize the score array
>               // --------------------------
> 
>               score = new Array();
> 
>               code goes  here
>       }
> 
>       public var board:Array; // A 7 by 6 two dimensional array of
> integers representing the state of game
> 
>       public var score:Array; // A 2 dimensional array of integers
> representing the "score" for the players
> 
> }
> 
> The Java code has a function called a "Copy Constructor" that enables
you
> to
> create new objects that are copies of existing objects. The copy
> constructor
> for Connect4State just copies the contents of each member variable. It
is
> necessary to have a copy constructor for Connect4State because the AI
> algorithms use temporary state objects a great deal
> 
> This is the "copy constructor" code translated to AS2
> 
>       public function Connect4State(state:Connect4State) {
> 
>               // --------------
>               // Copy the board
>               // --------------
> 
>               board = new Array();
> 
>               for (var i:Number = 0; i < 7; i++) {
> 
>                       board[i] = new Array();
> 
>                       for (j:Number = 0; j < 6; j++) {
> 
>                                       board[i][j] = state.board[i][j];
> 
>                       }
> 
>               }
> 
> 
>               // ---------------
>               // Copy the scores
>               // ---------------
> 
>               for (var i:Number = 0; i < 2; i++) {
> 
>                       score = new Array();
> 
>                       for (var j:Number = 0; j < winPlaces; j++) {
> 
>                               score[i][j] = state.score[i][j];
>                               numPieces = state.numPieces;
>                       }
> 
>               }
> 
> 
>       }
> 
> AS2 seems not to like this as I get the following error
> 
> A class must have only one constructor.
>       public function Connect4State(state:Connect4State)
> 
> Anyone suggest an alternative to this "Copy Constructor"?
> 
> 
> 
> 
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Paul
> Steven
> Sent: 02 November 2006 20:01
> To: 'Flashcoders mailing list'
> Subject: [Flashcoders] Copy Constructor
> 
> Hi there
> 
> Is there an equivalent of the Java Copy constructor in Flash AS2?
> 
> Thanks
> 
> Paul
> 
> _______________________________________________
> Flashcoders@chattyfig.figleaf.com
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> 
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com
> http://training.figleaf.com
> 
> _______________________________________________
> Flashcoders@chattyfig.figleaf.com
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> 
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com
> http://training.figleaf.com

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to