IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Необходима инфа до ЗАВТРА!, Теория по проге...
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Иронов Игорь

Репутация: -  0  +


ЛЮДИ ПОМОГИТЕ!!!!!!!!!!!!!!!!!! СРОЧНО НЕОБХОДИМО РАСПИСАТЬ С ТЕОРИТИЧЕСКОЙ ТОЧКИ ЗРЕНИЯ ПРОГРАММУ КРЕСТИКИ-НОЛИКИ... Что делает каждая процедура, само тело программы, пошагово..... ОТКЛИКНИТЕСЬ УМОЛЯЮ... 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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 15.04.2025 20:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name