Previous Entry Share Next Entry
Шахматы (FP)
Аватар
eolegv
Ну вот мы я и добрался до своей первой большой программы, где-то 500 строк. Ну немного истории. Началось все с олимпиадной задачи в которой надо было нарисовать шахматную доску, ну я не смог на этом остановиться и решил написать игру. Я помню сидел писал эту программу дня 3-4, не потому что было сложно, а потому что надо было вводить текст. В игре можно играть только вдвоем, ну или сам на сам, компьютера я не написал, я даже не знал откуда надо было начинать, так что ограничился только этим. Игра заканчивается после того как кто-нибудь съест короля, в принципе это тоже самое что и мат, но чтоб слишком не мудрить я поступил так. Вот текст этой программы

program chess;
uses graph,crt;
var a,b,c,d,i,k,j,x,y,p1,p2,flus:integer;
    st:string;
    desC,desB:array[1..8,'a'..'h'] of string;
    xs,ys:array[1..8,'a'..'h'] of integer;
    g,o1,o2,zam:char;
    np,kp:string;hok:boolean;
procedure desk;
begin
y:=100;
setfillstyle(1,white);setcolor(white);setlinestyle(0,0,1);
for i:=1 to 8 do begin
x:=100;y:=y+70;
for j:=1 to 8 do
  begin
  x:=x+70;
  if i mod 2=0 then
   if j mod 2=0 then bar(x,y,x+70,y+70)
    else rectangle(x,y,x+70,y+70)
               else
    if j mod 2=0 then bar(x,y,x+70,y+70)
    else rectangle(x,y,x+70,y+70)
  end; end;
settextstyle(1,0,3);
x:=135;y:=125;i:=0;
repeat
y:=y+70;
i:=i+1;
str(i,st);
outtextxy(x,y,st);
outtextxy(x+610,y,st);
until i=8;
x:=125;y:=120;i:=0;
repeat
x:=x+70;
i:=i+1;
case i of
1:st:='A';5:st:='E';
2:st:='B';6:st:='F';
3:st:='C';7:st:='G';
4:st:='D';8:st:='H';end;
outtextxy(x,y,st);
outtextxy(x,y+640,st);
until i=8;
end;
procedure new;
begin
for g:='a' to 'h' do
begin
desC[2,g]:='I';
desB[7,g]:='I';end;
desC[1,'a']:='L';desC[1,'h']:='L';
desB[8,'a']:='L';desB[8,'h']:='L';
desC[1,'b']:='H';desC[1,'g']:='H';
desB[8,'b']:='H';desB[8,'g']:='H';
desC[1,'c']:='S';desC[1,'f']:='S';
desB[8,'c']:='S';desB[8,'f']:='S';
desC[1,'d']:='Q';desC[1,'e']:='K';
desB[8,'d']:='Q';desB[8,'e']:='K';
for i:=3 to 6 do for g:='a' to 'h' do begin desC[i,g]:='';desB[i,g]:='';end;
end;
procedure peshka(serX,serY:integer);
begin
bar(serX-25,serY+15,serX+25,serY+30);
bar(serX-7,serY-10,serX+7,serY+15);
fillellipse(serX,serY-15,14,14);
end;
procedure ladya(serX,serY:integer);
begin
bar(serX-25,serY+15,serX+25,serY+30);
bar(serX-10,serY-5,serX+10,serY+15);
bar(serX-20,serY-16,serX+20,serY-1);
bar(serX-20,serY-24,serX-10,serY-16);
bar(serX+10,serY-24,serX+20,serY-16);
bar(serX-5,serY-20,serX+5,serY-16);
end;
procedure horse(serX,serY:integer);
var hl,ui:integer;
begin
bar(serX-25,serY+15,serX+25,serY+30);
ui:=-5;
for hl:=1 to 4 do begin ui:=ui+5;
bar(serX-10+ui,serY+10-ui,serX+10+ui,serY+15-ui);end;
ui:=0;
for hl:=1 to 2 do begin ui:=ui+5;
bar(serX+5-ui,serY-5-ui,serX+25-ui,serY-ui);end;
bar(serX-23,serY-20,serX+15,serY-15);
bar(serX-23,serY-15,serX-10,serY-5);
bar(serX-20,sery-20,serX+10,sery-25);
bar(serX-15,sery-25,serX+5,sery-30);
end;
procedure slon(serx,sery:integer);
begin
bar(serX-25,serY+15,serX+25,serY+30);
bar(serx-5,sery+10,serx+5,sery+15);
fillellipse(serx,sery-10,10,20);
fillellipse(serx,sery-20,15,3);
end;
procedure queen(serx,sery:integer);
begin
bar(serX-25,serY+24,serX+25,serY+30);
bar(serx-3,sery-25,serx+3,sery+24);
fillellipse(serx-12,sery-5,10,23);
fillellipse(serx+12,sery-5,10,23);
end;
procedure king(serx,sery:integer);
var mast:array[1..10,1..2] of integer;
begin
bar(serX-20,serY+24,serX+20,serY+30);
mast[1,1]:=serX-20;mast[1,2]:=serY+24;
mast[2,1]:=serx-30 ;mast[2,2]:=sery ;
mast[3,1]:=serx-13 ;mast[3,2]:=sery+15 ;
mast[4,1]:=serx-10 ;mast[4,2]:=sery-25 ;
mast[5,1]:=serx ;mast[5,2]:=sery+10 ;
mast[6,1]:=serx+10 ;mast[6,2]:=sery-25 ;
mast[7,1]:=serx+13 ;mast[7,2]:=sery+15 ;
mast[8,1]:=serx+30 ;mast[8,2]:=sery ;
mast[9,1]:=serX+20 ;mast[9,2]:=serY+24 ;
fillpoly(9,mast);
end;
procedure refresh;
begin
cleardevice;desk;
setcolor(red);setfillstyle(1,red);
for i:=1 to 8 do
for g:='a' to 'h' do begin
if desB[i,g]<>'' then
case desB[i,g][1] of
'I':peshka(xs[i,g],ys[i,g]);
'L':ladya(xs[i,g],ys[i,g]);
'H':horse(xs[i,g],ys[i,g]);
'S':slon(xs[i,g],ys[i,g]);
'Q':queen(xs[i,g],ys[i,g]);
'K':king(xs[i,g],ys[i,g]);
end;end;{
outtextxy(xs[i,g],ys[i,g],desB[i,g]);end;}
setcolor(blue);setfillstyle(1,blue);
for i:=1 to 8 do
for g:='a' to 'h' do begin
if desC[i,g]<>'' then
case desC[i,g][1] of
'I':peshka(xs[i,g],ys[i,g]);
'L':ladya(xs[i,g],ys[i,g]);
'H':horse(xs[i,g],ys[i,g]);
'S':slon(xs[i,g],ys[i,g]);
'Q':queen(xs[i,g],ys[i,g]);
'K':king(xs[i,g],ys[i,g]);end;end;{
outtextxy(xs[i,g],ys[i,g],desC[i,g]);end;}

end;

procedure hodB(un,uk:string;var yiy:boolean);
var u1,u2,er,ii:integer;h1,h2,jj,pro:char;kik:boolean;
begin
val(un[1],u1,er);val(uk[1],u2,er);
h1:=un[2];h2:=uk[2];
kik:=false;pro:=desB[u1,h1][1];
if desB[u2,h2]='' then
case pro of
'I':begin
if desC[u2,h2]='' then
if u1=7 then begin
  if (u2=6)or(u2=5) then
   if h1=h2 then kik:=true end
   else if u2=u1-1 then if h1=h2 then kik:=true;
if u2=u1-1 then
  if (ord(h1)=ord(h2)-1)or(ord(h1)=ord(h2)+1) then
   if desC[u2,h2]<>'' then begin kik:=true;desC[u2,h2]:='';end;
   if u2=1 then

    repeat
   writeln('Ќ  Є Єго дЁЈгаг е®вЁвҐ н ¬Ґ­Ёвм ЇҐиЄг');
   readln(zam);
   case zam of
   'Q':desB[u1,h1]:='Q';'H':desB[u1,h1]:='H';
   'S':desB[u1,h1]:='S';'L':desB[u1,h1]:='L';else
   writeln('ЌҐўҐа­ п дЁЈга  Ї®ўв®аЁвҐ!');end;
   until desB[u1,h1]<>'I';

   end;
'L':begin
if h1=h2 then begin kik:=true;
  if u1<u2 then begin
  for ii:=u1+1 to u2 do if desB[ii,h1]<>'' then kik:=false;end
   else for ii:=u2 to u1-1 do if desB[ii,h1]<>'' then kik:=false;end;
if u1=u2 then begin kik:=true;
  if ord(h1)<ord(h2) then begin
  for jj:=chr(ord(h1)+1) to h2 do if desB[u1,jj]<>'' then kik:=false;end
   else for jj:=h2 to chr(ord(h1)-1) do if desB[u1,jj]<>'' then kik:=false;end;
  if kik and(desC[u2,h2]<>'') then desC[u2,h2]:='';
  if ((uk='8f')or(uk='8d'))and(desB[8,'e']='K')then
   begin
   writeln('•®вЁвҐ ᤥ« вм а ЄЁа®ўЄг:(Y/N)');
   readln(zam);
   if (zam='Y')and(uk='8f') then
    begin desB[8,'e']:='';desB[8,'g']:='K';end;
   if (zam='Y')and(uk='8d') then
    begin desB[8,'e']:='';desB[8,'c']:='K';end;end;
  end;
'H':begin
if (u2=u1+2)or(u2=u1-2) then
  if (ord(h2)=ord(h1)-1)or(ord(h2)=ord(h1)+1) then
   if desC[u2,h2]<>'' then begin kik:=true;desC[u2,h2]:='';end else kik:=true;
if (ord(h2)=ord(h1)-2)or(ord(h2)=ord(h1)+2) then
  if (u2=u1-1)or(u2=u1+1) then
   if desC[u2,h2]<>'' then begin kik:=true;desC[u2,h2]:='';end else kik:=true;
    end;
'S': begin
if abs(ord(h2)-ord(h1))=abs(u2-u1) then
  begin kik:=true;
  if (h2>h1)and(u2>u1) then begin ii:=u1;
   for jj:=chr(ord(h1)+1) to h2 do
     begin ii:=ii+1;
     if desB[ii,jj]<>''then kik:=false;end;end;
  if (h2<h1)and(u2>u1) then begin ii:=u1;
   for jj:=chr(ord(h1)-1) downto h2  do
     begin ii:=ii+1;
     if desB[ii,jj]<>''then kik:=false;end;end;
  if (h2>h1)and(u2<u1) then begin ii:=u1;
   for jj:=chr(ord(h1)+1) to h2 do
     begin ii:=ii-1;
     if desB[ii,jj]<>''then kik:=false;end;end;
  if (h2<h1)and(u2<u1) then begin ii:=u1;
   for jj:=chr(ord(h1)-1)downto h2 do
     begin ii:=ii-1;
     if desB[ii,jj]<>''then kik:=false;end;end;
   end;
  if kik and(desC[u2,h2]<>'') then desC[u2,h2]:='';
    end;
'Q':begin
   if h1=h2 then begin kik:=true;
  if u1<u2 then begin
  for ii:=u1+1 to u2 do if desB[ii,h1]<>'' then kik:=false;end
   else for ii:=u2 to u1-1 do if desB[ii,h1]<>'' then kik:=false;end;
if u1=u2 then begin kik:=true;
  if ord(h1)<ord(h2) then begin
  for jj:=chr(ord(h1)+1) to h2 do if desB[u1,jj]<>'' then kik:=false;end
   else for jj:=h2 to chr(ord(h1)-1) do if desB[u1,jj]<>'' then kik:=false;end;
   if kik and(desC[u2,h2]<>'') then desC[u2,h2]:='';
   if abs(ord(h2)-ord(h1))=abs(u2-u1) then
  begin kik:=true;
  if (h2>h1)and(u2>u1) then begin ii:=u1;
   for jj:=chr(ord(h1)+1) to h2 do
     begin ii:=ii+1;
     if desB[ii,jj]<>''then kik:=false;end;end;
  if (h2<h1)and(u2>u1) then begin ii:=u1;
   for jj:=chr(ord(h1)-1) downto h2  do
     begin ii:=ii+1;
     if desB[ii,jj]<>''then kik:=false;end;end;
  if (h2>h1)and(u2<u1) then begin ii:=u1;
   for jj:=chr(ord(h1)+1) to h2 do
     begin ii:=ii-1;
     if desB[ii,jj]<>''then kik:=false;end;end;
  if (h2<h1)and(u2<u1) then begin ii:=u1;
   for jj:=chr(ord(h1)-1)downto h2 do
     begin ii:=ii-1;
     if desB[ii,jj]<>''then kik:=false;end;end;
   end;
  if kik and(desC[u2,h2]<>'') then desC[u2,h2]:='';
   end;
'K':begin
   if (u2=u1+1)or(u2=u1-1)or(u2=u1) then
    if (ord(h2)=ord(h1)-1)or(ord(h2)=ord(h1)+1)or(h2=h1)then kik:=true;

    if kik and(desC[u2,h2]<>'')then desC[u2,h2]:='';
   end;
end;

if kik then begin desB[u2,h2]:=desB[u1,h1];
desB[u1,h1]:='';end else writeln('ЌҐЇа ўЁ«м­л© 室');
yiy:=kik;

end;

procedure hodC(un,uk:string;var yiy:boolean);
var u1,u2,er,ii:integer;h1,h2,jj,pro,zam:char;kik:boolean;
begin
val(un[1],u1,er);val(uk[1],u2,er);
h1:=un[2];h2:=uk[2];
kik:=false;pro:=desC[u1,h1][1];
if desC[u2,h2]='' then
case pro of
'I':begin
if desB[u2,h2]=''then
if u1=2 then begin
  if (u2=3)or(u2=4) then
   if h1=h2 then kik:=true end
   else if u2=u1+1 then if h1=h2 then kik:=true;
if u2=u1+1 then
  if (ord(h1)=ord(h2)-1)or(ord(h1)=ord(h2)+1) then
   if desB[u2,h2]<>'' then begin kik:=true;desB[u2,h2]:='';end;
    if u2=8 then repeat
   writeln('Ќ  Є Єго дЁЈгаг е®вЁвҐ н ¬Ґ­Ёвм ЇҐиЄг');
   readln(zam);
   case zam of
   'Q':desC[u1,h1]:='Q';'H':desC[u1,h1]:='H';
   'S':desC[u1,h1]:='S';'L':desC[u1,h1]:='L';else
   writeln('ЌҐўҐа­ п дЁЈга  Ї®ўв®аЁвҐ!');end;
   until desC[u1,h1]<>'I';

   end;
'L':begin
if h1=h2 then begin kik:=true;
  if u1<u2 then begin
  for ii:=u1+1 to u2 do if desC[ii,h1]<>'' then kik:=false;end
   else for ii:=u2 to u1-1 do if desC[ii,h1]<>'' then kik:=false;end;
if u1=u2 then begin kik:=true;
  if ord(h1)<ord(h2) then begin
  for jj:=chr(ord(h1)+1) to h2 do if desC[u1,jj]<>'' then kik:=false;end
   else for jj:=h2 to chr(ord(h1)-1) do if desC[u1,jj]<>'' then kik:=false;end;
   if kik and(desB[u2,h2]<>'') then desB[u2,h2]:='';
   if ((uk='1f')or(uk='1d'))and(desC[1,'e']='K')then
   begin
   writeln('•®вЁвҐ ᤥ« вм а ЄЁа®ўЄг:(Y/N)');
   readln(zam);
   if (zam='Y')and(uk='1f') then
    begin desC[1,'e']:='';desC[1,'g']:='K';end;
   if (zam='Y')and(uk='1d') then
    begin desC[1,'e']:='';desC[1,'c']:='K';end;end;

   end;
'H':begin
if (u2=u1+2)or(u2=u1-2) then
  if (ord(h2)=ord(h1)-1)or(ord(h2)=ord(h1)+1) then
   if desB[u2,h2]<>'' then begin kik:=true;desB[u2,h2]:='';end else kik:=true;
if (ord(h2)=ord(h1)-2)or(ord(h2)=ord(h1)+2) then
  if (u2=u1-1)or(u2=u1+1) then
   if desB[u2,h2]<>'' then begin kik:=true;desB[u2,h2]:='';end else kik:=true;
    end;
'S': begin
if abs(ord(h2)-ord(h1))=abs(u2-u1) then
  begin kik:=true;
  if (h2>h1)and(u2>u1) then begin ii:=u1;
   for jj:=chr(ord(h1)+1) to h2 do
     begin ii:=ii+1;
     if desC[ii,jj]<>''then kik:=false;end;end;
  if (h2<h1)and(u2>u1) then begin ii:=u1;
   for jj:=chr(ord(h1)-1) downto h2  do
     begin ii:=ii+1;
     if desC[ii,jj]<>''then kik:=false;end;end;
  if (h2>h1)and(u2<u1) then begin ii:=u1;
   for jj:=chr(ord(h1)+1) to h2 do
     begin ii:=ii-1;
     if desC[ii,jj]<>''then kik:=false;end;end;
  if (h2<h1)and(u2<u1) then begin ii:=u1;
   for jj:=chr(ord(h1)-1)downto h2 do
     begin ii:=ii-1;
     if desC[ii,jj]<>''then kik:=false;end;end;
   end;
  if kik and(desB[u2,h2]<>'') then desB[u2,h2]:='';
    end;
'Q':begin
   if h1=h2 then begin kik:=true;
  if u1<u2 then begin
  for ii:=u1+1 to u2 do if desC[ii,h1]<>'' then kik:=false;end
   else for ii:=u2 to u1-1 do if desC[ii,h1]<>'' then kik:=false;end;
if u1=u2 then begin kik:=true;
  if ord(h1)<ord(h2) then begin
  for jj:=chr(ord(h1)+1) to h2 do if desC[u1,jj]<>'' then kik:=false;end
   else for jj:=h2 to chr(ord(h1)-1) do if desC[u1,jj]<>'' then kik:=false;end;
   if kik and(desB[u2,h2]<>'') then desB[u2,h2]:='';
   if abs(ord(h2)-ord(h1))=abs(u2-u1) then
  begin kik:=true;
  if (h2>h1)and(u2>u1) then begin ii:=u1;
   for jj:=chr(ord(h1)+1) to h2 do
     begin ii:=ii+1;
     if desC[ii,jj]<>''then kik:=false;end;end;
  if (h2<h1)and(u2>u1) then begin ii:=u1;
   for jj:=chr(ord(h1)-1) downto h2  do
     begin ii:=ii+1;
     if desC[ii,jj]<>''then kik:=false;end;end;
  if (h2>h1)and(u2<u1) then begin ii:=u1;
   for jj:=chr(ord(h1)+1) to h2 do
     begin ii:=ii-1;
     if desC[ii,jj]<>''then kik:=false;end;end;
  if (h2<h1)and(u2<u1) then begin ii:=u1;
   for jj:=chr(ord(h1)-1)downto h2 do
     begin ii:=ii-1;
     if desC[ii,jj]<>''then kik:=false;end;end;
   end;
  if kik and(desB[u2,h2]<>'') then desB[u2,h2]:='';
   end;
'K':begin
   if (u2=u1+1)or(u2=u1-1)or(u2=u1) then
    if (ord(h2)=ord(h1)-1)or(ord(h2)=ord(h1)+1)or(h2=h1)then kik:=true;

    if kik and(desB[u2,h2]<>'')then desB[u2,h2]:='';
   end;
end;

if kik then begin desC[u2,h2]:=desC[u1,h1];
desC[u1,h1]:='';end else writeln('ЌҐЇа ўЁ«м­л© 室');
yiy:=kik;
end;
function sostB:boolean;
var tit:boolean;
begin
tit:=true;
for i:=1 to 8 do
for g:='a' to 'h' do if desB[i,g]='K' then tit:=false;
sostB:=tit;
end;
function sostC:boolean;
var tit:boolean;
begin
tit:=true;
for i:=1 to 8 do
for g:='a' to 'h' do if desC[i,g]='K' then tit:=false;
sostC:=tit;
end;
procedure finishB;
begin
cleardevice;
settextstyle(1,0,7);
setcolor(red);
Outtextxy(200,500,'VICTORY WHITE!');
end;
procedure finishC;
begin
cleardevice;
settextstyle(1,0,7);
setcolor(red);
Outtextxy(200,500,'VICTORY BLACK!');
end;
procedure readhod(var nachp,konp:string);
var key,gg:char;ii:integer;stt:string;
begin
ii:=5;gg:='d';
setcolor(green);setlinestyle(0,0,3);
rectangle(xs[ii,gg]-35,ys[ii,gg]-35,xs[ii,gg]+35,ys[ii,gg]+35);
repeat
key:=readkey;
case key of
#72:if ii<>1 then begin ii:=ii-1;refresh;setcolor(green);setlinestyle(0,0,3);rectangle(xs[ii,gg]-35,ys[ii,gg]-35,xs[ii,gg]+35,ys[ii,gg]+35);end;
#80:if ii<>8 then begin ii:=ii+1;refresh;setcolor(green);setlinestyle(0,0,3);rectangle(xs[ii,gg]-35,ys[ii,gg]-35,xs[ii,gg]+35,ys[ii,gg]+35);end;
#75:if gg<>'a'then begin gg:=chr(ord(gg)-1);refresh;setcolor(green);setlinestyle(0,0,3);rectangle(xs[ii,gg]-35,ys[ii,gg]-35,xs[ii,gg]+35,ys[ii,gg]+35);end;
#77:if gg<>'h'then begin gg:=chr(ord(gg)+1);refresh;setcolor(green);setlinestyle(0,0,3);rectangle(xs[ii,gg]-35,ys[ii,gg]-35,xs[ii,gg]+35,ys[ii,gg]+35);end;
end;
until key=#13;
str(ii,stt);nachp:=stt+gg;
repeat
key:=readkey;
case key of
#72:if ii<>1 then begin ii:=ii-1;refresh;setcolor(green);setlinestyle(0,0,3);rectangle(xs[ii,gg]-35,ys[ii,gg]-35,xs[ii,gg]+35,ys[ii,gg]+35);end;
#80:if ii<>8 then begin ii:=ii+1;refresh;setcolor(green);setlinestyle(0,0,3);rectangle(xs[ii,gg]-35,ys[ii,gg]-35,xs[ii,gg]+35,ys[ii,gg]+35);end;
#75:if gg<>'a'then begin gg:=chr(ord(gg)-1);refresh;setcolor(green);setlinestyle(0,0,3);rectangle(xs[ii,gg]-35,ys[ii,gg]-35,xs[ii,gg]+35,ys[ii,gg]+35);end;
#77:if gg<>'h' then begin gg:=chr(ord(gg)+1);refresh;setcolor(green);setlinestyle(0,0,3);rectangle(xs[ii,gg]-35,ys[ii,gg]-35,xs[ii,gg]+35,ys[ii,gg]+35);end;
end;
until key=#13;
str(ii,stt);konp:=stt+gg;

end;

begin
a:=detect;
initgraph(a,b,'');
desk;
k:=135;
for g:='a' to 'h' do begin
  k:=k+70;
for j:=1 to 8 do
  xs[j,g]:=k;end;
k:=135;
for i:=1 to 8 do begin
  k:=k+70;
for g:='a' to 'h' do
  ys[i,g]:=k;end;
new;
refresh;
flus:=0;
repeat
flus:=flus+1;
repeat
outtextxy(900,getmaxy-200,'Red can move:');
readhod(np,kp);
if (ord(np[1])>48)and(ord(np[1])<57)and(ord(np[2])>96)and(ord(np[2])<105)and
(ord(kp[1])>48)and(ord(kp[1])<57)and(ord(kp[2])>96)and(ord(kp[2])<105) then
hodB(np,kp,hok)else writeln('Неправильный ход');
if sostC then begin writeln('Выиграли синие“');finishB;flus:=1000;end;
until hok=true;
if not sostC then begin
refresh;
repeat
outtextxy(900,200,'Blue can move:');
{readln(np);
readln(kp);}readhod(np,kp);
if (ord(np[1])>48)and(ord(np[1])<57)and(ord(np[2])>96)and(ord(np[2])<105)and
(ord(kp[1])>48)and(ord(kp[1])<57)and(ord(kp[2])>96)and(ord(kp[2])<105) then
hodC(np,kp,hok) else writeln('Неправильный ход');
if sostB then begin writeln('Выиграли красные“');finishC;flus:=1000;end;
until hok=true;
if not sostB then
refresh;end;
until (flus=1000)or(sostB)or(sostC);

repeat until keypressed;
end.

Алгоритм этой программы достаточно линейный, так что его будет не трудно понять. Для каждой фигурки была написана отдельная процедура. И в программе так же задано то куда и как ходит каждая фигурка, так что пойти не правильно не получится. Для того чтобы сделать ход нужно навести зеленый квадратик на нужную фигуру и нажать Enter далее навести туда куда вы хотите ее переместить и снова нажать Enter, если все сделано правильно программа сделает ход, если же нет то программа попросит повторить ход.Так же в программе реализованна операция замены пешки если она дайдет до конца доски, и ракировка. Хорошо программа будет работать при расширении 1280*1024(так как была писана на 19 мониторе) так что если у вас не видно доску просто поменяйте расширение. chess

Вот ссылки на эту программу
DepositFiles.com

ifolder.ru


?

Log in

No account? Create an account