Как создать игру Connect-4 с CPP(C++) в консоли.
Эта статья научит вас, как создать игру Коннект-4 в CPP, с соответствующими пояснениями и ссылками для дальнейшего изучения.

Ранее мы реализовали базовую логику игры. Если вы не видели предыдущую статью… Вы можете посмотреть их здесь. Первая часть здесь. Далее мы собираемся работать над мультиплеером и частью Game Over.
Добавление кооперативного мультиплеера
Я добавляю Кооператив сейчас, потому что он необходим для условий GameOver.
Я выставлю двух игроков: красных и синих. Внутри Connect4.h я собираюсь создать переменную, которая будет чередовать красный и синий ввод. Для этого я буду использовать логическое значение. И если ввод действителен, то смените плеер.

Для тех, кто не знает, в input() вы, возможно, видели нечто странное вроде (isRedPlayer)?”Red”:”Blue”. Это называется тернарной операцией. Что он делает, так это то, что если что-то в () истинно, тогда сделайте первое после ?, иначе сделайте то, что после :. Это как уменьшенная версия If-Else. Вы можете прочитать больше здесь".
Далее мне нужно сообщить PlayGame(), что я также отправляю Player. и добавить монету в соответствии с этим. Перед этим нам нужно установить символ в перечислении CoinState.


Тернарный оператор очень удобен. Запустите свой код. Далее мы установим игру по условию.
Добавление GameOver
Игра окончена Состояние:
- если все монеты заполнены, нарисуйте
- если по вертикали, горизонтали или диагонали присутствуют 4 монеты одного типа, выиграйте
Условия розыгрыша
Для проверки заполнены ли монеты. Я не хочу запускать циклы все время. Поэтому я создам переменную, которая будет считать монеты при каждом добавлении. и я проверю, равно ли это общему количеству монет, тогда это ничья.

Я также добавил условие, если игра уже окончена. Тогда нам не нужно проверять заполнение.
Условия победы
Для этого также. Я не хочу перебирать все монеты. Если я это сделаю, я буду проверять то, что я уже проверил в предыдущем цикле обновления.
Итак, что я сделаю, так это проверю окружение монеты, которую вводит игрок. Когда игрок вводит, а затем мы кладем монету. С таким расположением и состоянием монет мы можем проверить 4 во всех направлениях, и если мы сможем попасть в любые 4 одинаковыми, то это победа.
Сначала я создам переменную, которая поможет сохранить текущего игрока в Board.h, потому что я буду проверять множество мест.

Затем нужно проверить все условия, если они верны, а затем установить isGameOver в значение true.

Вертикальный
Во-первых, мы проверим вертикальность. Мне нужно проверить как вертикально вверх, так и вертикально вниз. А вот Вертикаль вверх не нужен, потому что монета всегда будет наверху несмотря ни на что.

Горизонтальный
Далее нам нужно проверить горизонтальность слева и справа. Здесь немного сложно. нам нужно проверить оба.

Переменные right и left используются, чтобы гарантировать, что он остановится, как только попадет монета противоположного состояния. почему? Что ж, представьте, что у нас есть ситуация, когда красный игрок просто вводит посередине. вот так
R B 'R' R R
что происходит, так это то, что цикл будет продолжать работать, даже если B будет ошибочным, а затем он увидит следующее как R, а затем увеличит счетчик. В этом случае выигрывает красный игрок. Но если вы деактивируете проверку слева после того, как она нажмет B, она не будет проверяться. Это использование left и right .
Диагональ
Для Diagonal это сочетание того и другого. но нам нужно проверить вверх и вниз, а также посмотреть влево и вправо для обоих.
R R
R R
R
R R
R R

Во всех трех случаях я останавливаюсь, когда i достигает 4 или когда больше ничего не остается. и если количество больше 4, то набор доступен. так что текущий игрок выигрывает.
На этом вы, наконец, закончили игру. Запустите игру. Рефакторинг вашего кода. Если вы знаете какие-либо оптимизации, сделайте это. Это все люди.
Я не буду прикреплять сюда весь код. Я хочу, чтобы вы, ребята, сделали это сами. Я не хочу, чтобы вы просто смотрели на последний код и копировали-вставляли. Поймите код. Как работает каждая строчка и почему я так написал. Всегда имейте ясность в том, что вы кодируете. Это поможет вам стать лучшим программистом. Если хотите, прочитайте предыдущие статьи этой серии.Читайте Часть1 и Часть2
Это был интересный опыт. Спасибо всем за чтение. Оставайтесь в безопасности. Удачного кодирования.