Особенность игры Connect 4 заключается в том, что доска располагается вертикально, а каждый столбец представляет отдельную секцию (между ячейками отсутствуют перегородки). В результате, вместо того чтобы выбирать положение для фигуры по вертикали, вы можете просто ставить фишки одну за другой. Это очень сильно влияет на стратегию игры. На рис. 15.2 показано игровое поле Connect 4 после нескольких ходов.
Игра завершается, когда один из игроков выстраивает по горизонтали, вертикали или горизонтали четыре фишки. Здесь также, как и в крестиках-ноликах, возможна ничья, однако вероятность этого намного меньше из-за большего числа возможностей победить. На рис. 15.4 показана «победа» в Connect 4.
В копилку Игрока
С технической точки зрения, в игре Connect 4 вы можете выиграть всегда, вне зависимости от стратегии игрока, если делаете ход первым.
Разработка игры
Создание игры Connect 4 будет не таким сложным занятием, если вы разобьете весь процесс на отдельные этапы, например, так:
► графика и пользовательский интерфейс;
► сетевое соединение.
► игровая логика;
В следующих разделах будут подробно рассмотрены все указанные этапы создания игры.
Графика и пользовательский интерфейс
Как и в случае большинства игр, разработка Connect 4 начинается с разработки графики. Элементы игровой графики – это фигуры и доска. Кроме этого полезно выводить дополнительную информацию, например, информацию о статусе соединения, а также то, кому принадлежит ход. В любой момент времени строка статуса должна выводить сообщение «Waiting for player\'s move» (Ожидание хода игрока) или «Your turn» (Ваш ход).
Чтобы создать интуитивно понятный интерфейс в игре, полезно показывать, какая колонка выбрана в настоящий момент. Чтобы сделать ход, нужно выбрать колонку с помощью стрелок влево и вправо, и потом поставить фишку. Маркер колонки в игре Connect 4 – это графическая стрелка, цвет которой зависит от игрока (красная – для игрока серверного устройства, а синяя – для игрока клиентского устройства). Маркер колонки выводится непосредственно над выбранной колонкой, поэтому игрок всегда может знать, в какую колонку будет брошена фишка.
В копилку Игрока
На самом деле цветовое разделение указателей не является обязательным, поскольку эта информация игрокам не нужна. Однако с точки зрения тестирования игры, очень полезно окрасить указатели в разные цвета, чтобы понять, какое устройство является серверным, а какое клиентским.
Итак, в игре Connect 4 есть четыре основных графических элемента:
► доска;
► строка состояния;
► фишки;
► стрелка-маркер.
У вас уже есть опыт разработки игр с анимационными спрайтами, поэтому программирование интерфейса игры Connect 4 для вас не составит труда. Давайте перейдем к разработке логики игры.
Игровая логика
Самое трудное препятствие в разработке логики игры Connect 4 – определение победившего игрока. Сначала это может показаться достаточно простой задачей: просто проверить наличие четырех фишек одного цвета в ряду, столбце или диагонали, так? Это и впрямь просто для человека, однако научить делать такую проверку компьютер – не такая уж и простая задача. Подумайте о том, как можно с помощью Java-кода проверить состояние игры Connect 4.
Одно из возможных решений – отслеживать всевозможные комбинации положений, приводящих к победе. Эти комбинации можно хранить в таблице, а затем использовать для определения, насколько близок каждый из игроков к победе. Хотя такой подход может показаться не столь очевидным, реализовать его не составит труда. На самом деле, в коде игры Connect 4 вы используете «силовой прием». Уверен, что есть более элегантные способы решения задачи, но таблица с выигрышными комбинациями – это очень простой и весьма эффективный метод с точки зрения производительности.
Сеть
Как вы, несомненно, поняли, Connect 4 – это пошаговая игра. Это означает, что для ее реализации идеально подходит сетевое датаграммное соединение. Оказывается, игра Connect 4 может быть построена на тех же приемах, что и созданный в предыдущей главе мидлет Lighthouse. Но теперь нужно переправлять не символы азбуки Морзе (точек или тире), а номер столбца, в который производится ход. Единственное, что отличает игру Connect 4 от мидлета Lighthouse, – это необходимость отслеживания очередности ходов. Иначе говоря, вы не можете создать «свободное соединение», как это было в случае Lighthouse.