Connect Four - популярная игра для двух игроков, в которой игроки сначала выбирают цвет, а затем по очереди опускают один цветной диск сверху в решетку с семью столбцами и шестью рядами, подвешенными вертикально. Фишки падают прямо вниз, занимая самое нижнее доступное место в столбце. Цель игры Connect Four - первым из игроков сформировать горизонтальную, вертикальную или диагональную линию из четырех собственных дисков. Connect Four - это решенная игра. Таким образом, первый игрок всегда может выиграть, сделав правильные ходы. В этом руководстве вы собираетесь создать свою собственную игру Connect Four на Java.

Вы также можете посмотреть это руководство в видео на YouTube:

Игровое моделирование

Начнем с моделирования игры. Для этого мы создаем класс ConnectFour. В этом классе мы определим следующие элементы:

  • Массив из 2 символов, инициализированных буквами 'R ’и’Y’, представляющий диски каждого плеера.
  • Размеры сетки нашего Connect Four
  • Массив из 2 символов для хранения дисков, установленных игроками.
  • Две переменные, позволяющие сохранить в памяти последнюю сыгранную позицию

Элементы, не занятые в нашей сетке Connect Four, будут представлены символом точки.

Он дает нам следующий код для конструктора и свойств класса ConnectFour:

Отображение сетки игры Connect Four

Следующим шагом будет отображение сетки игры Connect Four. Для этого мы определяем метод toString () нашего класса ConnectFour. Для краткости мы используем новые функции, представленные в Java 8, включая знаменитые Streams.

Это дает нам следующий код:

Получение представления линий

Прежде чем мы сможем проверить, выиграл ли игрок после установки диска, нам необходимо получить представление линии по горизонтали или вертикали, а также по диагонали. Чтобы получить эти представления, мы будем использовать переменные lastCol и lastTop, содержащие последнюю позицию, сыгранную игроком.

Чтобы получить представление горизонтальной линии, нам просто нужно построить String из строки lastTop массива grid. Чтобы получить представление вертикальной линии, мы будем выполнять итерацию снизу вверх по первому индексу массива сетки.

Он дает нам следующий код для методов horizontal () и vertical ():

Теперь нам нужно получить представление диагоналей. Начнем с косой диагонали:

Затем мы пишем backslashDiagonal () для получения диагонали обратной косой черты:

Проверка, выиграл ли игрок игру Connect Four

Теперь мы можем использовать наши 4 метода, чтобы получить представление линий для проверки, выиграл ли игрок игру Connect Four. Для этого мы создаем String с четырьмя символами, соответствующими последнему персонажу игрока. Затем нам нужно просто проверить, содержится ли эта String в горизонтальном, вертикальном или диагональном представлении линий.

Это дает нам следующий код для метода isWinningPlay ():

Взаимодействие с игроком в консоли

Чтобы наша игра Connect Four работала, мы должны иметь возможность попросить каждого игрока ввести столбец, в который они хотят поместить свои диски. Для этого мы используем API Scanner, предоставляемый Java в стандартной комплектации. Итак, мы просим пользователей ввести целое число от 0 до ширины-1 сетки.

Перед тем, как поставить диск, нам также нужно убедиться, что колонка не заполнена. Если да, мы просим пользователя ввести новый номер столбца.

Он дает следующий код для метода chooseAndDrop:

Собираем все части пазла

Последний шаг этого урока - собрать все части головоломки для нашей игры Connect Four. Итак, мы определяем переменные для размеров доски. Наша доска будет классической сеткой 8 на 6. Максимальное количество ходов будет равно высоте, умноженной на ширину. Затем мы создаем объект ConnectFour.

Мы продолжим просить следующего игрока поставить диск, пока это максимальное количество ходов не будет достигнуто или пока ни один игрок не выиграл игру. На каждом этапе цикла нам нужно менять игрока, который должен поставить диск. Чтобы позволить игроку разместить диск, мы вызываем метод chooseAndDrop нашего экземпляра ConnectFour.

После того, как игрок поместил диск, мы выводим доску на экран. Затем мы проверяем, выиграл ли игру последний игрок. Если это так, мы отображаем сообщение о том, что у нас есть победитель. Если мы достигнем максимального количества ходов без победителя, это будет ничья.

Это дает нам следующий полный код для нашего класса ConnectFour:

Наша игра Connect Four в действии!

Лучшая часть учебника там, так как мы собираемся запустить нашу игру Connect Four в действии!

После запуска игры Connect Four у нас будет следующий экран:

Красный игрок выбирает поставить диск в столбец 0:

Желтый игрок выбирает поставить диск в столбец 4:

Красные и желтые игроки продолжают ставить свои диски, и после нескольких других ходов мы получаем следующий экран:

Поместив диск в столбец 5, красный игрок выиграл игру!

Вот и все для этого урока.

Идти дальше

Чтобы пойти дальше, было бы здорово добавить графический интерфейс, созданный с помощью Swing, для нашей игры Connect Four. Если вы заинтересованы в таком руководстве, не стесняйтесь использовать комментарии ниже и сообщите мне.