Поиск по этому блогу

воскресенье, 30 апреля 2017 г.

«Крестики-нолики»


Правила игры классические. Игра в крестики-нолики ведется на квадратном поле 3х3. Играют двое. Начинают «крестики». Каждый из игроков, поочередно, ставит свой значок, крестик или нолик, на свободную клетку. Выигрывает тот, кто первым поставит три своих значка в ряд по вертикали, горизонтали или диагонали. Задается последовательность ходов. Определить, кто выиграл, «крестики» или «нолики»? Последовательность ходов задается 9-значным числом. Цифра числа обозначает номер клетки хода, а порядковый номер цифры – номер хода. Клетки пронумерованы так, как показано на рисунке. Написать программу, которая запрашивает код позиции и выводит значок выигравшей стороны или слово «ничья». Правильность кода позиции проверять не надо.
Пример. Вход: 123456789. Выход: х.

Решение


{krestiki-noliki}
program K_N;
Var i,j,k,s1,s2,s3,s4,s5,s6,s7,s8,e,x: integer;
       h:string;
       b:boolean;
       a:array [1..3,1..3] of integer;
begin
   b:=false;
   Writeln('vvedite hody');
   h:='';
   while length(h)<>9 do
      readln(h);
   k:=-1; s1:=0; s2:=0;s3:=0;s4:=0;s5:=0;s6:=0;s7:=0;s8:=0;
   i:=1;
   while (i<10) and not(b) do
     begin
       k:=k*(-1); val(h[i],x,e);
       case x of
         1: begin a[3,1]:=k; s8:=s8+k; s3:=s3+k; s2:=s2+k; end;
         2: begin a[3,2]:=k; s8:=s8+k; s4:=s4+k; end;
         3: begin a[3,3]:=k; s8:=s8+k; s5:=s5+k; s1:=s1+k; end;
         4: begin a[2,1]:=k; s7:=s7+k; s3:=s3+k; end;
         5: begin a[2,2]:=k; s7:=s7+k; s4:=s4+k; s2:=s2+k;s1:=s1+k; end;
         6: begin a[3,1]:=k; s8:=s8+k; s3:=s3+k; s2:=s2+k; end;
         7: begin a[1,1]:=k; s6:=s6+k; s3:=s3+k; s1:=s1+k; end;
         8: begin a[1,2]:=k; s6:=s6+k; s4:=s4+k; end;
         9: begin a[1,3]:=k; s6:=s6+k; s5:=s5+k; s2:=s2+k; end;
      end;
      if (abs(s1)=3) or (abs(s2)=3) or (abs(s3)=3) or (abs(s4)=3) or (abs(s5)=3) or (abs(s6)=3) or (      abs(s7)=3) or (abs(s8)=3) then
          if k=1 then begin writeln('win x'); b:=true; end else begin writeln('win o'); b:=true; end;
    i:=i+1;
   end;
   if not(b) then write('nithya');
      for i:=1 to 3 do
        begin
           writeln;
           for j:=1 to 3 do
              if a[i,j]=0 then write(' ')
                             else
                                if a[i,j]=1 then write (' x ') else write(' o ');
     end;
end.

Комментариев нет:

Отправить комментарий