Калах

Давным-давно, когда мы были маленькими, а компьютеры - большими, для игр использовались текстовые дисплеи. Просто потому, что графических тогда еще не было. Но зато какие это были игры! Всё гениальное просто, и пример тому - игра “Калах”.

Калах - это настольная логическая игра для 2-х человек.

У каждого игрока имеется шесть лунок и чаша, называемая калахом. В начале игры в каждой из лунок находится по шесть камней. Цель игры: накопить в своём калахе больше камней, чем у противника.

Правила

  • В свой ход игрок выбирает одну из своих лунок и раскладывает камни из неё в лунки против часовой стрелки. В каждую лунку и свой калах он кладет по одному камню, при этом пропуская калах противника (но не пропуская свой!).
  • Если последний камень игрок кладет в свой калах, то он делает следующий ход. Если в любую другую лунку, то ход переходит к оппоненту.
  • Если последний камень игрок кладет в свою пустую лунку, то он забирает его и все камни из противоположной лунки партнера, и помещает их в свой калах.
  • Когда игрок не может сделать ход, так как все его лунки пусты - игра заканчивается. Второй игрок после этого переносит все оставшиеся в его лунках камни в свой калах.

Побеждает игрок, в калахе которого окажется больше камней.

Ссылки

Реализация

Программа написана на языке Си. Игровое поле отрисовывается посредством стандартных ANSI escape последовательностей.

Программа распространяется на условиях лицензии GPL. Тексты можно скачать здесь.

При вызове можно задавать параметр — целое число от 0 до 9, определяющее уровень игры. Фактически, это глубина просмотра: количество ходов, до которого компьютер будет анализировать ситуацию.

Игровое поле выглядит следующим образом:

        Genie          << Level III >>             You
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


My move is 5

           6       5       4       3       2       1
        ----------------------------------------------
        (  7 )  (  0 )  (  7 )  (  7 )  (  7 )  (  7 )

(  1 )                                                  (  1 )

        (  7 )  (  7 )  (  7 )  (  7 )  (  7 )  (  0 )
        ----------------------------------------------
           1       2       3       4       5       6

Your move: _

Компьютер против компьютера

Можно запускать игру с двумя параметрами, при этом за человека будет играть как бы второй компьютер. Первый параметр определяет уровень игры “за машину”, второй - уровень игры “за человека”. Таким образом можно набираться опыта, наблюдая за тактикой игры сильных соперников.

 
proj/kalah/kalah.txt · Последние изменения: 2009/11/09 12:10 vak
 
Copyright (C) 1996-2013 Serge Vakulenko
serge@vak.ru