[Freeciv-Dev] Re: [RFC] Move cost map interface
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
On Thu, Apr 25, 2002 at 06:10:51PM +0100, Gregory Berkolaiko wrote:
> I have no major complaints. However I expect big arguments when it comes
> to implementation. Also, I don't think I can spend much time on it until
> late May.
I played a little with my current implementation and
> On Wed, 24 Apr 2002, Raimar Falke wrote:
>
> > On Tue, Apr 16, 2002 at 09:57:39AM +0200, Raimar Falke wrote:
> > > Attached a version which have the requested changes. You would want to
> > > wrap an int in the void *.
> >
> > And now version 8. Changes:
> > - added move_backward flag
>
> right.
> I still think that it's better to have one map_type enum instead of three
> different flags, but it's not important.
> > - added move_expended array
>
> The information given by
> moves_expended, initial_moves
> and by
> turn, move_left
> is equivalent.
I currently think that this is wrong. I get (where "cost" is the total
sum of all BMC i.e. move_expended). "turns" is the number of turns we
need to reach the given pos and "moves_left" the moves left at the
final position.
2: stimulate_pf: MARK: (39, 39) cost=0, turns=0, moves_left=6
So we start with at (39,39) with 6 moves left. And then iterate
yielding:
2: stimulate_pf: MARK: (38, 40) cost=3, turns=0, moves_left=3
2: stimulate_pf: MARK: (40, 39) cost=3, turns=0, moves_left=3
2: stimulate_pf: MARK: (38, 39) cost=3, turns=0, moves_left=3
2: stimulate_pf: MARK: (40, 38) cost=3, turns=0, moves_left=3
2: stimulate_pf: MARK: (39, 38) cost=3, turns=0, moves_left=3
2: stimulate_pf: MARK: (38, 37) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (40, 37) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (39, 37) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (41, 40) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (41, 39) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (39, 41) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (38, 41) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (37, 41) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (37, 40) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (37, 39) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (40, 40) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (39, 40) cost=6, turns=0, moves_left=0
2: stimulate_pf: MARK: (38, 38) cost=9, turns=0, moves_left=0
2: stimulate_pf: MARK: (36, 41) cost=7, turns=1, moves_left=5
2: stimulate_pf: MARK: (38, 36) cost=7, turns=1, moves_left=5
2: stimulate_pf: MARK: (37, 42) cost=7, turns=1, moves_left=5
2: stimulate_pf: MARK: (38, 35) cost=8, turns=1, moves_left=4
2: stimulate_pf: MARK: (36, 40) cost=8, turns=1, moves_left=4
2: stimulate_pf: MARK: (38, 34) cost=9, turns=1, moves_left=3
2: stimulate_pf: MARK: (36, 38) cost=9, turns=1, moves_left=3
Detail on this "normal" path which costs 9:
2: PF: consists of 4 positions:
2: PF: 0/4: (39,39) (t=0,p=6) dir=SW
2: PF: 1/4: (38,40) (t=0,p=3) dir=NW
2: PF: 2/4: (37,39) (t=0,p=0) dir=NW
2: PF: 3/4: (36,38) (t=1,p=3) dir=[Bad Direction]
2: stimulate_pf: MARK: (36, 39) cost=9, turns=1, moves_left=3
2: stimulate_pf: MARK: (36, 42) cost=9, turns=1, moves_left=3
2: stimulate_pf: MARK: (41, 41) cost=9, turns=1, moves_left=3
2: stimulate_pf: MARK: (41, 36) cost=9, turns=1, moves_left=3
2: stimulate_pf: MARK: (40, 36) cost=9, turns=1, moves_left=3
2: stimulate_pf: MARK: (39, 36) cost=9, turns=1, moves_left=3
2: stimulate_pf: MARK: (37, 36) cost=9, turns=1, moves_left=3
2: stimulate_pf: MARK: (35, 40) cost=9, turns=1, moves_left=3
2: stimulate_pf: MARK: (36, 43) cost=10, turns=1, moves_left=2
2: stimulate_pf: MARK: (39, 35) cost=10, turns=1, moves_left=2
2: stimulate_pf: MARK: (37, 35) cost=10, turns=1, moves_left=2
2: stimulate_pf: MARK: (35, 42) cost=10, turns=1, moves_left=2
2: stimulate_pf: MARK: (35, 41) cost=10, turns=1, moves_left=2
2: stimulate_pf: MARK: (39, 34) cost=10, turns=1, moves_left=2
2: stimulate_pf: MARK: (35, 39) cost=10, turns=1, moves_left=2
2: stimulate_pf: MARK: (37, 34) cost=11, turns=1, moves_left=1
2: stimulate_pf: MARK: (39, 33) cost=11, turns=1, moves_left=1
2: stimulate_pf: MARK: (40, 34) cost=11, turns=1, moves_left=1
2: stimulate_pf: MARK: (39, 32) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (34, 41) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (34, 40) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (34, 39) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (36, 36) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (36, 35) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (42, 36) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (42, 35) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (41, 35) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (40, 35) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (35, 43) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (35, 38) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (36, 37) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (35, 37) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (38, 33) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (40, 41) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (37, 37) cost=12, turns=1, moves_left=0
2: stimulate_pf: MARK: (37, 38) cost=9, turns=1, moves_left=0
This one is odd. Lets look at the details:
2: PF: consists of 3 positions:
2: PF: 0/3: (39,39) (t=0,p=6) dir=W
2: PF: 1/3: (38,39) (t=0,p=3) dir=NW
2: PF: 2/3: (37,38) (t=1,p=0) dir=[Bad Direction]
The first step (((39,39) -> (38,39)) costs 3 and the second ((38,39)
-> (37,38)) costs 6 points. So the unit has to wait at (38,39) to
recharge the points and after the step it has 0 points.
So either I'm completely wrong or you can't extract the turns and
moves_left info from the cost field.
2: stimulate_pf: MARK: (35, 44) cost=13, turns=2, moves_left=5
2: stimulate_pf: MARK: (34, 36) cost=15, turns=2, moves_left=3
2: stimulate_pf: MARK: (34, 37) cost=15, turns=2, moves_left=3
2: stimulate_pf: MARK: (35, 36) cost=15, turns=2, moves_left=3
2: stimulate_pf: MARK: (35, 35) cost=15, turns=2, moves_left=3
2: stimulate_pf: MARK: (33, 39) cost=15, turns=2, moves_left=3
2: stimulate_pf: MARK: (33, 42) cost=15, turns=2, moves_left=3
2: stimulate_pf: MARK: (33, 41) cost=15, turns=2, moves_left=3
2: stimulate_pf: MARK: (33, 40) cost=15, turns=2, moves_left=3
2: stimulate_pf: MARK: (40, 31) cost=15, turns=2, moves_left=3
2: stimulate_pf: MARK: (41, 34) cost=14, turns=2, moves_left=3
2: stimulate_pf: MARK: (41, 33) cost=14, turns=2, moves_left=3
2: stimulate_pf: MARK: (40, 32) cost=14, turns=2, moves_left=3
2: stimulate_pf: MARK: (40, 33) cost=13, turns=2, moves_left=3
2: stimulate_pf: MARK: (34, 43) cost=13, turns=2, moves_left=3
2: stimulate_pf: MARK: (34, 42) cost=13, turns=2, moves_left=3
2: stimulate_pf: MARK: (36, 44) cost=13, turns=2, moves_left=3
2: stimulate_pf: MARK: (32, 40) cost=16, turns=2, moves_left=2
2: stimulate_pf: MARK: (41, 32) cost=18, turns=2, moves_left=0
2: stimulate_pf: MARK: (41, 31) cost=18, turns=2, moves_left=0
2: stimulate_pf: MARK: (41, 30) cost=18, turns=2, moves_left=0
2: stimulate_pf: MARK: (32, 39) cost=18, turns=2, moves_left=0
2: stimulate_pf: MARK: (32, 38) cost=18, turns=2, moves_left=0
2: stimulate_pf: MARK: (33, 37) cost=18, turns=2, moves_left=0
2: stimulate_pf: MARK: (33, 36) cost=18, turns=2, moves_left=0
2: stimulate_pf: MARK: (33, 38) cost=18, turns=2, moves_left=0
2: stimulate_pf: MARK: (34, 38) cost=16, turns=2, moves_left=0
2: stimulate_pf: MARK: (32, 36) cost=21, turns=3, moves_left=3
2: stimulate_pf: MARK: (32, 37) cost=21, turns=3, moves_left=3
2: stimulate_pf: MARK: (31, 37) cost=21, turns=3, moves_left=3
2: stimulate_pf: MARK: (31, 38) cost=21, turns=3, moves_left=3
2: stimulate_pf: MARK: (42, 30) cost=21, turns=3, moves_left=3
2: stimulate_pf: MARK: (42, 31) cost=21, turns=3, moves_left=3
2: stimulate_pf: MARK: (31, 39) cost=19, turns=3, moves_left=3
2: stimulate_pf: MARK: (31, 36) cost=24, turns=3, moves_left=0
2: stimulate_pf: MARK: (40, 30) cost=21, turns=3, moves_left=0
> So I think it is excessive to have both of them.
> If I were you, I would convert moves_left to an array though (however it
> only makes sense for MINIMAL and MAXIMAL modes).
Raimar
--
email: rf13@xxxxxxxxxxxxxxxxx
"That's fundamental game play! My main enemy is *ALWAYS* fighting
a 4-front war. I make sure of it!"
-- Tony Stuckey, freeciv-dev
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Gregory Berkolaiko, 2002/04/15
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Raimar Falke, 2002/04/15
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Gregory Berkolaiko, 2002/04/15
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Raimar Falke, 2002/04/16
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Raimar Falke, 2002/04/24
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Gregory Berkolaiko, 2002/04/25
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Raimar Falke, 2002/04/25
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Gregory Berkolaiko, 2002/04/26
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Raimar Falke, 2002/04/26
- [Freeciv-Dev] Re: [RFC] Move cost map interface,
Raimar Falke <=
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Gregory Berkolaiko, 2002/04/26
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Raimar Falke, 2002/04/26
- [Freeciv-Dev] Re: [RFC] Move cost map interface, Gregory Berkolaiko, 2002/04/26
|
|