⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changelog

📁 一款运行在linux上的象棋游戏。用GTK/GNOME环境下用GLADE开发。
💻
📖 第 1 页 / 共 3 页
字号:
	l. Added a Pinned() function to test if a piece is pinned against	   the King. 	m. Added a GenCheckEscape() routine to generate move when a king is	   in check.  In SearchRoot(), there is no need to check if a move	   is legal as all root moves are legal.  	n. If King is in check, generate check escapes only and if there is	   only 1 move, extend by another move.Version 1.17 (9 Feb 98)	a. Added very elementary hanging piece evaluation.	b. For square of the pawn, instead of adding ValueQ - ValueP, we	   a fraction of ValueQ based on how far advance the pawn is.  This	   is to encourage the pawn to advance and queen.  Fix a bug in 	   IsLegalMove() whereby an en-passant was considered illegal.	c. More accurate hanging piece evaluation.	d. IsLegalMove() was missing out enpassant captures.  Fixed.	e. Added a ptype[] variable to distinguish between pawn & bpawn;	f. In Search(), initialize PVlen before checking for draws.  This fix	   problems with illegal moves in the PV (e.g. GMG1.epd 42).	g. Renamed Pinned() to PinnedOnKing().  A new Pinned() function will	   be written to be more generic.  Minor change to SearchRoot(), the	   first move is also moved within the main loop, making things tidy.	h. Xboard support.	i. In Search(), the first move is also moved into the main loop.  This	   is to make the code better suited for adding threat extensions.	   Game50 variable wasn't being properly updated; fixed.	j. Trapped bishop at A7/H7/A2/H2.  Rook moved before castling is now	   penalized.  Minor optimization in eval.c.  More eval tuning.	k. Also promotion moves were not being sorted properly; this is fixed.	l. board.ep was initialized to 0; now its -1 fixing a bug when 	   promotion happens at A1 square (square 0).	m. Instead of storing the whole board HashKey into the ttable, we now	   store the top 32 bits, saving memory.  Same for Pawn table.	n. Fix bug in backward pawn detection.  Fix bug in search whereby	   sometimes the best move wasn't being properly set.  Fortunately,	   this happens quite deep in the tree, so not much improvement might	   be seen.  Change the way that scores are returned from the hash	   table probe to improve pruning. 	o. Trade down bonus implemented.  Recaptures extensions modified so 	   that only recaptures of same value & square are extended.	p. In Quiesce(), check for mates as well.	q. Killers at ply-2 is also used for sorting.  Reduced tree size	   slightly (2-3%).	r. Moves in the Quiesce() search were not being recorded in the PV.	   This is now fixed.	s. Bug fix in evaluation of square of the pawn whereby if the opponent	   is on the move, the pawn isn't scored properly.	t. Phase pick is implemented.  Code seems to be working.  Also bug	   fixes in IsLegalMove() and Evaluate().Version 1.18 (18 Mar 98)	a. In MakeMove(), when a rook is captured, the castling flag has to be	   updated too.  This also means that in genmove.c, when generating	   castling moves, it is not necessary to check if the rook is on its	   original square.  However this check hasn't been removed yet.	b. Add "epdsave/save" command.	c. Debug code in quiesce.c wasn't being activated; fixed.  	d. In ttable.c, use & for calculating hashindex rather than the more	   expensive modulo operation.  Gain a couple of percent speedup.	   Also fix the hashsize command so that it is also a power of 2.	   Also get rid of modulo operation everywhere else in the code.	e. For connected pawns on 6th/7th rank only apply super bonus when	   the enemy only has rooks.	   When researching a fail high move & it fail low, immediately set	   alpha to -INF and research it.  This assumes that the original move	   did not fail high.	f. PhasePick() was sometimes trying out the Hashmv twice resulting in	   wasted time.  Fixed by making Hashmv[] an array.	g. Bug in trade down code fixed.  Also modified the way worstscore	   was calculated resulting in a significant speedup in Evaluate().	   Fine tune ScoreB().	h. Added a FindPins() function which returns a bitboard of all pinned	   pieces.  This is used in eval.c for evaluating pinned pieces.	i. Modify way in which sorting of captures was done.  This led to a	   reduction in the quiescent search speeding things up slightly.	j. For killers, only update them if best >= beta; this gives much	   improved pruning.  Remove killer updates in SearchRoot().	   Remove transposition lookup & updates in SearchRoot().  Got rid of	   pbest in SearchRoot().	k. In quiesce(), only update the PV if the score > alpha, not when 	   score > best.  When a mate in N plies have been found, at the N-1	   ply, we don't search the opponent moves; we only check to see if	   he is mated.  Simplify SearchRoot().	l. If the hash table returns an upperbound, then we don't want the	   move that is returned, so set Hashmv=0.  This improves pruning.	m. SquarePawnMask[] for pawns on 2nd rank is wrong; it is now set to	   mask for pawns on 3rd rank as they can advance 2 square.  SwapOff()	   used to assume that the side to move is the one moving the piece.	   This has been changed to that SwapOff() can be used for any side.	   Bug fixed in evaluation of trapped bishop.  Bug in GenCheckEscapes()	   whereby an e.p. capture was allowed even if the pawn is pinned;	   this is fixed.  A nicer and bigger board.	n. For endings with opposite colour bishops, half the score as they	   are mostly drawish.  Instead of penalizing weak pawns, give bonus	   to pieces which attack weak enemy pawns.  Lots of evaluation tuning.	   Commented out ShowThinking() resulting in faster search.  All this	   has improved the nodes per second by 50%! Fix bug in MakeMove() 	   whereby if a R captures another R, the castling flag for the	   captured rook is not cleared.	o. Updated FindPins() to include more pin situations. Introduce a 	   variable called computer; this hold the colour that the program	   plays.  Make a trapped bishop part of lazy evaluation as it gives a	   high penalty.  Promotion weren't taken into account in SortRoot().	p. A basic KPK evaluation for certain positions.  Another bug in 	   GenCheckEscape(); a promotion move to escape check isn't taken into	   account.  Introduced a board.pmaterial[] variable which holds the           pieces total value for a side.  PHASE is now calculated using only	   pieces values.  In Quiesce(), when side is in check we don't prune 	   even if best >= beta; this is now fixed; when in check, we see if	   we are checkmated, if not and there is a beta cut, do it saving	   some branches.  History was updated everytime best > alpha; now it		   is updated only when best >= beta, or when a score > alpha has been	   found.  All this gives rise to improved pruning about 2-3 %.	q. Some fine tuning of passed pawn eval.  Add quiesce move to ttable	   so that it can appear in the PV.Version 1.19 (18 Jul 98)	a. Found problems when PV not updated when best >= beta; changed this	   in both Quiesce() and Search().	b. A ValidateBoard() function.	c. Bug fix in SwapOff().  In Evaluate(), position with KNN with no 	   pawns wasn't being scored as 0; done.	d. More accurate & faster hung piece evaluation.	e. We skip null search when MATERIAL+ValueP <= beta instead of alpha.	   This makes more sense as we are only interested in beta.  Also if	   the hash table returns an upper bound, the score < beta, so forget	   about doing the null test.  This both gives about 6% reduction in	   nodes searched.	f. In Search(), when doing TTGet, g0 is destroyed even though we use it	   in the null test later.  This is fixed.  Passed pawns made less	   valuable; increased CONNECTEDPP from 450 to 650 to compensate.	g. One-reply extensions should be checked before probing the hash table	   otherwise, such a probe will take place at a lesser depth than it 	   should.  The algorithm to prune if no faster mate is found is 	   also brought forward to before the hash probe.	h. When all root-moves fail low, it is still a good idea to try the	   best move found at the last iteration first.	i. Sometimes pawn-to-7th rank extensions wasn't being carried out.           This is fixed; also these extensions are only done at the leaf only.	   If a root move is a recapture, it is extended as well.	j. Bonus/penalties for rook behind/in front of passed pawn.  For ending	   don't give bonus for rook on open files as rook behind passed pawns	   are stronger.	k. SwapOff() wasn't handling promotion moves at all; this is now fixed.	   Some of the sort algorithm has to be changed to take into account	   the update to SwapOff.  Also minor bug fix to AddXrayPiece().	l. Penalize side where a pawn base is under attack by opponent's pawn.	m. At SearchRoot() we don't need to do any extensions.  For recapture	   extensions, we only extend if it is capture of equal or more 	   material so as to follow sacrifices (e.g QxP+ KxQ etc). 	n. Bonus for pawn on c6/f6 if opponent king is in the appropriate 	   corner.	o. Extension for useless interposing moves.  Limit recapture extensions	   to below Idepth+2.	p. For PV's we no longer back it up from the root.  Now the whole	   PV is taken from the hash table except for the first move.  This	   is a much cleaner way of managing it, saving code in search.  	   Otherwise, the PV that is return isn't always correct and its 	   really very difficult to fix.	q. There were some bugs with HashKey calculation in move.c, init.c	   and hash.c.  These have been fixed.  The idea is that for ALL  	   positions in a game, the HashKey must be equal to the HashKey	   calculated if the positions are epd-loaded.  Got rid of CptrCnt[]	   array; I no longer use it for capture extensions.	r. King position is now stored in the variable board; we no longer	   need to run leadz (board.b[side][king]) anymore, which takes place	   in quite a number of places!	s. An AttackXTo() routine which generates a bitboard of all pieces	   of side which attack a square.  This includes x-rays.  Bug in	   GenCheckEscapes() whereby a pawn capturing a checking piece is	   not checked for promotion.  When Idepth <= 3, we don't do null	   move.  This allows us to catch some mates in 2 which would 	   otherwise be pruned away by the null move.	t. Added in threat extension code.  A mate at any depth is better	   than a non-mate score, so it will replace it in the ttable.	   More "bug fixes", eg. sometimes null moves terminate the PV, 	   hopefully this is all fixed in this release.	u. A TTGetPV to pull the PV from the hash table.  This works better	   than TTGet which can sometimes miss the PV due to the way the	   hash tables are managed.	v. Bonus for fianchetto bishops.  Minor change to TTPut() whereby	   occasionally the same position can occupy both slots but the 2nd	   slot has a lower draft.  The 2nd slot is wasted.  This is changed	   so that this waste will no longer occur.****************** BEGIN GNU 5 (Stuart Cracraft) ********************Version 5.00a (13 Dec 98)  - integrated with WinBoard 4.0 / Xboard  - post/nopost (show iterative deepening)  - time controls (level, fischer, sudden-death, time, otim, etc.)  - works properly with FICS (Free Internet Chess Server)  - added opening book capability.  - futility pruning according to Kong.  - weak back rank handling for kings  - canned attacks against computer's king (via opening A/H file)  - penalize early minor piece repeat moves.  - wingpawn advance before castling penalty.  - Win-at-Chess test: 233/300 at 5 seconds per move. 14,977,757 nodes.  - Convert it to properly run on a standard Unix system, not just PC's.  - Make it work with "configure".  - Distribute to beta-testers  -  eval.c - PawnSq[], make penalty for d2/e2/d7/e7 pawns	      KingSq, KnightSq, PawnSq improved     eval.h - PINNED* worsened            - BISHOP_PAIR from 40 to 25. beta tester input.  -  iterate.c - disable Hyatt more-time-after-book algorithm		 disable Chua's dont-start-every-new-iteration  - this version made a 115 point rating jump (to FICS 2030).Version 5.00b (late January)     search.c - Razoring.  This applies at depth == 3.  If we are more	      than a Q behind and there is no extension, then reduce 	      the depth by 1. Extended futility pruning.  At depth == 2, 	      if we are more than 600 points behind and there is no 	      extension, then we only look at checking moves & captures 	      which bring the material score back to alpha. Everything 	      else is pruned away.  This is an extension of the basic	      futility pruning which applies at depth == 1.     cmd.c  - modify so that all games go to game.nnn and the	      log of their searches go to log.nnn where the two	      nnn's match.     version.c - split off VERSION/etc info into version.h     Makefile  - make version.c depend on version.h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -