Игра на delphi "Восемь кружков"
Категория: Delphi/Pascal
2011-08-31 22:07:36
Имеется восемь кружков. Их начальное положение показано на рисунке. (посередине — пустое поле).
Цель игрока: поменять местами белые и черные фишки за наименьшее число ходов. Любую фишку можно перемещать только на пустое соседнее поле или же через одно занятое поле, опять-таки в пустое. Переводить фишки в другое место нельзя. На любом поле может находиться только одна фишка.
- NewGame - Процедура, расставляющая все фишки в начальное положение.
- Move(N) - Функция, переставляющая фишку. Если перестановка невозможна возвращает False.
- Win - Функция, проверяющая выйграл ли игрок. Если да, возвращает True. Выполняется после каждого хода (Функции Move(N)). Перед ней нужно использовать счетчик ходов.
code: #delphi
- Type MRound = (Black, White, None);
- Var Pole:Array[1..9] of MRound;
- Procedure NewGame;
- Var I:Integer;
- Begin
- For I:=1 to 4 Do
- Pole[I]:=Black;
- For I:=6 to 9 Do
- Pole[I]:=White;
- Pole[5]:=None;
- End;
- Function Move(N:Integer):Boolean;
- Var B:Boolean;
- Begin
- If (Pole[N+1] = None) or (Pole[N+1] = None) or (Pole[N+2] = None) or (Pole[N-2] = None) Then
- B:=True Else B:=False;
- If B Then
- Begin
- If Pole[N+1] = None Then
- Begin
- Pole[N+1]:=Pole[N];
- Pole[N]:=None;
- End Else
- If Pole[N+2] = None Then
- Begin
- Pole[N+2]:=Pole[N];
- Pole[N]:=None;
- End Else
- If Pole[N-1] = None Then
- Begin
- Pole[N-1]:=Pole[N];
- Pole[N]:=None;
- End Else
- If Pole[N-2] = None Then
- Begin
- Pole[N-2]:=Pole[N];
- Pole[N]:=None;
- End;
- End;
- Move:=B;
- End;
- Function Win:Boolean;
- Begin
- If (Pole[1] = White) and
- (Pole[2] = White) and
- (Pole[3] = White) and
- (Pole[4] = White) and
- (Pole[6] = Black) and
- (Pole[7] = Black) and
- (Pole[8] = Black) and
- (Pole[9] = Black) Then
- Win:=True Else Win:=False;
- End;
Поделиться: