knolici.PAS

{* Kрестики-нолики *}

Unit KNOLICI;
Interface
Implementation
Begin
 writeln('Игра крестики-нолики на поле 3*3');
End.

Program XO;

Uses knolici.pas; {* Эту строку можно удалить *}
{neped 3anyckom co3dat' Fail "a.txt"}
Uses CRT, graph; {* Подключаем внешние файлы *}
Var {* Необходимые переменные *}
  Q      : byte;
  item   : 1..3;
  quit   : boolean;
  i1     : byte;
  a1     : byte;
  i2     : byte;
  a2     : byte;
  i3     : byte;
  a3     : byte;
  i4     : byte;
  a4     : byte;
  i5     : byte;
  x1     : byte;
  x2     : byte;
  x3     : byte;
  x4     : byte;
  x5     : byte;
  x6     : byte;
  x7     : byte;
  x8     : byte;
  x9     : byte;
  o1     : byte;
  o2     : byte;
  o3     : byte;
  o4     : byte;
  o5     : byte;
  o6     : byte;
  o7     : byte;
  o8     : byte;
  o9     : byte;
  S      : String;
  F      : Text;
  name   : Text;
  driver : integer;
  mode   : integer;
Procedure WriteFile(s : String);
Begin
  assign(f, 'a.txt'); {* Привязка переменной f к файлу 'a.txt' *}
  append(f); {* Подготовка переменной f для добавления строк в файл *}
  write(f, s, ' ');
  close(f); {* Закрыть файл f *}
End;
Procedure check;
Begin
  If (i1 = 1)Or(i2 = 1)Or(i3 = 1)Or(i4 = 1)Or(i5 = 1) Then
    x1 := 1;
  If (i1 = 2)Or(i2 = 2)Or(i3 = 2)Or(i4 = 2)Or(i5 = 2) Then
    x2 := 2;
  If (i1 = 3)Or(i2 = 3)Or(i3 = 3)Or(i4 = 3)Or(i5 = 3) Then
    x3 := 3;
  If (i1 = 4)Or(i2 = 4)Or(i3 = 4)Or(i4 = 4)Or(i5 = 4) Then
    x4 := 4;
  If (i1 = 5)Or(i2 = 5)Or(i3 = 5)Or(i4 = 5)Or(i5 = 5) Then
    x5 := 5;
  If (i1 = 6)Or(i2 = 6)Or(i3 = 6)Or(i4 = 6)Or(i5 = 6) Then
    x6 := 6;
  If (i1 = 7)Or(i2 = 7)Or(i3 = 7)Or(i4 = 7)Or(i5 = 7) Then
    x7 := 7;
  If (i1 = 8)Or(i2 = 8)Or(i3 = 8)Or(i4 = 8)Or(i5 = 8) Then
    x8 := 8;
  If (i1 = 9)Or(i2 = 9)Or(i3 = 9)Or(i4 = 9)Or(i5 = 9) Then
    x9 := 9; {///gopu3oHt}
  If (x1 = 1) And (x2 = 2) And (x3 = 3) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win x ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия любой клавиши *}
  Repeat
    Until keypressed; {* После нажатия любой клавиши цикл остановится *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (x4 = 4) And (x5 = 5) And (x6 = 6) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win x ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия пользователя *}
  Repeat
    Until keypressed; {* После нажатия любой клавиши цикл остановится *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (x7 = 7) And (x8 = 8) And (x9 = 9) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win x ');
  If (Q = 1) Then
    Readkey; {* Нажмите любую клавишу *}
  Repeat
    Until keypressed; {* Ждем нажатия клавиши *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda'); {gopuzoHT///}
  {////BepTukal}
  If (x1 = 1) And (x4 = 4) And (x7 = 7) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win x ');
  If (Q = 1) Then
    Readkey; {* Нажмите любую клавишу *}
  Repeat
    Until keypressed; {* Ждем нажатия клавиши *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (x2 = 2) And (x5 = 5) And (x8 = 8) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win x ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия любой клавиши *}
  Repeat
    Until keypressed; {* Ждем нажатия клавиши *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (x3 = 3) And (x6 = 6) And (x9 = 9) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win x ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия любой клавиши *}
  Repeat
    Until keypressed; {* Цикл, пока не нажата клавиша *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda'); {BepYukal///}
  {////X}
  If (x1 = 1) And (x5 = 5) And (x9 = 9) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win x ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия пользователя *}
  Repeat
    Until keypressed; {* Ждем нажатия клавиши *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (x3 = 3) And (x7 = 7) And (x5 = 5) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win x ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия любой клавиши *}
  Repeat
    Until keypressed; {* Ждем нажатия клавиши *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda'); {X////}
  If (a1 = 1)Or(a2 = 1)Or(a3 = 1)Or(a4 = 1) Then
    o1 := 1;
  If (a1 = 2)Or(a2 = 2)Or(a3 = 2)Or(a4 = 2) Then
    o2 := 2;
  If (a1 = 3)Or(a2 = 3)Or(a3 = 3)Or(a4 = 3) Then
    o3 := 3;
  If (a1 = 4)Or(a2 = 4)Or(a3 = 4)Or(a4 = 4) Then
    o4 := 4;
  If (a1 = 5)Or(a2 = 5)Or(a3 = 5)Or(a4 = 5) Then
    o5 := 5;
  If (a1 = 6)Or(a2 = 6)Or(a3 = 6)Or(a4 = 6) Then
    o6 := 6;
  If (a1 = 7)Or(a2 = 7)Or(a3 = 7)Or(a4 = 7) Then
    o7 := 7;
  If (a1 = 8)Or(a2 = 8)Or(a3 = 8)Or(a4 = 8) Then
    o8 := 8;
  If (a1 = 9)Or(a2 = 9)Or(a3 = 9)Or(a4 = 9) Then
    o9 := 9; {///gopu3oHt}
  If (o1 = 1) And (o2 = 2) And (o3 = 3) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win o ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия пользователя *}
  Repeat
    Until keypressed; {* После нажатия любой клавиши цикл остановится *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (o4 = 4) And (o5 = 5) And (o6 = 6) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win o ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия пользователя *}
  Repeat
    Until keypressed; {* Ждем нажатия клавиши *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (o7 = 7) And (o8 = 8) And (o9 = 9) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win o ');
  If (Q = 1) Then
    Readkey; {* Нажмите любую клавишу *}
  Repeat
    Until keypressed; {* Цикл, пока не нажата клавиша *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda'); {gopuzoHT///}
  {////BepTukal}
  If (o1 = 1) And (o4 = 4) And (o7 = 7) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win o ');
  If (Q = 1) Then
    Readkey; {* Нажмите любую клавишу *}
  Repeat
    Until keypressed; {* После нажатия любой клавиши цикл остановится *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (o2 = 2) And (o5 = 5) And (o8 = 8) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win o ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия пользователя *}
  Repeat
    Until keypressed; {* Цикл, пока не нажата клавиша *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (o3 = 3) And (o6 = 6) And (o9 = 9) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win o ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия пользователя *}
  Repeat
    Until keypressed; {* Цикл, пока не нажата клавиша *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda'); {BepYukal///}
  {////X}
  If (o1 = 1) And (o5 = 5) And (o9 = 9) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win o ');
  If (Q = 1) Then
    Readkey; {* Ждем нажатия пользователя *}
  Repeat
    Until keypressed; {* Ждем нажатия клавиши *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda');
  If (o3 = 3) And (o7 = 7) And (o5 = 5) Then
    Q := 1
  Else Q := 0;
    If (Q = 1) Then
      outtext('
 win o ');
  If (Q = 1) Then
    Readkey; {* Нажмите любую клавишу *}
  Repeat
    Until keypressed; {* После нажатия любой клавиши цикл остановится *}
    If (Q = 1) Then
      closegraph;
  If (Q = 1) Then
    writeln('
BBedute 3 dla Buxoda'); {X////}
End;
Procedure Game;
Begin
  Q := 0;
  driver := detect;
  initgraph(driver, mode, '
');
  line(100, 100, 400, 100);
  line(200, 100, 200, 400);
  line(100, 100, 100, 400);
  line(100, 400, 400, 400);
  line(400, 400, 400, 100); {яюых}
  line(100, 200, 400, 200);
  line(100, 300, 400, 300);
  line(300, 100, 300, 400);
  readln(i1); {яхЁт√
  щ ╒
  }

  If i1 = 1 Then
    line(109, 391, 191, 309);
  If i1 = 1 Then
    line(109, 309, 191, 391);
  If i1 = 2 Then
    line(209, 391, 291, 309);
  If i1 = 2 Then
    line(209, 309, 291, 391);
  If i1 = 3 Then
    line(391, 391, 309, 309);
  If i1 = 3 Then
    line(309, 391, 391, 309);
  If i1 = 4 Then
    line(109, 209, 191, 291);
  If i1 = 4 Then
    line(109, 291, 191, 209);
  If i1 = 5 Then
    line(209, 209, 291, 291);
  If i1 = 5 Then
    line(291, 209, 209, 291);
  If i1 = 6 Then
    line(309, 209, 391, 291);
  If i1 = 6 Then
    line(309, 291, 391, 209);
  If i1 = 7 Then
    line(109, 109, 191, 191);
  If i1 = 7 Then
    line(109, 191, 191, 109);
  If i1 = 8 Then
    line(209, 109, 291, 191);
  If i1 = 8 Then
    line(209, 191, 291, 109);
  If i1 = 9 Then
    line(309, 109, 391, 191);
  If i1 = 9 Then
    line(309, 191, 391, 109);
  readln(a1); {╧
  хЁт√
  щ ъЁєу}

  If i1 = a1 Then
    closegraph;
  If i1 = a2 Then
    closegraph;
  If i1 = a3 Then
    closegraph;
  If i1 = a4 Then
    closegraph;
  If a1 = 1 Then
    circle(150, 350, 40);
  If a1 = 2 Then
    circle(250, 350, 40);
  If a1 = 3 Then
    circle(350, 350, 40);
  If a1 = 4 Then
    circle(150, 250, 40);
  If a1 = 5 Then
    circle(250, 250, 40);
  If a1 = 6 Then
    circle(350, 250, 40);
  If a1 = 7 Then
    circle(150, 150, 40);
  If a1 = 8 Then
    circle(250, 150, 40);
  If a1 = 9 Then
    circle(350, 150, 40);
  readln(i2);
  If i2 = 1 Then
    line(109, 391, 191, 309);
  If i2 = 1 Then
    line(109, 309, 191, 391);
  If i2 = 2 Then
    line(209, 391, 291, 309);
  If i2 = 2 Then
    line(209, 309, 291, 391);
  If i2 = 3 Then
    line(391, 391, 309, 309);
  If i2 = 3 Then
    line(309, 391, 391, 309);
  If i2 = 4 Then
    line(109, 209, 191, 291);
  If i2 = 4 Then
    line(109, 291, 191, 209);
  If i2 = 5 Then
    line(209, 209, 291, 291);
  If i2 = 5 Then
    line(291, 209, 209, 291);
  If i2 = 6 Then
    line(309, 209, 391, 291);
  If i2 = 6 Then
    line(309, 291, 391, 209);
  If i2 = 7 Then
    line(109, 109, 191, 191);
  If i2 = 7 Then
    line(109, 191, 191, 109);
  If i2 = 8 Then
    line(209, 109, 291, 191);
  If i2 = 8 Then
    line(209, 191, 291, 109);
  If i2 = 9 Then
    line(309, 109, 391, 191);
  If i2 = 9 Then
    line(309, 191, 391, 109);
  readln(a2);
  If i1 = a1 Then
    closegraph;
  If i1 = a2 Then
    closegraph;
  If i1 = a3 Then
    closegraph;
  If i1 = a4 Then
    closegraph;
  If i2 = a1 Then
    closegraph;
  If i2 = a2 Then
    closegraph;
  If i2 = a3 Then
    closegraph;
  If i2 = a4 Then
    closegraph;
  If a2 = 1 Then
    circle(150, 350, 40);
  If a2 = 2 Then
    circle(250, 350, 40);
  If a2 = 3 Then
    circle(350, 350, 40);
  If a2 = 4 Then
    circle(150, 250, 40);
  If a2 = 5 Then
    circle(250, 250, 40);
  If a2 = 6 Then
    circle(350, 250, 40);
  If a2 = 7 Then
    circle(150, 150, 40);
  If a2 = 8 Then
    circle(250, 150, 40);
  If a2 = 9 Then
    circle(350, 150, 40);
  readln(i3);
  If i3 = 1 Then
    line(109, 391, 191, 309);
  If i3 = 1 Then
    line(109, 309, 191, 391);
  If i3 = 2 Then
    line(209, 391, 291, 309);
  If i3 = 2 Then
    line(209, 309, 291, 391);
  If i3 = 3 Then
    line(391, 391, 309, 309);
  If i3 = 3 Then
    line(309, 391, 391, 309);
  If i3 = 4 Then
    line(109, 209, 191, 291);
  If i3 = 4 Then
    line(109, 291, 191, 209);
  If i3 = 5 Then
    line(209, 209, 291, 291);
  If i3 = 5 Then
    line(291, 209, 209, 291);
  If i3 = 6 Then
    line(309, 209, 391, 291);
  If i3 = 6 Then
    line(309, 291, 391, 209);
  If i3 = 7 Then
    line(109, 109, 191, 191);
  If i3 = 7 Then
    line(109, 191, 191, 109);
  If i3 = 8 Then
    line(209, 109, 291, 191);
  If i3 = 8 Then
    line(209, 191, 291, 109);
  If i3 = 9 Then
    line(309, 109, 391, 191);
  If i3 = 9 Then
    line(309, 191, 391, 109);
  check;
  readln(a3);
  If i1 = a1 Then
    closegraph;
  If i1 = a2 Then
    closegraph;
  If i1 = a3 Then
    closegraph;
  If i1 = a4 Then
    closegraph;
  If i2 = a1 Then
    closegraph;
  If i2 = a2 Then
    closegraph;
  If i2 = a3 Then
    closegraph;
  If i2 = a4 Then
    closegraph;
  If i3 = a1 Then
    closegraph;
  If i3 = a2 Then
    closegraph;
  If i3 = a3 Then
    closegraph;
  If i3 = a4 Then
    closegraph;
  If a3 = 1 Then
    circle(150, 350, 40);
  If a3 = 2 Then
    circle(250, 350, 40);
  If a3 = 3 Then
    circle(350, 350, 40);
  If a3 = 4 Then
    circle(150, 250, 40);
  If a3 = 5 Then
    circle(250, 250, 40);
  If a3 = 6 Then
    circle(350, 250, 40);
  If a3 = 7 Then
    circle(150, 150, 40);
  If a3 = 8 Then
    circle(250, 150, 40);
  If a3 = 9 Then
    circle(350, 150, 40);
  check;
  readln(i4);
  If i4 = 1 Then
    line(109, 391, 191, 309);
  If i4 = 1 Then
    line(109, 309, 191, 391);
  If i4 = 2 Then
    line(209, 391, 291, 309);
  If i4 = 2 Then
    line(209, 309, 291, 391);
  If i4 = 3 Then
    line(391, 391, 309, 309);
  If i4 = 3 Then
    line(309, 391, 391, 309);
  If i4 = 4 Then
    line(109, 209, 191, 291);
  If i4 = 4 Then
    line(109, 291, 191, 209);
  If i4 = 5 Then
    line(209, 209, 291, 291);
  If i4 = 5 Then
    line(291, 209, 209, 291);
  If i4 = 6 Then
    line(309, 209, 391, 291);
  If i4 = 6 Then
    line(309, 291, 391, 209);
  If i4 = 7 Then
    line(109, 109, 191, 191);
  If i4 = 7 Then
    line(109, 191, 191, 109);
  If i4 = 8 Then
    line(209, 109, 291, 191);
  If i4 = 8 Then
    line(209, 191, 291, 109);
  If i4 = 9 Then
    line(309, 109, 391, 191);
  If i4 = 9 Then
    line(309, 191, 391, 109);
  check;
  readln(a4);
  If i1 = a1 Then
    closegraph;
  If i1 = a2 Then
    closegraph;
  If i1 = a3 Then
    closegraph;
  If i1 = a4 Then
    closegraph;
  If i2 = a1 Then
    closegraph;
  If i2 = a2 Then
    closegraph;
  If i2 = a3 Then
    closegraph;
  If i2 = a4 Then
    closegraph;
  If i3 = a1 Then
    closegraph;
  If i3 = a2 Then
    closegraph;
  If i3 = a3 Then
    closegraph;
  If i3 = a4 Then
    closegraph;
  If i4 = a1 Then
    closegraph;
  If i4 = a2 Then
    closegraph;
  If i4 = a3 Then
    closegraph;
  If i4 = a4 Then
    closegraph;
  If a4 = 1 Then
    circle(150, 350, 40);
  If a4 = 2 Then
    circle(250, 350, 40);
  If a4 = 3 Then
    circle(350, 350, 40);
  If a4 = 4 Then
    circle(150, 250, 40);
  If a4 = 5 Then
    circle(250, 250, 40);
  If a4 = 6 Then
    circle(350, 250, 40);
  If a4 = 7 Then
    circle(150, 150, 40);
  If a4 = 8 Then
    circle(250, 150, 40);
  If a4 = 9 Then
    circle(350, 150, 40);
  check;
  readln(i5);
  If i1 = a1 Then
    closegraph;
  If i1 = a2 Then
    closegraph;
  If i1 = a3 Then
    closegraph;
  If i1 = a4 Then
    closegraph;
  If i2 = a1 Then
    closegraph;
  If i2 = a2 Then
    closegraph;
  If i2 = a3 Then
    closegraph;
  If i2 = a4 Then
    closegraph;
  If i3 = a1 Then
    closegraph;
  If i3 = a2 Then
    closegraph;
  If i3 = a3 Then
    closegraph;
  If i3 = a4 Then
    closegraph;
  If i4 = a1 Then
    closegraph;
  If i4 = a2 Then
    closegraph;
  If i4 = a3 Then
    closegraph;
  If i4 = a4 Then
    closegraph;
  If i5 = a1 Then
    closegraph;
  If i5 = a2 Then
    closegraph;
  If i5 = a3 Then
    closegraph;
  If i5 = a4 Then
    closegraph;
  If i5 = 1 Then
    line(109, 391, 191, 309);
  If i5 = 1 Then
    line(109, 309, 191, 391);
  If i5 = 2 Then
    line(209, 391, 291, 309);
  If i5 = 2 Then
    line(209, 309, 291, 391);
  If i5 = 3 Then
    line(391, 391, 309, 309);
  If i5 = 3 Then
    line(309, 391, 391, 309);
  If i5 = 4 Then
    line(109, 209, 191, 291);
  If i5 = 4 Then
    line(109, 291, 191, 209);
  If i5 = 5 Then
    line(209, 209, 291, 291);
  If i5 = 5 Then
    line(291, 209, 209, 291);
  If i5 = 6 Then
    line(309, 209, 391, 291);
  If i5 = 6 Then
    line(309, 291, 391, 209);
  If i5 = 7 Then
    line(109, 109, 191, 191);
  If i5 = 7 Then
    line(109, 191, 191, 109);
  If i5 = 8 Then
    line(209, 109, 291, 191);
  If i5 = 8 Then
    line(209, 191, 291, 109);
  If i5 = 9 Then
    line(309, 109, 391, 191);
  If i5 = 9 Then
    line(309, 191, 391, 109);
  check;
  Readkey; {* Ждем нажатия пользователя *}
  Repeat
    Until keypressed; {* Цикл, пока не нажата клавиша *}
    closegraph;
End;
Procedure Menu; {create menu}
Begin
  ClrScr; {* Очистка экрана *}
  Writeln ('
Kpectuku Holuku');
  Writeln('
play on NUM-PAD');
  Writeln('
****Eclu Bo Bpema ugru BBectu 2 pa3a B ODHY u ty#e   -*****');
  Writeln('
****-kletky kpectuk ulu Holuk To eto npuBedet k Buxody*****');
  Writeln ('
2-Game');
  Writeln ('
3-Stop Game');
  Writeln ('
--------------');
  Write ('
choze item->');
  Readln (item);
  Case item Of     1 : WriteFile(s);
    2 : Game;
  3 : Quit := true
End;

End;
Begin
Writeln('
Enter your Name->');
readln(s);
WriteFile(s );
quit := false;
Repeat  Menu
  Until quit;
  End.....