Исходник программы, показывающей пример создания карточной игры «Концентрация» для проверки памяти.
Цель игры состоит в том, чтобы выбрать совпадающие пары из набора закрытых карт, переворачивая две карты лицом вверх, одну за другой, на каждом ходу. Когда совпадение найдено, совпадающие карты удаляются, и игрок получает еще один ход. Когда две карты не совпадают, они возвращаются в исходное положение рубашкой вверх.
В одиночной игре цель состоит в том, чтобы найти все совпадающие пары за наименьшее количество ходов. В игре с двумя игроками побеждает тот, у кого больше всего найденных пар.
Логика проверки и оценки встроена в программу выхода OnMouseUp для каждого объекта TCard. Первая карта, по которой щелкнули ход, сохраняется, и при нажатии второй карты ее значение и масть сравниваются с первой картой. По результатам обновляются баллы, карты становятся невидимыми или просто переворачиваются рубашкой вверх. Когда все пары совпадают, отображаются победитель и счет, и игра окончена.
Ожидаемая продолжительность игры
Какова ожидаемая продолжительность игры, если у игрока прекрасная память? То есть, как только карта была перевернута, наш игрок точно запомнит, где она находится; по сути, это левая часть карточного стола вверху. Поскольку для идеально удачной игры потребуется N ходов, чтобы сопоставить N пар, а для совершенно неудачной игры потребуется 2N-1 ходов. Упрощенное рассуждение гласит, что средняя игра должна быть посередине между самой короткой и самой длинной возможными играми, что немного меньше, чем в 1,5 раза превышает количество пар. Мои аналитические способности увязли в попытках вычислить значение, поэтому я прибег к написанию программы «Исследование концентрации», чтобы сыграть несколько тысяч игр «с идеальной памятью» и составить график статистики продолжительности игры. Мне кажется, что средняя игра немного выше, чем в 1,5 раза больше N. Другими словами, кажется, больше способов быть невезучим, чем быть удачливым.