ЛЮДИ ПОМОГИТЕ!!!!!!!!!!!!!!!!!! СРОЧНО НЕОБХОДИМО РАСПИСАТЬ С ТЕОРИТИЧЕСКОЙ ТОЧКИ ЗРЕНИЯ ПРОГРАММУ КРЕСТИКИ-НОЛИКИ... Что делает каждая процедура, само тело программы, пошагово..... ОТКЛИКНИТЕСЬ УМОЛЯЮ... unsure.gif unsure.gif unsure.gif

Вот и сама прога, прога не моя, а интернетовская...

program KECT;
uses crt,graph;

const cvet:array[boolean] Of integer=(red,blue);		
      sic:array[boolean] Of String=('OBHYLATEL','KPECTOBCHIK');
      letter:array[boolean] Of Char=('0','X');
      amount:array[boolean] Of integer=(7,10);
      possibleLetters:set of char=['1' .. '9'];

var tbl:array[1..3,1..3] of integer;				
    z,ax,ay,i,bg,mode,j,imove,p,posX,posY:integer;
    curr,ch:char;
    winner,ok,flag,b,stopped:boolean;

function sumR(x:integer):integer;				
var i,s:integer;
  begin
  s:=0;
  for i:=1 to 3 do
  s:=s+tbl[x,i];
  sumR:=s
end;
	
function sumC(x:integer):integer;				
var i,s:integer;
  begin
  s:=0;
  for i:=1 to 3 do
  s:=s+tbl[i,x];
  sumC:=s
end;


function sumDiag(main:boolean):integer;				
var i,s:integer;
  begin
  s:= 0;
    case main of
    false: for i:=1 to 3 do
           s:=s+tbl[i,i];
    true: for i:=1 to 3 do
          s:=s+tbl[i,4-i]
    end;
    sumDiag:=s
end;

Procedure PutChar(b:boolean;x,y:integer;c:Char);		
var cx,cy:integer;
    begin
    cx:=x*(getmaxx Div 5)+(getmaxx div 10);
    cy:=y*(getmaxy Div 5)+(getmaxy div 10);
    setcolor(cvet[ b ]);
    settextjustify(centertext,centertext);
    outtextxy(cx,cy,c);
    setcolor(green);
    end;

begin						
  bg:=detect;
  initgraph(bg,mode,'c:\bp\bgi');
    for i := 1 to 3 do
      for j := 1 to 3 do
      tbl[i, j] := 0;
      ax := getmaxx Div 5;
      ay := getmaxy Div 5;
        for z:= 1 to 4 do
        line(ax, z*ay, 4*ax, z*ay);
          for z:= 1 to 4 do
          line(z*ax, ay, z*ax, 4*ay);
            for imove := 1 to 9 do
            begin
            setviewport(1, getmaxy-60, getmaxx, getmaxy, true);
            clearviewport;
            setviewport(1, 1, getmaxx, getmaxy, true);
            outtextxy(getmaxx div 2, getmaxy - 30, sic[odd(imove)]);
      repeat
      ch:= readkey;
      until ch in possibleletters;
      possibleletters:=possibleletters-[ch];
      p:=Ord(ch)-Ord('0');
      posY:=(((p-1) div 3)*(-1))+3;
      posX:=((p) mod 3);
      if posX=0 then posX:=3;
      PutChar(odd(imove),posX,posY,letter[odd(imove)]);
      tbl[posX,posY]:=amount[odd(imove)];
      stopped:=false;
        for b:=false to true do
        begin
          for i := 1 to 3 do
          if (sumR(i)=3*amount[ b ]) or (sumC(i)=3*amount[ b ]) then
              begin
              winner:=b; stopped:=true;
              end;
          if not stopped then
            if (sumDiag(false)=3*amount[ b ]) or (sumDiag(true)=3*amount[ b ]) then
              begin
              winner:=b; stopped:=true;
              end;
        end;
    if stopped then break;
    end;
  setviewport(1, getmaxy-60, getmaxx, getmaxy, true);
  clearviewport;
  setviewport(1, 1, getmaxx, getmaxy, true);
    if stopped then
      begin				
      cleardevice;
    setactivepage(1);
    begin
    setcolor(red);
    settextstyle (7,0,5);
    outtextxy(getmaxx div 2, (getmaxy div 2)+60,'BIGPAL '+sic[winner]);
    outtextxy((getmaxx div 2), ((getmaxy div 2)-60)+60,'YPA '+sic[winner]+'Y');
    setcolor(white);
    end;
    flag:=true;
    while not keypressed do
    begin
    if flag=true then
    begin
    setvisualpage (1);
    setactivepage (0);
    begin
    setcolor(blue);
    settextstyle (7,0,5);
    outtextxy((getmaxx div 2), ((getmaxy div 2)-32)+60,'BIGPAL '+sic[winner]);
    outtextxy((getmaxx div 2), ((getmaxy div 2)-92)+60,'YPA '+sic[winner]+'Y');
    setcolor(white);
    end;
    end
    else begin
    setvisualpage (0);
    delay (500);
    setactivepage (1);
    end;
    flag:=not flag;
    end;
       readln
    end
  else
    begin				
    cleardevice;
    setactivepage(1);
    begin
    setcolor(red);
    settextstyle (1,0,5);
    outtextxy(getmaxx div 2, getmaxy div 2, 'FYYYYYY, HUKTO HE BIGPAL!');
    setcolor(white);
    end;
    flag:=true;
    while not keypressed do
    begin
    if flag=true then
    begin
    setvisualpage (1);
    setactivepage (0);
    begin
    setcolor(blue);
    settextstyle (1,0,5);
    outtextxy(getmaxx div 2, (getmaxy div 2)-32, 'FYYYYYY, HUKTO HE BIGPAL!');
    setcolor(white);
    end;
    end
    else begin
    setvisualpage (0);
    delay (500);
    setactivepage (1);
    end;
    flag:=not flag;
    end;
    closeGraph
end;
end.
unsure.gif unsure.gif unsure.gif unsure.gif unsure.gif

пользуйся тегами, а по поводу разбора кода обратись к его автору, врядли кто-то возьмется разжевывать чужой код
klem4