Complete.Org: Mailing Lists: Archives: freeciv-dev: April 2002:
[Freeciv-Dev] Re: [RFC] Move cost map interface
Home

[Freeciv-Dev] Re: [RFC] Move cost map interface

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: rf13@xxxxxxxxxxxxxxxxxxxxxx
Cc: freeciv development list <freeciv-dev@xxxxxxxxxxx>
Subject: [Freeciv-Dev] Re: [RFC] Move cost map interface
From: Gregory Berkolaiko <Gregory.Berkolaiko@xxxxxxxxxxxx>
Date: Wed, 10 Apr 2002 12:03:57 +0100 (BST)

On Wed, 10 Apr 2002, Raimar Falke wrote:

> On Wed, Apr 10, 2002 at 09:34:17AM +0100, Gregory Berkolaiko wrote:
> > On Wed, 10 Apr 2002, Raimar Falke wrote:
> > 
> > > Things that I dislike:
> > >  - the maptype. This is IMHO an error in the current goto(hand).[ch]
> > >  files.
> > 
> > the maptype is the indicator which one of the internal (built-in) cost 
> > functions should be used.
> 
> But enum unit_move_type should be used for this.

Disagree.  unit_move_type doesn't know such things as city_map and 
igter_move.

> > >  - you missed the ability to calculate the turns to reach a
> > >  target. This is required for my further agents and has to be
> > >  included.
> > 
> > Yes.  This is of course 
> > (cm_get_cost(map, x, y) - cm_get_cost(map, x0, y0)) / move_rate
> > 
> > Here I am assuming that if the unit has 4/6 initial move points, we record 
> > the missing 2 as the cost to get to the origin.
> 
> This is too simple. See unit_move_turns for an example.

don't see much difference.  all unit_move_turns does is determining the 
move_rate and then the abovementioned division.

BTW how about getting rid of the randomness in the move.  That would make 
calculation of the _exact_ move_time possible!

FX make it (for each step):
===============================================
if (moves_left == unit_move_rate
    || moves_left >= move_cost * MOVE_FACTOR) {
  make the move;
  moves_left = MAX(0, moves_left = move_cost);
} else {
  moves_left = 0;
  don't make the move;
}
================================================
values of MOVE_FACTOR that make sense are 1 (strict), 1/2 (medium) and 
0+ (easy).

0+ is the number greater than zero and less than any positive number.


Best,
G.




[Prev in Thread] Current Thread [Next in Thread]