Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: some pseudo code

Author: Omid David Tabibi

Date: 01:37:17 05/05/04

Go up one level in this thread


On May 05, 2004 at 04:35:54, Omid David Tabibi wrote:

>On May 05, 2004 at 04:20:18, Daniel Shawul wrote:
>
>>
>>void BOARD::makemove(MOVE* move)
>>{
>>
>>	RemoveInfluence(Player,pic,from);
>>
>>	//capture
>>	if(move->is_capture())
>>	{
>>		if(move->is_enpassant())
>>		{
>>
>>			RemoveInfluence(opp,pawn,ep_sq);
>>
>>			AddInfluence(Player,pic,to);
>>
>>		}
>>        else
>>		{
>>			RemoveInfluence(opp,move->get_capture(),to);
>>
>>		}
>>
>>	}
>>
>>	//castling
>>	if(move->is_castling())
>>	{
>>
>>		AddInfluence(Player,king,to);
>>
>>		RemoveInfluence(Player,rook,fromc);
>>
>>		AddInfluence(Player,rook,toc);
>>
>>	}
>>	//promotion
>>	else if(move->is_promotion())
>>	{
>>		AddInfluence(Player,move->get_promote(),to);
>>	}
>>	else
>>	{
>>		if(!move->is_enpassant())
>>	        AddInfluence(Player,pic,to);
>>	}
>>
>>}
>>
>>
>>
>>void BOARD::takeback(MOVE* move)
>>{
>>
>>	//promotion
>>	if(move->is_promotion())
>>	{
>>		RemoveInfluence(Player,move->get_promote(),from);
>>
>>	}
>>	//castling
>>	else if(move->is_castling())
>>	{
>>		RemoveInfluence(Player,king,from);
>>
>>
>>		RemoveInfluence(Player,rook,fromc);
>>
>>		AddInfluence(Player,rook,toc);
>>
>>
>>	}
>>	else
>>	   RemoveInfluence(Player,pic,from);
>>
>>	AddInfluence(Player,pic,to);
>>
>>	//captures
>>	if(move->is_capture())
>>	{
>>		if(move->is_enpassant())
>>		{
>>			sq=from + ((from>to) ? DD : UU);
>>
>>			AddInfluence(opp,move->get_capture(),sq);
>>		}
>>		else
>>		{
>>			sq=from;
>>
>>			AddInfluence(opp,move->get_capture(),from);
>>		}
>>	}
>>}
>>
>>AddInfluence(int col ,int pic, int sq)
>>{
>>    1. remove attack of piece at sq
>>    2. shorten slider attackts through sq
>>}
>>RemoveInfluence(int col ,int pic, int sq)
>>{
>>    1. Add attack of piece at sq
>>    2. extend slider attacks through sq
>>}

For example, just optimizing these last two functions will considerably speed up
your update, as these functions are called many times.


>
>
>Incremental update will be better only if it is done efficiently. You must use a
>good profiler (e.g., Intel VTune) to find the bottlenecks and optimize your
>implementation. Many times the profiler will indicate hotspots that cannot be
>easily noticed without profiling.



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.