Реализация пасьянса "Паук" на C++ с использованием WinAPI и Direct2D. Теоретически должно запускаться на Windows 7 и выше, но проверял только на Windows 11.
Написано тяп-ляп на скорую руку :)
Графика потырена (и обработана с целью уменьшения размера изображения) отсюда: https://www.spriters-resource.com/pc_computer/bicyclesolitairebicyclepoker/asset/137316/
Писалось и собиралось в Visual Studio 2026.

В игре используются две колоды карт, всего 104 карты. 54 карты разложены по горизонтали в десять столбцов, при этом отображается только верхняя карта. Остальные пятьдесят карт выкладываются в нижнем правом углу пятью стопками по десять карт, причём карты не отображаются.
На пустое место можно переместить верхнюю карту любого столбца;
Верхнюю карту столбца можно переместить на следующую по старшинству карту, независимо от её масти и цвета;
Стопку карт одной масти, лежащих по порядку, можно перемещать как одну карту.
В горизонтальных столбцах карту можно переместить на любую другую карту в столбце, если она находится в убывающей числовой последовательности. Например, червовая шестёрка может быть положена на семёрку любой масти. Однако последовательность карт можно перемещать, только если они все одной масти в порядке убывания номеров. Например, червовая шестёрка и семёрка могут быть помещены на восьмёрку любой масти, но червовая шестёрка и семёрка треф не могут быть перемещены вместе. Перемещение верхней карты в столбце позволяет перевернуть самую верхнюю скрытую карту. Затем эта карта вступает в игру. На неё можно поместить другие карты, и её можно переместить на другие карты в последовательности или в пустой столбец.
Цель игры — раскрыть все скрытые карты и, перемещая карты из одного столбца в другой, размещать карты в последовательном порядке от короля к тузу (король, дама, валет, 10, 9, 8, 7, 6, 5, 4, 3, 2, туз), используя наименьшее количество ходов. Каждая финальная последовательность должна быть одной масти. После того, как полная последовательность достигнута, карты удаляются со стола в «дом», и к счёту добавляется 100 очков. После того, как игрок сделал все возможные ходы с текущим раскладом карт, игрок тянет новый ряд карт из одной из стопок по десять в правом нижнем углу, нажимая на карты. Каждая из десяти карт в этом розыгрыше оказывается лицом вверх в каждом из десяти горизонтальных столбцов, и игрок затем кладёт их таким образом, чтобы создать последовательность карт одной масти. Игра заканчивается выигрышем, когда все карты собраны в «дом».