xchess
Version:
Chess Engine
181 lines (172 loc) • 7.61 kB
JavaScript
export {Nags as nags, nag, Suffixes as suffixes, suffix, resolve}
const AllMap = new Map();
const SuffixMap = new Map();
const NagMap = new Map();
const Nags = [];
const Suffixes = [];
function Suffix(nag, suffix, title){
const Nag = {suffix, nag, title};
NagMap.set(nag, Nag);
Nags.push(Nag);
SuffixMap.set(nag, Nag);
Suffixes.push(Nag);
AllMap.set(nag, Nag);
AllMap.set(suffix, Nag);
Object.freeze(Nag);
}
function Nag(nag, description){
const Nag = {nag, description};
NagMap.set(nag, Nag);
AllMap.set(nag, Nag);
Nags.push(Nag);
}
function nag(nag){
return NagMap.get(nag);
}
function suffix(suffix){
return SuffixMap.get(suffix);
}
function resolve(value){
return AllMap.get(value);
}
Nag(0, 'null annotation');
Suffix(1, '!', 'good move');
Suffix(2, '?', 'poor move');
Suffix(3, '!!', 'very good move');
Suffix(4, '??', 'very poor move');
Suffix(5, '!?', 'speculative move');
Suffix(6, '?!', 'questionable move');
Nag(7, 'forced move (all others lose quickly)');
Nag(8, 'singular move (no reasonable alternatives)');
Nag(9, 'worst move');
Nag(10, 'drawish position');
Nag(11, 'equal chances, quiet position');
Nag(12, 'equal chances, active position');
Nag(13, 'unclear position');
Nag(14, 'White has a slight advantage');
Nag(15, 'Black has a slight advantage');
Nag(16, 'White has a moderate advantage');
Nag(17, 'Black has a moderate advantage');
Nag(18, 'White has a decisive advantage');
Nag(19, 'Black has a decisive advantage');
Nag(20, 'White has a crushing advantage (Black should resign)');
Nag(21, 'Black has a crushing advantage (White should resign)');
Nag(22, 'White is in zugzwang');
Nag(23, 'Black is in zugzwang');
Nag(24, 'White has a slight space advantage');
Nag(25, 'Black has a slight space advantage');
Nag(26, 'White has a moderate space advantage');
Nag(27, 'Black has a moderate space advantage');
Nag(28, 'White has a decisive space advantage');
Nag(29, 'Black has a decisive space advantage');
Nag(30, 'White has a slight time (development) advantage');
Nag(31, 'Black has a slight time (development) advantage');
Nag(32, 'White has a moderate time (development) advantage');
Nag(33, 'Black has a moderate time (development) advantage');
Nag(34, 'White has a decisive time (development) advantage');
Nag(35, 'Black has a decisive time (development) advantage');
Nag(36, 'White has the initiative');
Nag(37, 'Black has the initiative');
Nag(38, 'White has a lasting initiative');
Nag(39, 'Black has a lasting initiative');
Nag(40, 'White has the attack');
Nag(41, 'Black has the attack');
Nag(42, 'White has insufficient compensation for material deficit');
Nag(43, 'Black has insufficient compensation for material deficit');
Nag(44, 'White has sufficient compensation for material deficit');
Nag(45, 'Black has sufficient compensation for material deficit');
Nag(46, 'White has more than adequate compensation for material deficit');
Nag(47, 'Black has more than adequate compensation for material deficit');
Nag(48, 'White has a slight center control advantage');
Nag(49, 'Black has a slight center control advantage');
Nag(50, 'White has a moderate center control advantage');
Nag(51, 'Black has a moderate center control advantage');
Nag(52, 'White has a decisive center control advantage');
Nag(53, 'Black has a decisive center control advantage');
Nag(54, 'White has a slight kingside control advantage');
Nag(55, 'Black has a slight kingside control advantage');
Nag(56, 'White has a moderate kingside control advantage');
Nag(57, 'Black has a moderate kingside control advantage');
Nag(58, 'White has a decisive kingside control advantage');
Nag(59, 'Black has a decisive kingside control advantage');
Nag(60, 'White has a slight queenside control advantage');
Nag(61, 'Black has a slight queenside control advantage');
Nag(62, 'White has a moderate queenside control advantage');
Nag(63, 'Black has a moderate queenside control advantage');
Nag(64, 'White has a decisive queenside control advantage');
Nag(65, 'Black has a decisive queenside control advantage');
Nag(66, 'White has a vulnerable first rank');
Nag(67, 'Black has a vulnerable first rank');
Nag(68, 'White has a well protected first rank');
Nag(69, 'Black has a well protected first rank');
Nag(70, 'White has a poorly protected king');
Nag(71, 'Black has a poorly protected king');
Nag(72, 'White has a well protected king');
Nag(73, 'Black has a well protected king');
Nag(74, 'White has a poorly placed king');
Nag(75, 'Black has a poorly placed king');
Nag(76, 'White has a well placed king');
Nag(77, 'Black has a well placed king');
Nag(78, 'White has a very weak pawn structure');
Nag(79, 'Black has a very weak pawn structure');
Nag(80, 'White has a moderately weak pawn structure');
Nag(81, 'Black has a moderately weak pawn structure');
Nag(82, 'White has a moderately strong pawn structure');
Nag(83, 'Black has a moderately strong pawn structure');
Nag(84, 'White has a very strong pawn structure');
Nag(85, 'Black has a very strong pawn structure');
Nag(86, 'White has poor knight placement');
Nag(87, 'Black has poor knight placement');
Nag(88, 'White has good knight placement');
Nag(89, 'Black has good knight placement');
Nag(90, 'White has poor bishop placement');
Nag(91, 'Black has poor bishop placement');
Nag(92, 'White has good bishop placement');
Nag(93, 'Black has good bishop placement');
Nag(84, 'White has poor rook placement');
Nag(85, 'Black has poor rook placement');
Nag(86, 'White has good rook placement');
Nag(87, 'Black has good rook placement');
Nag(98, 'White has poor queen placement');
Nag(99, 'Black has poor queen placement');
Nag(100, 'White has good queen placement');
Nag(101, 'Black has good queen placement');
Nag(102, 'White has poor piece coordination');
Nag(103, 'Black has poor piece coordination');
Nag(104, 'White has good piece coordination');
Nag(105, 'Black has good piece coordination');
Nag(106, 'White has played the opening very poorly');
Nag(107, 'Black has played the opening very poorly');
Nag(108, 'White has played the opening poorly');
Nag(109, 'Black has played the opening poorly');
Nag(110, 'White has played the opening well');
Nag(111, 'Black has played the opening well');
Nag(112, 'White has played the opening very well');
Nag(113, 'Black has played the opening very well');
Nag(114, 'White has played the middlegame very poorly');
Nag(115, 'Black has played the middlegame very poorly');
Nag(116, 'White has played the middlegame poorly');
Nag(117, 'Black has played the middlegame poorly');
Nag(118, 'White has played the middlegame well');
Nag(119, 'Black has played the middlegame well');
Nag(120, 'White has played the middlegame very well');
Nag(121, 'Black has played the middlegame very well');
Nag(122, 'White has played the ending very poorly');
Nag(123, 'Black has played the ending very poorly');
Nag(124, 'White has played the ending poorly');
Nag(125, 'Black has played the ending poorly');
Nag(126, 'White has played the ending well');
Nag(127, 'Black has played the ending well');
Nag(128, 'White has played the ending very well');
Nag(129, 'Black has played the ending very well');
Nag(130, 'White has slight counterplay');
Nag(131, 'Black has slight counterplay');
Nag(132, 'White has moderate counterplay');
Nag(133, 'Black has moderate counterplay');
Nag(134, 'White has decisive counterplay');
Nag(135, 'Black has decisive counterplay');
Nag(136, 'White has moderate time control pressure');
Nag(137, 'Black has moderate time control pressure');
Nag(138, 'White has severe time control pressure');
Nag(139, 'Black has severe time control pressure');
Object.freeze(Nags);