Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: I'm back!!! (with some questions :))

Author: José Carlos

Date: 10:38:59 08/30/99

Go up one level in this thread


  Thanks for your answer. This is my quiesce:

int CTablero::QSearch(unsigned char Prof,int Alfa,int Beta)
{
	unsigned short Numero_Jugadas_old;
	int Val,Mejor;
	Jugada mov;
	unsigned char Legales=0;
	bool Jaqueado=false;

	// Condiciones de salida anticipada
	if (Ply>=MAX_PLIES)
		return Evaluar();
	if (Prof==0)
	        return Evaluar();

	Jaqueado=EnJaque(Turno);
	Mejor=-INFINITO;
	Val=Evaluar();
	if (Val>=Beta)
		return Val;
	if (Val>Alfa)
		Mejor=Val;

	Numero_Jugadas_old=Numero_Jugadas;
	if (Jaqueado)
		JugadasLegales();
	else
	{
		GenerarCapturas();
		if (Numero_Jugadas==Numero_Jugadas_old)
			return Val;
	}
	Generados+=(UltimaJugada[Ply]-PrimeraJugada[Ply]);
	Ordenar();

	while ((PrimeraJugada[Ply]<=UltimaJugada[Ply]) && (Mejor<Beta))
	{
		Numero_Jugadas--;
		memcpy(&mov,&Jugadas[Numero_Jugadas],sizeof Jugada);
		if (!Mover(mov))
		{
			UltimaJugada[Ply]--;
			continue;
		}
		Visitados++;
		if (Ply>depth)
			depth=Ply;
		Legales++;
		if (Mejor>Alfa)
			Alfa=Mejor;
		Val=-QSearch(Prof-1,-Beta,-Alfa);
		Retroceder();
		if (Val>Mejor)
			Mejor=Val;
		UltimaJugada[Ply]--;
	}
	Numero_Jugadas=Numero_Jugadas_old;
	if (Legales==0)
	{
		if (Jaqueado)
			return -INFINITO; // Es jaque mate
		else
			return AHOGADO; // Tablas por ahogado
	}
	return Mejor;
}

  Sorry for the languaje (spanish). If you don't understand it, I can translate.

  Thanks in advance.

  José C.



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.