{"id":335,"date":"2008-02-24T22:27:07","date_gmt":"2008-02-24T16:27:07","guid":{"rendered":""},"modified":"2009-12-25T23:44:57","modified_gmt":"2009-12-25T17:44:57","slug":"lising-structures","status":"publish","type":"page","link":"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/","title":{"rendered":"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures"},"content":{"rendered":"
\r\nunit structures;\r\n\r\ninterface\r\n\r\nuses graphics,Sysutils;\r\n\r\nconst maxsize = 7;\r\n err = 100;\/\/\u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u0443\u0434\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u043b\u0438 \u0445\u043e\u0434 \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d\r\n motvs:array [0..1] of array [0..4] of smallint = \/\/\u043c\u0430\u0441\u0441\u0438\u0432 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0439\r\n (( 0, 5, 11, 10,-150),\/\/\u0446\u0435\u043d\u0430 \u0445\u043e\u0434\u0430, \u0440\u0443\u0431\u043a\u0438 \u0448\u0430\u0448\u043a\u0438, \u0440\u0443\u0431\u043a\u0438 \u0434\u0430\u043c\u043a\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043c\u043a\u0438, \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u0430\r\n ( 0,-6,-10,-11,165));\r\n pe_move = 0; \/\/\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043c\u043e\u0442\u0438\u0432\u043e\u0432\r\n pe_kick = 1;\r\n pe_lkick = 2;\r\n pe_lmake = 3;\r\n pe_loose = 4;\r\n corconv : array[0..7] of array [0..7]of byte = \/\/x,y\r\n ((err, 4,err, 12,err, 20,err, 28),\/\/\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u043e\u043c\u0435\u0440\u0430 \u0448\u0430\u0448\u0435\u043a \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u043a\u0435 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u0434\u043e\u0441\u043a\u0438\r\n ( 0,err, 8,err, 16,err, 24,err),\r\n (err, 5,err, 13,err, 21,err, 29),\r\n ( 1,err, 9,err, 17,err, 25,err),\r\n (err, 6,err, 14,err, 22,err, 30),\r\n ( 2,err, 10,err, 18,err, 26,err),\r\n (err, 7,err, 15,err, 23,err, 31),\r\n ( 3,err, 11,err, 19,err, 27,err));\r\n posconv : array[0..31] of array [0..1]of byte =\r\n ((1,0),(3,0),(5,0),(7,0),\/\/\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043d\u0430 \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u043a\u0435 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u0448\u0430\u0448\u043a\u0438\r\n (0,1),(2,1),(4,1),(6,1),\r\n (1,2),(3,2),(5,2),(7,2),\r\n (0,3),(2,3),(4,3),(6,3),\r\n (1,4),(3,4),(5,4),(7,4),\r\n (0,5),(2,5),(4,5),(6,5),\r\n (1,6),(3,6),(5,6),(7,6),\r\n (0,7),(2,7),(4,7),(6,7));\r\n idir : array[0..3] of byte = (2,3,0,1);\/\/\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\r\n mvs : array[0..3] of array[0..31]of byte =\/\/\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\r\n ((err,err,err,err,err, 0, 1, 2, 4, 5, 6, 7,err, 8, 9, 10, 12, 13, 14, 15,err, 16, 17, 18, 20, 21, 22, 23,err, 24, 25, 26),\r\n (err,err,err,err, 0, 1, 2, 3, 5, 6, 7,err, 8, 9, 10, 11, 13, 14, 15,err, 16, 17, 18, 19, 21, 22, 23,err, 24, 25, 26, 27),\r\n ( 5, 6, 7,err, 8, 9, 10, 11, 13, 14, 15,err, 16, 17, 18, 19, 21, 22, 23,err, 24, 25, 26, 27, 29, 30, 31,err,err,err,err,err),\r\n ( 4, 5, 6, 7,err, 8, 9, 10, 12, 13, 14, 15,err, 16, 17, 18, 20, 21, 22, 23,err, 24, 25, 26, 28, 29, 30, 31,err,err,err,err));\r\n smsk : array[0..31] of cardinal =\/\/\u043c\u0430\u0441\u043a\u0430 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430 - \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e OR\r\n ($00000001,$00000002,$00000004,$00000008,$00000010,$00000020,$00000040,$00000080,\r\n $00000100,$00000200,$00000400,$00000800,$00001000,$00002000,$00004000,$00008000,\r\n $00010000,$00020000,$00040000,$00080000,$00100000,$00200000,$00400000,$00800000,\r\n $01000000,$02000000,$04000000,$08000000,$10000000,$20000000,$40000000,$80000000);\r\n rmsk : array[0..31] of cardinal =\/\/\u043c\u0430\u0441\u043a\u0430 \u0434\u043b\u044f \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430 - \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e AND\r\n ($fffffffe,$fffffffd,$fffffffb,$fffffff7,$ffffffef,$ffffffdf,$ffffffbf,$ffffff7f,\r\n $fffffeff,$fffffdff,$fffffbff,$fffff7ff,$ffffefff,$ffffdfff,$ffffbfff,$ffff7fff,\r\n $fffeffff,$fffdffff,$fffbffff,$fff7ffff,$ffefffff,$ffdfffff,$ffbfffff,$ff7fffff,\r\n $feffffff,$fdffffff,$fbffffff,$f7ffffff,$efffffff,$dfffffff,$bfffffff,$7fffffff);\r\n {\r\n X or smsk[index] - \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u0431\u0438\u0442\r\n X and rmsk[index] - \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u0431\u0438\u0442\r\n X and smsk[index] - \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u0431\u0438\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0435\u0441\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 - 0, \u0442\u043e \u0431\u0438\u0442 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\r\n }\r\ntype\r\n\r\n step = record\r\n s0,s1:cardinal;\r\n mark:smallint;\r\n end;\r\n\r\n Gauge_imitator = record\r\n left,top,width,height:integer;\r\n status:integer;\r\n color:tcolor;\r\n end;\r\n\r\n board = record\r\n pos:cardinal;\/\/positions\r\n sde:cardinal;\/\/markers of player's side\r\n top:cardinal;\/\/markers of ladyies\r\n end;\r\n\r\n PBoard = ^board;\r\n\r\n Pmove=integer;\r\n\r\n svdata = record\r\n boa:board;\r\n mv0,mv1:cardinal;\r\n e:byte;\r\n end;\r\n\r\n psvdata = ^svdata;\r\n\r\n hist = record\r\n boa:board;\/\/\u0434\u043e\u0441\u043a\u0430\r\n mv0,mv1:cardinal;\/\/\u0445\u043e\u0434 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0434\u043e\u0441\u043a\u0435\r\n e:byte;\/\/\u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0445\u043e\u0434\r\n p:pointer;\/\/\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430\r\n end;\r\n\r\n Phist = ^hist;\r\n\r\n history = class\r\n p:phist;\r\n procedure deactivate;\r\n procedure AddHistory(b:pboard;e:byte;mv0,mv1:cardinal);\r\n procedure DelHistory(b:psvdata);\r\n Constructor Create;\r\n Destructor Destroy;\r\n private\r\n { Private declarations }\r\n public\r\n { Public declarations }\r\n end;\r\n\r\n\/\/\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0438\u0442\u0430, \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b board\r\nconst\r\n start:board = (pos:$FFF00FFF;sde:$FFF00000;top:0);\r\n empty:board = (pos:0;sde:0;top:0);\r\n\r\nfunction max(a,b:smallint):smallint;\r\nfunction min(a,b:smallint):smallint;\r\nprocedure Trinagle(x1,y1,x2,y2,x3,y3:smallint;c:tcanvas);\r\nprocedure forsemove(mv0,mv1:cardinal;brd:Pboard);\/\/\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0445\u043e\u0434\u0430 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435\r\nfunction appraisemove(mv0,mv1:cardinal;brd:Pboard;n_motiv:byte):smallint;\/\/\u043e\u0446\u0435\u043d\u043a\u0430 \u0445\u043e\u0434\u0430, \u0431\u0435\u0437 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\r\nfunction CheckMove(mv:int64):boolean;\/\/\u0433\u0440\u0443\u0431\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0445\u043e\u0434\u0430 (\u043e\u0442\u043b\u0430\u0434\u043a\u0430)\r\nfunction CheckNoWin(hh:phist):boolean;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 - \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0445\u043e\u0434\u043e\u0432 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 8 \u043f\u0430\u0440 \u0445\u043e\u0434\u043e\u0432\r\nfunction NumberSh(n:cardinal):word;\/\/\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u0444\u0438\u0433\u0443\u0440 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435\r\n\r\nvar\r\n mvs1 : array[0..3] of array[0..31]of byte;\/\/\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u044e\u0434\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u043d\u0443 \u043a\u043b\u0435\u0442\u043a\u0443, \u043a\u0430\u043a \u043f\u0440\u0438 \u0440\u0443\u0431\u043a\u0435\r\n deepforse : byte = 5; \/\/\u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u043f\u0440\u043e\u0441\u0447\u0451\u0442\u0430 \u0445\u043e\u0434\u043e\u0432 (\u0441\u0440\u0435\u0434\u043d\u044f\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)\r\n\r\nimplementation\r\n\r\nfunction NumberSh(n:cardinal):word;\/\/\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u0444\u0438\u0433\u0443\u0440 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435\r\nlabel nxt,tuda;\r\nbegin\r\n asm\r\n mov ecx,n;\r\n mov dl,$20;\/\/\u0441\u0447\u0451\u0442\u0447\u0438\u043a\r\n xor ax,ax;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cx\r\n nxt:\r\n shl ecx,1;\/\/\u043e\u0434\u0438\u043d \u0431\u0438\u0442 \u0434\u0432\u0438\u043d\u0435\u043c \u0432 CF\r\n jnc tuda;\r\n inc ax;\/\/\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0431\u0438\u0442, \u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043c ax - \u043d\u0430\u0448\u043b\u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0448\u0430\u0448\u043a\u0443\r\n tuda:\r\n dec dl;\r\n jnz nxt;\/\/\u0435\u0441\u043b\u0438 \u0432 dl \u043d\u0435 \u043d\u043e\u043b\u044c \u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u0438\u0442\r\n mov result,ax;\r\n end;\r\nend;\r\n\r\nfunction CheckNoWin(hh:phist):boolean;\r\nvar k:byte;\r\n dsk:board;\r\nlabel univertest,r_true;\r\nbegin\r\n result:=false;\/\/\u043f\u043e\u043a\u0430 \u043e \u043d\u0438\u0447\u044c\u0435\u0439 \u0440\u0435\u0447\u0438 \u043d\u0435 \u0438\u0434\u0451\u0442\r\n for k:=1 to 16 do \/\/\u0432\u043e\u0441\u0435\u043c\u044c \u043f\u0430\u0440 \u0445\u043e\u0434\u043e\u0432 \u0431\u0435\u0437 \u0440\u0443\u0431\u043a\u0438\r\n begin\r\n if (hh=nil) or (hh.mv0=$10000) or (appraisemove(hh.mv0,hh.mv1,@hh.boa,0)<>0) then exit;\r\n if (k=1) and (NumberSh(hh.boa.pos)>4) then goto univertest;\/\/\u043c\u043d\u043e\u0433\u043e\u0432\u0430\u0442\u043e \u043f\u043e\u043a\u0430 \u0444\u0438\u0433\u0443\u0440 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435 (\u0430 hh \u0435\u0449\u0435 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438)\r\n\/\/\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u043a\u0430 \u0445\u043e\u0434\u043e\u0432 or \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u0438 \u043d\u0430\u043d\u043e\u0441\u044f\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u0432\u0440\u0435\u0434 - \u0432\u044b\u0445\u043e\u0434, \u0442.\u043a. \u0438\u0433\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0440\u0443\u0435\u0442, \u043b\u0438\u0431\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c\r\n hh:=hh.p;\/\/\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0445\u043e\u0434\r\n end;\r\n goto r_true;\r\nunivertest:\/\/\u0442\u0435\u0441\u0442 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0444\u0438\u0448\u0435\u043a \u043d\u0430 \u0434\u043e\u0441\u043a\u0435\r\n dsk:=hh.boa;\/\/\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0434\u043e\u0441\u043a\u0443\r\n for k:=1 to 16 do \/\/\u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 8-\u043c\u0438 \u043f\u0430\u0440 \u0445\u043e\u0434\u043e\u0432\r\n begin\r\n hh:=hh.p;\/\/\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0445\u043e\u0434\r\n if (hh=nil) or (hh.mv0=$10000) then exit;\r\n\/\/\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u043a\u0430 \u0445\u043e\u0434\u043e\u0432 or \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u0438 \u043d\u0430\u043d\u043e\u0441\u044f\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u0432\u0440\u0435\u0434 - \u0432\u044b\u0445\u043e\u0434, \u0442.\u043a. \u0438\u0433\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0440\u0443\u0435\u0442, \u043b\u0438\u0431\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c\r\n hh:=hh.p;\/\/\u0441\u043d\u043e\u0432\u0430 \u0445\u043e\u0434 \u0441\u0442\u043e\u0440\u043e\u043d\u044b dsk\r\n if (hh=nil) or (hh.mv0=$10000) then exit;\r\n if (dsk.pos<>hh.boa.pos) or (dsk.sde<>hh.boa.sde) or (dsk.top<>hh.boa.top) then exit;\/\/\u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u0441\u043a\u0430 >= \u043d\u0435\u0442 \u043d\u0438\u0447\u044c\u0435\u0439\r\n dsk:=hh.boa;\/\/\u0441\u043d\u043e\u0432\u0430 \u0434\u043e\u0441\u043a\u0443 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u0438\r\n end;\r\nr_true:\r\n result:=true;\/\/\u043d\u0438\u0447\u044c\u044f\r\nend;\r\n\r\nfunction max(a,b:smallint):smallint;\r\nbegin\r\n if a>b then result:=a else result:=b;\r\nend;\r\n\r\nfunction min(a,b:smallint):smallint;\r\nbegin\r\n if a0 then fin:=1;\r\n end;\r\n if fin=1 then result:=true else result:=false;\r\nend;\r\n\r\nConstructor history.Create;\/\/\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438\r\nbegin\r\n inherited Create;\r\nend;\r\n\r\nprocedure history.Deactivate;\r\nvar h:pointer;\r\nbegin\r\n while p<>nil do \/\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438\r\n begin\r\n h:=p.p;\r\n Dispose(p);\r\n p:=h;\r\n end;\r\nend;\r\n\r\nDestructor history.Destroy;\/\/\u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438\r\nbegin\r\n Deactivate;\r\n inherited Destroy;\r\nend;\r\n\r\nprocedure history.AddHistory(b:pboard;e:byte;mv0,mv1:cardinal);\r\nvar h:pointer;\r\nbegin\r\n h:=p;\/\/\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\r\n New(p);\/\/\u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0445\u0438\u0441\u0442\u043e\u0440\u0438\r\n p.boa:=b^;\/\/\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435\r\n p.p:=h;\r\n p.e:=e;\r\n p.mv1:=mv1;\r\n p.mv0:=mv0;\r\nend;\r\n\r\nprocedure history.DelHistory(b:psvdata); \/\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438\u0438\r\nvar h:pointer;\r\nbegin\r\n if p=nil then\/\/\u0435\u0441\u043b\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0443\u0441\u0442\u0430\u044f, \u0442\u043e \u0437\u0430\u0433\u0440\u0433\u0443\u0437\u043a\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u0441\u043a\u043e\u0439\r\n begin\r\n b.boa:=start;\r\n b.mv0:=$10000;\r\n end else begin\/\/\u0438\u043d\u0430\u0447\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0434\u0438\u043d \u0445\u043e\u0434\r\n b.boa:=p.boa;\/\/\u0432\u043e\u0442 \u0434\u043e\u0441\u043a\u0430, \u043a\u0430\u043a\u043e\u0439 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0445\u043e\u0434 \u043d\u0430\u0437\u0430\u0434\r\n b.e:=p.e;\/\/\u0432\u043e\u0442 \u0447\u0435\u0439 \u0445\u043e\u0434\r\n b.mv0:=p.mv0;\/\/\u0438 \u0432\u043e\u0442 \u043a\u0430\u043a\u043e\u0439 \u044d\u0442\u043e \u0445\u043e\u0434\r\n b.mv1:=p.mv1;\r\n if p.p<>nil then\/\/\u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u043f\u0440\u0438 BOM\r\n begin\r\n h:=p.p;\r\n Dispose(p);\r\n p:=h;\r\n end;\r\n end;\r\nend;\r\n\r\n\/\/**************************************************************************************************\r\nfunction appraisemove(mv0,mv1:cardinal;brd:Pboard;n_motiv:byte):smallint;\/\/\u043e\u0446\u0435\u043d\u043a\u0430 \u0445\u043e\u0434\u0430, \u0431\u0435\u0437 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\r\n\/\/**************************************************************************************************\r\n\/\/\u043e\u0446\u0435\u043d\u043a\u0430 \u0445\u043e\u0434\u0430 \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\r\nvar pr,nxt,lady,side:byte;\r\n get_lady, get_ch, get_ld:byte;\/\/\u0441\u0442\u0430\u043b\u0438 \u0434\u0430\u043c\u043a\u043e\u0439, \u0441\u043a\u043e\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0448\u0430\u0448\u0435\u043a \u0440\u0443\u0431\u0430\u043d\u0443\u043b\u0438, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043c\u043e\u043a \u0437\u0430\u0440\u0443\u0431\u0438\u043b\u0438\r\n mem1,mem2:cardinal;\r\nlabel circ,cont,lady_del,rubka,fina;\r\nbegin\r\n pr:=mv0 and $1f;\r\n mem1:=brd.sde;\/\/\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u044f \u0434\u043e\u0441\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c\u0438\r\n mem2:=brd.top;\r\n asm\r\n xor dh,dh\/\/ mov dx,pr\r\n mov dl,pr;\r\n mov eax,mem1;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0432 side\r\n xor cl,cl;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cl;\r\n bt eax,dx;\r\n rcl cl,1;\r\n mov side,cl;\r\n mov eax,mem2;\/\/\u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043c lady\r\n xor cl,cl;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cl;\r\n bt eax,dx;\r\n rcl cl,1;\r\n mov lady,cl;\r\n mov get_lady,0;\/\/\u0444\u043b\u0430\u0433 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0448\u0430\u0448\u043a\u0438 \u0432 \u0434\u0430\u043c\u043a\u0443\r\n mov ax,word ptr mv0;\/\/\u0442\u0438\u043f\u0430 \u0441\u043b\u043e\u0432\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0447\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\r\n bt ax,7;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0444\u043b\u0430\u0433 \u0440\u0443\u0431\u043a\u0438\r\n jc rubka\/\/\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0435\u0441\u043b\u0438 \u0445\u043e\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0440\u0443\u0431\u043a\u0443\r\n and ah,$1f;\/\/\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0448\u0430\u0448\u043a\u0438\r\n mov nxt,ah;\/\/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 nxt\r\n end;\r\n if ((nxt>27) and (side=0)) or ((nxt<4) and (side=1)) then get_lady:=1;\/\/\u0441\u0442\u0430\u043b\u0430 \u043b\u0438 \u0434\u0430\u043c\u043a\u043e\u0439?\r\n result:=motvs[n_motiv,pe_move];\r\n asm\r\n jmp fina; \/\/\u0438\u0434\u0435\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\r\nrubka:\/\/\u0435\u0441\u043b\u0438 \u0440\u0443\u0431\u043a\u0430\r\n mov get_ch,0;\/\/\u0447\u0438\u0441\u043b\u043e \u0441\u0440\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0448\u0435\u043a\r\n mov get_ld,0;\/\/\u0447\u0438\u0441\u043b\u043e \u0441\u0440\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043c\u043e\u043a\r\ncirc:\r\n mov eax,mv1; \/\/mv:=mv shr 8;\/\/\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f\r\n shrd mv0,eax,8;\r\n shr eax,8;\r\n mov mv1,eax;\r\n mov al,byte ptr mv0;\r\n mov nxt,al;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u0435\u0441\u044c \u0431\u0430\u0439\u0442 \u0441 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439\r\n end;\r\n pr:=mvs[nxt shr 6,nxt and $1f];\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0430\u0442\u0430\u043a\u0443\u0435\u043c\u043e\u0439 \u0448\u0430\u0448\u043a\u0438\r\n asm\r\n\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043a\u043e\u0433\u043e \u043c\u044b \u0441\u0440\u0443\u0431\u0438\u043b\u0438 \u0434\u0430\u043c\u043a\u0443 \u0438\u043b\u0438 \u043f\u0435\u0448\u043a\u0443\r\n xor dh,dh\r\n mov dl,pr;\r\n mov eax,mem2;\r\n bt eax,dx;\r\n jc lady_del; \/\/\u043f\u0435\u0440\u0435\u0445\u043e\u0434 , \u0435\u0441\u043b\u0438 \u0440\u0443\u0431\u0438\u043c \u0434\u0430\u043c\u043a\u0443\r\n inc get_ch;\r\n jmp cont;\r\nlady_del:\r\n inc get_ld;\r\ncont:\r\n end;\r\n pr:=nxt and $1f;\r\n if ((pr>27) and (side=0)) or ((pr<4) and (side=1)) then get_lady:=1;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043b\u0438 \u0448\u0430\u0448\u043a\u0430 \u0434\u0430\u043c\u043a\u043e\u0439\r\n if (nxt and $20)=0 then goto circ;\r\n result:=get_ch*motvs[n_motiv,pe_kick]+get_ld*motvs[n_motiv,pe_lkick];\/\/\u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u0441\u043a\u0443\u0448\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u043e\u0432 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\r\nfina:\r\n if (lady=0) and (get_lady=1) then\r\n result:=result+motvs[n_motiv,pe_lmake];\/\/\u0445\u043e\u0434 \u0441 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043c\u043a\u0438\r\nend;\r\n\r\n\/\/**************************************************************************************************\r\nprocedure forsemove(mv0,mv1:cardinal;brd:Pboard);\r\n\/\/**************************************************************************************************\r\n\/\/\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0445\u043e\u0434\u0430 mv,\u043d\u0430 \u0434\u043e\u0441\u043a\u0435 brd\r\nvar pr,nxt,lady,side:byte;\r\n mem0,mem1,mem2:cardinal;\r\nlabel circ,entry,itslady,itsside,cont,cont1,store,recircl;\r\nbegin\r\n mem0:=brd.pos;\/\/\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u044f \u0434\u043e\u0441\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c\u0438\r\n mem1:=brd.sde;\r\n mem2:=brd.top;\r\n asm\/\/\u0433\u0430\u0441\u0438\u043c \u0431\u0438\u0442 pr \u0432 brd.pos - \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0448\u0430\u0448\u043a\u0438 \u0441 \u0434\u043e\u0441\u043a\u0438\r\n mov dl,byte ptr mv0;\/\/\u0437\u0430\u043f\u0438\u0441\u044c \u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432 pr \u0438 dl\r\n and dl,$1f;\r\n mov pr,dl;\r\n xor dh,dh\/\/ mov dx,pr\r\n mov dl,pr;\r\n mov eax,mem0;\r\n btr eax,dx;\r\n mov mem0,eax;\r\n mov eax,mem1;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0432 side\r\n xor cl,cl;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cl;\r\n bt eax,dx;\r\n rcl cl,1;\r\n mov side,cl;\r\n mov eax,mem2;\/\/\u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043c lady\r\n xor cl,cl;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cl;\r\n bt eax,dx;\r\n rcl cl,1;\r\n mov lady,cl;\r\n mov ax,word ptr mv0;\/\/\u0442\u0438\u043f\u0430 \u0441\u043b\u043e\u0432\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0447\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\r\n bt ax,7;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0444\u043b\u0430\u0433 \u0440\u0443\u0431\u043a\u0438\r\n jc circ\/\/\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0435\u0441\u043b\u0438 \u0445\u043e\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0440\u0443\u0431\u043a\u0443\r\n and ah,$1f;\/\/\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0448\u0430\u0448\u043a\u0438\r\n mov nxt,ah;\/\/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 nxt\r\n end;\r\nentry:\r\n if ((nxt>27) and (side=0)) or ((nxt<4) and (side=1)) then lady:=1;\/\/\u0448\u0430\u0448\u043a\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u0430\u043c\u043a\u043e\u0439 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0435\u0439 \u043f\u0440\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u043a\u0440\u0430\u0439\u043d\u0435\u0433\u043e \u043f\u043e\u043b\u044f\r\n asm\/\/\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0431\u0438\u0442 nxt \u0432 brd.pos - \u043d\u043e\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0448\u0430\u0448\u043a\u0438\r\n xor dh,dh; \/\/mov dx,nxt\r\n mov dl,nxt;\r\n mov eax,mem0;\r\n bts eax,dx;\r\n mov mem0,eax;\r\n mov eax,mem2;\/\/\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 eax - \u043a\u0430\u0440\u0442\u043e\u0439 \u0434\u0430\u043c\u043e\u043a\r\n cmp lady,1;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u043b\u0430\u0433 lady\r\n jz itslady;\r\n btr eax,dx;\r\n jmp cont;\r\nitslady:\r\n bts eax,dx;\r\ncont:\r\n mov mem2,eax;\/\/\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \u0434\u0430\u043c\u043e\u043a\r\n mov eax,mem1;\/\/\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 eax - \u043a\u0430\u0440\u0442\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\r\n cmp side,1;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u043b\u0430\u0433 side\r\n jz itsside;\r\n btr eax,dx;\r\n jmp cont1;\r\nitsside:\r\n bts eax,dx;\r\ncont1:\r\n mov mem1,eax;\/\/\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\r\n jmp store;\r\n\/\/\u0435\u0441\u043b\u0438 \u0440\u0443\u0431\u043a\u0430\r\ncirc:\r\n mov eax,mv1; \/\/mv:=mv shr 8;\/\/\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f\r\n shrd mv0,eax,8;\r\n shr eax,8;\r\n mov mv1,eax;\r\n mov al,byte ptr mv0;\r\n mov nxt,al;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u0435\u0441\u044c \u0431\u0430\u0439\u0442 \u0441 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439\r\n end;\r\n pr:=mvs[nxt shr 6,nxt and $1f];\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0430\u0442\u0430\u043a\u0443\u0435\u043c\u043e\u0439 \u0448\u0430\u0448\u043a\u0438\r\n asm\r\n\/\/\u0433\u0430\u0441\u0438\u043c \u0431\u0438\u0442 pr \u0432 brd.pos - \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0440\u0443\u0431\u043b\u0435\u043d\u043d\u043e\u0439 \u0448\u0430\u0448\u043a\u0438 \u0441 \u0434\u043e\u0441\u043a\u0438\r\n xor dh,dh\/\/\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0432 dx \u043d\u043e\u043c\u0435\u0440 \u0431\u0438\u0442\u0430\r\n mov dl,pr;\r\n mov eax,mem0;\/\/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u0431\u0438\u0442\r\n btr eax,dx;\r\n mov mem0,eax;\r\n mov al,nxt;\/\/\u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0445\u043e\u0434\u0430 if (nxt and $20)<>0 then\r\n bt ax,5;\/\/\u0431\u0438\u0442 \u043d\u043e\u043c\u0435\u0440 5\r\n jnc recircl;\r\n and al,$1f;\/\/\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u043b\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u043e\u0441\u043a\u0438\r\n mov nxt,al;\/\/\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 nxt\r\n jmp entry;\/\/\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0448\u0430\u0448\u043a\u0438 \u043d\u0430 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438\r\n end;\r\nrecircl:\r\n nxt:=nxt and $1f;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0447\/\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u0448\u0430 \u0448\u0430\u0448\u043a\u0430\r\n if ((nxt>27) and (side=0)) or ((nxt<4) and (side=1)) then lady:=1;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043b\u0438 \u043e\u043d\u0430 \u0434\u0430\u043c\u043a\u043e\u0439\r\n goto circ;\r\nstore:\r\n brd.pos:=mem0;\/\/\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u044f \u0434\u043e\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0438\u0437 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\r\n brd.sde:=mem1;\r\n brd.top:=mem2;\r\nend;\r\n\r\nprocedure Trinagle(x1,y1,x2,y2,x3,y3:smallint;c:tcanvas);\r\nbegin\r\n c.MoveTo(x1,y1);\r\n c.LineTo(x2,y2);\r\n c.LineTo(x3,y3);\r\n c.LineTo(x1,y1);\r\nend;\r\n\r\nend.<\/pre>\n","protected":false},"excerpt":{"rendered":"unit structures; interface uses graphics,Sysutils; const maxsize = 7; err = 100;\/\/\u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u0443\u0434\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u043b\u0438 \u0445\u043e\u0434 \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d motvs:array [0..1] of array [0..4] of smallint = \/\/\u043c\u0430\u0441\u0441\u0438\u0432 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0439 (( 0, 5, 11, 10,-150),\/\/\u0446\u0435\u043d\u0430 \u0445\u043e\u0434\u0430, \u0440\u0443\u0431\u043a\u0438 \u0448\u0430\u0448\u043a\u0438, \u0440\u0443\u0431\u043a\u0438 \u0434\u0430\u043c\u043a\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043c\u043a\u0438, \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u0430 ( 0,-6,-10,-11,165)); pe_move = 0; \/\/\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043c\u043e\u0442\u0438\u0432\u043e\u0432 pe_kick = 1; […]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":319,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"acf":[],"yoast_head":"\n
\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures – Shra's homepage<\/title>\n\n\n\n\n\n\n\n\n\n\n\n\t\n