Игра на delphi "Восемь кружков"

Имеется восемь кружков. Их начальное положение показано на рисунке. (посередине — пустое поле).

первоначальное положение кружков в игре

Цель игрока: поменять местами белые и черные фишки за наименьшее число ходов. Любую фишку можно перемещать только на пустое соседнее поле или же через одно занятое поле, опять-таки в пустое. Переводить фишки в другое место нельзя. На любом поле может находиться только одна фишка.

  • NewGame - Процедура, расставляющая все фишки в начальное положение.
  • Move(N) - Функция, переставляющая фишку. Если перестановка невозможна возвращает False.
  • Win - Функция, проверяющая выйграл ли игрок. Если да, возвращает True. Выполняется после каждого хода (Функции Move(N)). Перед ней нужно использовать счетчик ходов.
code: #delphi
  1. Type MRound = (Black, White, None);
  2.  
  3. Var Pole:Array[1..9] of MRound;
  4.  
  5. Procedure NewGame;
  6. Var I:Integer;
  7. Begin
  8. For I:=1 to 4 Do
  9. Pole[I]:=Black;
  10. For I:=6 to 9 Do
  11. Pole[I]:=White;
  12. Pole[5]:=None;
  13. End;
  14.  
  15. Function Move(N:Integer):Boolean;
  16. Var B:Boolean;
  17. Begin
  18. If (Pole[N+1] = None) or (Pole[N+1] = None) or (Pole[N+2] = None) or (Pole[N-2] = None) Then
  19. B:=True Else B:=False;
  20. If B Then
  21.  Begin
  22.  If Pole[N+1] = None Then
  23.   Begin
  24.   Pole[N+1]:=Pole[N];
  25.   Pole[N]:=None;
  26.   End Else
  27.  If Pole[N+2] = None Then
  28.   Begin
  29.   Pole[N+2]:=Pole[N];
  30.   Pole[N]:=None;
  31.   End Else
  32.  If Pole[N-1] = None Then
  33.   Begin
  34.   Pole[N-1]:=Pole[N];
  35.   Pole[N]:=None;
  36.   End Else
  37.  If Pole[N-2] = None Then
  38.   Begin
  39.   Pole[N-2]:=Pole[N];
  40.   Pole[N]:=None;
  41.   End;
  42.  End;
  43. Move:=B;
  44. End;
  45.  
  46. Function Win:Boolean;
  47. Begin
  48. If (Pole[1] = White) and
  49.    (Pole[2] = White) and
  50.    (Pole[3] = White) and
  51.    (Pole[4] = White) and
  52.    (Pole[6] = Black) and
  53.    (Pole[7] = Black) and
  54.    (Pole[8] = Black) and
  55.    (Pole[9] = Black) Then
  56. Win:=True Else Win:=False;
  57. End;
Поделиться:

Похожие статьи: