1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
ЛЮДИ ПОМОГИТЕ!!!!!!!!!!!!!!!!!! СРОЧНО НЕОБХОДИМО РАСПИСАТЬ С ТЕОРИТИЧЕСКОЙ ТОЧКИ ЗРЕНИЯ ПРОГРАММУ КРЕСТИКИ-НОЛИКИ... Что делает каждая процедура, само тело программы, пошагово..... ОТКЛИКНИТЕСЬ УМОЛЯЮ...
Вот и сама прога, прога не моя, а интернетовская...
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.
пользуйся тегами, а по поводу разбора кода обратись к его автору, врядли кто-то возьмется разжевывать чужой код klem4