Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: A question about varaibles that I should give to functions in C++

Author: Uri Blass

Date: 14:20:18 08/01/04

Go up one level in this thread


On August 01, 2004 at 16:39:15, Gerd Isenberg wrote:

>On August 01, 2004 at 15:45:10, Uri Blass wrote:
>
>>On August 01, 2004 at 06:12:03, Gerd Isenberg wrote:
>>
>>>On August 01, 2004 at 01:07:10, Uri Blass wrote:
>>>
>>>>My code until today used a lot of global varaibles and I decided based on advice
>>>>of Dann Corbit to use a class for time management.
>>>>
>>>>I have a many varaibles in class for time management and
>>>>I hesitate which parameters to give to the functions.
>>>>
>>>>I will give an example:
>>>>
>>>>I want to have a procedure to update the remaining number of moves to the time
>>>>control in the beginning of every search(this varaible is used for other
>>>>varaibles like the target time.
>>>>
>>>>The procedure is using the following varaibles:
>>>>1)num_moves_1(number of moves in the first time control)
>>>>2)num_moves_2(number of moves in the second time control)
>>>>3)num_moves_3(number of moves in the third time control)
>>>>4)hply(history ply of the game)
>>>>
>>>>I think to call the procedure not inside the class so it cannot get directly
>>>>num_moves_1 or num_moves_2 or num_moves_3
>>>>
>>>>I can write seperate functions to return num_moves_1 inside the class and use
>>>>these functions outside of the class but I am not sure if it is a good idea(no
>>>>experience in C++).
>>>>
>>>>Another possibility is not to give the functions the parameters of
>>>>num_moves_1,num_moves_2,num_moves_3 because their value is known inside the
>>>>class so it is not needed.
>>>>
>>>>What do you suggest?
>>>>
>>>>Uri
>>>
>>>Hi Uri,
>>>
>>>yes, putting time control variables and services into a struct/class is a good
>>>idea.
>>>
>>>Basically you hide your n num_moves and n times_to_num_moves, which got
>>>initialized at construction time or via some setters with appropriate
>>>parameters.
>>>
>>>I suggest not to keep track of elapsed time and history of the game inside this
>>>class, but to have a memberfunction with hply and elapsed time parameter to get
>>>the average and maximum thinking time (or some vector of suggested times for
>>>different cases incapsulated in some other class) for the next move.
>>
>>hply is of course not time varaible and it is today a global varaible(it is used
>>in other places like makemove that update the history stake and I do not see an
>>idea how not to use it as global varaible).
>>
>>I do not see the advantage of having elapsed time as a global varaible(I thought
>>to have all the only time related varaibles in the same class).
>>
>
>I like to have elapsed time as well as move count and the whole game history
>(played moves with time used for both sides) not as a global, but as members of
>a GameControl object, which is most likely allocated on the heap with new.

I am afraid that it is going to do the program slower.

hply is used in every node unlike time varaibles.
I can robably use a function get_hply that will get hply from the GameControl
object and not use it as global varaible but I am afraid that it is going to do
the program slower if I do it everytime that I need hply.

Another point is that I do not want to do too big changes in the code and I
prefer to change it more slowly.

I first want to get rid of global varaibles that are rarely used and maybe later
I will think about getting rid of global varaibles that are used more often like
hply.

Uri



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.