Taming ZoG (рднрд╛рдЧ 1: рднреЗрдбрд╝рд┐рдпреЛрдВ рдФрд░ рдмрдЪреНрдЪреЗ)

рднреЗрдбрд╝рд┐рдпреЛрдВ рдФрд░ рдмрдЪреНрдЪреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреА рд░рд╛рдп рдореЗрдВ, рдЬрд╝рд┐рд▓рд┐рдпрди рдСрдлрд╝ рдЧреЗрдореНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдиреЛрдЦреА рдмрд╛рдд рдХреАред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдирдП (рдФрд░ рдореМрдЬреВрджрд╛) рдЦреЗрд▓реЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рднрд╛рд╖рд╛ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЕрдирд╛рд╡рд╢реНрдпрдХ (рдЗрд╕ рд╕реНрддрд░ рдкрд░) рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЦреЗрд▓ рдЪреБрдирд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдмрдЪрдкрди рдореЗрдВ рдЦреЗрд▓рд╛ рдерд╛ред рдЗрд╕реЗ рднреЗрдбрд╝рд┐рдпреЛрдВ рдФрд░ рдмрдЪреНрдЪреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдпрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: рднреЗрдбрд╝рд┐рдпреЛрдВ (рдХрд╛рд▓реЗ рдЯреБрдХрдбрд╝реЗ) - рдПрдХ рдХреЛрд╢рд┐рдХрд╛ рдХреЛ рддрд┐рд░рдЫреЗ, рдХреЗрд╡рд▓ рдЖрдЧреЗ рдХреА рдУрд░ рдЬрд╛рдПрдВред рдмрдЪреНрдЪрд╛ (рд╕рдлреЗрдж рдЖрдВрдХрдбрд╝рд╛) - рдПрдХ рдХреЛрд╢рд┐рдХрд╛ рдХреЛ рддрд┐рд░рдЫреЗ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рджрд┐рд╢рд╛ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд╡реНрд╣рд╛рдЗрдЯ рдХрд╛ рдХрд╛рдо рдЕрдВрддрд┐рдо рдХреНрд╖реИрддрд┐рдЬ рдХреЗ рдЕрдкрдиреЗ рд░рдВрдЧ рдХреЗ рдЪрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдкрд░ рдЬрд╛рдирд╛ рд╣реИред рдмреНрд▓реИрдХ рдХрд╛ рдХрд╛рд░реНрдп рд╡реНрд╣рд╛рдЗрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рд╕реЗ рд╡рдВрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдмреНрд▓реИрдХ рдПрдХ рдорд╛рдирдХ 8x8 рд╢рддрд░рдВрдЬрдмреЛрд░реНрдб рдкрд░ рдкреНрд░рд╛рдердорд┐рдХ рдЬреАрддрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП 9x9 рд╡рд░реНрдЧ рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЦреЗрд▓ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ (рдФрд░ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдпрд╣ рдкрд╕рдВрдж рд╣реИ)ред рд╕рд╣реА рдЦреЗрд▓ рдХреЗ рд╕рд╛рде, рд╡реНрд╣рд╛рдЗрдЯ рд╣рдореЗрд╢рд╛ рдЬреАрддрддрд╛ рд╣реИред

рдирд┐рдпрдо рд╡рд░реНрдгрди рднрд╛рд╖рд╛ (ZRF) LISP рд╕реЗ рдХрд╛рдлреА рдорд┐рд▓рддреА-рдЬреБрд▓рддреА рд╣реИред рдПрд▓рдЖрдИрдПрд╕рдкреА рдХреА рддрд░рд╣, рдмреНрд░реИрдХреЗрдЯ рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд╕рдВрддреБрд▓рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдЕрдиреНрдпрдерд╛, рдЦреЗрд▓ рд╕рд┐рд░реНрдл рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред рдЬреИрд╕рд╛ рдХрд┐ рдПрд▓рдЖрдИрдПрд╕рдкреА рдореЗрдВ, рдЯрд┐рдкреНрдкрдгреА рдПрдХ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рддрдХ рдЬрд╛рд░реА рд░рд╣рддреА рд╣реИред

; ***************************************************************** ; ***    ; ***************************************************************** (version "2.0") 

рдпрд╣рд╛рдВ, рдХрдореЗрдВрдЯреНрд░реА рдореЗрдВ, рд╣рдо рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЧреЗрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЧреЗрдо рдСрдлрд╝ рдЬрд╝рд┐рд▓рд┐рдпрдВрд╕ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рдЙрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред "рдЗрдВрдЬрди" рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЦреЗрд▓ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

ZRF рдореЗрдВ, рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рднрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдПрдХ рдореИрдХреНрд░реЛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд╕рдВрднрд╡ рдХрджрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ - рд╕рдВрдХреЗрддрд┐рдд рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рд╕реЗрд▓:

 (define checker-shift ($1 (verify empty?) add)) 

рдЬрдм рдПрдХ рд▓реЗрдЦрди рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 (checker-shift ???) 

рдореИрдХреНрд░реЛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

 (??? (verify empty?) add) 

рдкрд╛рд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЕрд░реНрде рдФрд░ рдпрд╣ рдкреВрд░рд╛ рд░рд┐рдХреЙрд░реНрдб рдореИрдВ рдиреАрдЪреЗ рдмрддрд╛рдКрдВрдЧрд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдореИрдХреНрд░реЛрдЬрд╝ рд╣рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреЛрд░реНрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рднреА рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдореИрдХреНрд░реЛ рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 (define board-defs (image "images\gluk\Board.bmp") (grid (start-rectangle 2 2 48 48) (dimensions ("a/b/c/d/e/f/g/h/i" (48 0)) ; files ("9/8/7/6/5/4/3/2/1" (0 48)) ; ranks ) (directions (nw -1 -1) (ne 1 -1) (se 1 1) (sw -1 1)) ) (symmetry Black (ne sw) (sw ne) (nw se) (se nw)) (zone (name goals) (players White) (positions b9 d9 f9 h9) ) ) 

рд╡рд┐рд╡рд░рдг рдЫрд╡рд┐ рдХрд╛ рдЕрд░реНрде рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - рдпрд╣ рдмреЛрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рд╡рд░реНрдЧ рдмреЛрд░реНрдб (рдЧреНрд░рд┐рдб) рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬреЗрдбрдЖрд░рдПрдл рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдЖрдпрддрд╛рдХрд╛рд░ рдмреЛрд░реНрдбреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рддреНрд░рд┐рдХреЛрдгреАрдп рдФрд░ рд╣реЗрдХреНрд╕рд╛рдЧреЛрдирд▓ рдмреЛрд░реНрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдмрд╣реБрдЖрдпрд╛рдореА рдмреЛрд░реНрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, 5 рдЖрдпрд╛рдореЛрдВ рддрдХ, рдЖрдк рдмреЛрд░реНрдб рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ "рдЧреЛрдВрдж" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдЯреЛрдкреЛрд▓реЙрдЬреА рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐ред рд╣рдо рдЕрдм рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред рдРрд╕реЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЙрд╕ chm-file рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ ZRF рднрд╛рд╖рд╛ (рдЦреЗрд▓ рдХреЗ рд╕рд╛рде рдЖрдкреВрд░реНрддрд┐) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдмреЛрд░реНрдбреЛрдВ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рдЧреЗрдореЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВред

рдЧреНрд░рд┐рдб рд╡рд░реНрдгрди рдХреЗ рддреАрди рдкреНрд░рдореБрдЦ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ: рд╕реНрдЯрд╛рд░реНрдЯ-рдЖрдпрдд рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдмреЛрд░реНрдб рд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛ "рдУрд╡рд░рд▓реЗ" рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИред рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЖрдпрд╛рдо - рдЖрдпрд╛рдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рд╣реИрдВ)ред рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рдо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ - рд╡реЗ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рдХреНрд░рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ)ред рдЕрдЧрд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдорд╛рдк рдХреЗ "рд╢рд╛рд╕рдХ" рдХреЛ рдмреЛрд░реНрдб рдкрд░ рдХреИрд╕реЗ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдмреЛрд░реНрдб рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЗрди рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕реНрдЯрд╛рд░реНрдЯ-рдЖрдпрдд рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдпрд╛рд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдЫрд╡рд┐рдпрд╛рдВ рдмреЛрд░реНрдб рдХреА рдЫрд╡рд┐ рдкрд░ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЖрддреА рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд, рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд╛рдХреНрдпрд╛рдВрд╢ (рдирд┐рд░реНрджреЗрд╢) рдЙрди рджрд┐рд╢рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЪрд╛рд░ рджрд┐рд╢рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдЙрддреНрддрд░-рдкрд╢реНрдЪрд┐рдо (nw), рдЙрддреНрддрд░-рдкреВрд░реНрд╡ (ne), рджрдХреНрд╖рд┐рдг-рдкрд╢реНрдЪрд┐рдо (sw) рдФрд░ рджрдХреНрд╖рд┐рдг-рдкреВрд░реНрд╡ (se)ред рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕рдорд░реВрдкрддрд╛ рдХреЗ рд╕рд╛рде, рд╣рдо рдЙрди рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдпреЗ рджрд┐рд╢рд╛рдПрдБ рдХрд╛рд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ (рдХреНрд╖реЗрддреНрд░) - рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЖрдЧреЗ рдХрд░реЗрдВрдЧреЗ, рдЬрдм рд╣рдо рдЧреЛрд░реЛрдВ рдХреА рдЬреАрдд рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдВрдЧреЗред

 (define game-defs (board (board-defs) ) (board-setup (White (WC e2) ) (Black (BC b9 d9 f9 h9) ) ) (win-condition (White) (absolute-config WC (goals))) (loss-condition (White Black) stalemated) ) 

рдЗрд╕ рдореИрдХреНрд░реЛ рдореЗрдВ, рд╣рдо рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдмреЛрд░реНрдб рдЙрд╕ рдмреЛрд░реНрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдерд╛ (рдмреЛрд░реНрдб-рдбрд┐рдл рдореИрдХреНрд░реЛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░)ред рдмреЛрд░реНрдб-рд╕реЗрдЯрдЕрдк рдореЗрдВ, рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж, рдЬреАрдд-рд╕реНрдерд┐рддрд┐ рдФрд░ рд╣рд╛рдирд┐-рд╕реНрдерд┐рддрд┐ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреАрдд рдФрд░ рд╣рд╛рд░ рдХреА рд╢рд░реНрддреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЧреЛрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреАрдд рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐, рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдЧрд▓реЗ рдХрджрдо рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рд╣реИред

рдпрд╣ рдЦреЗрд▓ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ:

 (game (title "  ") (description "     ") (players White Black) (turn-order White Black) (game-defs) (piece (name WC) (image White "images\gluk\W.bmp") (description "") (help "  1      ") (moves (checker-shift ne) (checker-shift nw) (checker-shift se) (checker-shift sw) ) ) (piece (name BC) (image Black "images\gluk\B.bmp") (description "") (help "  1     ") (moves (checker-shift ne) (checker-shift nw) ) ) ) 

рдпрд╣рд╛рдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд╕рд╣рдЬ рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЦрд┐рд▓рд╛рдбрд╝реА рдЙрдиреНрд╣реАрдВ рд╢реНрд╡реЗрдд рдФрд░ рд╢реНрдпрд╛рдо рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдкрд╣реЗрд▓рд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрд╛рд▓ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ)ред рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЯрд░реНрди-рдСрд░реНрдбрд░ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд░реНрди рдХрд╛ рдХреНрд░рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рджреЛ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдЪрд╛рд▓ рдХреЗ рд╕рд░рд▓ рдкреНрд░рддреНрдпрд╛рд╡рд░реНрддрди рд╕реЗ рднреА рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреЗрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдЧреЗрдо-рдбреАрдЖрдИрдПрд╕) рдХреЗ рд╡рд░реНрдгрди рдХреЗ рдмрд╛рдж, рдЧреЗрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг (рдЯреБрдХрдбрд╝рд╛) рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рд╡рд░рдг рднреА рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред рдЪрд╛рд▓ рдЦрдВрдб рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╕рднреА рдЪрд╛рд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдЪреЗрдХрд░-рд╢рд┐рдлреНрдЯ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдВрдХрдбрд╝реЗ рдХреА рдЧрддрд┐ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рджрд┐рд╢рд╛ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдореИрдХреНрд░реЛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрди рдЬреИрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ:

 ( ne (verify empty?) add ) 

рд╣рдо рддреАрди рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ - рд╣рдо рд╕рдВрдХреЗрддрд┐рдд рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реЗрд▓ рдЦрд╛рд▓реА рд╣реИ рдФрд░ рдЯреБрдХрдбрд╝рд╛ рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИ (рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди рдХреНрд╖рдг рд╣реИред рдЦреБрдж рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдХрджрдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЯреБрдХрдбрд╝рд╛ рдмреЛрд░реНрдб рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдХрджрдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдпрд╣ рдмреЛрд░реНрдб рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ)ред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЧреЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЪрд╛рд▓ рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред

рдирдпрд╛ рдЦреЗрд▓ рддреИрдпрд╛рд░ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣реЗрдВ рд╡реЗ рдЗрд╕реЗ GitHub рдкрд░ рднрдВрдбрд╛рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯрд┐рдкреНрдкрдгреА
рдиреЛрдЯ: рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЧреЗрдореНрд╕ рдСрдлрд╝ рдЬрд╝рд┐рд▓рд┐рдпрдВрд╕ рдХреЗ рдХреЛрд░ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдЦрд░реАрджреЗрдВ)

Source: https://habr.com/ru/post/In211100/


All Articles