Создание карточных игр с помощью Cards32.DLL

Уверен, что каждый играл в карточные игры, поставляемые с Windows: Солитер, Черви, Косынка. Это достаточно простые игры, в которые вы играли много раз. Но может вам хотелось бы поиграть в более сложные игры?Нет ничего проще. Дело в том, что вышеупомянутые игры используют библиотеку Cards.DLL (16-битная версия) или , Cards32.DLL (32-битная версия). Cards32.DLL поставляется с Windows NT/2000, но вы можете использовать ее и в Windows 9x/ME, скачав файл. Используя данную библиотеку, вы способны создать любую карточную игру на Visual Basic под ваш вкус

Функции библиотеки Cards32.DLL

Библиотека содержит 4 основные функции, используемые в карточных играх

Declare Function cdtInit Lib "Cards32.Dll" (dx As Long, dy As Long) As Long

Declare Function cdtDrawExt Lib "Cards32.Dll" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal dx As Long, ByVal dy As Long, ByVal ordCard As Long, ByVal iDraw As Long, ByVal clr As Long) As Long

Declare Function cdtDraw Lib "Cards32.Dll" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal iCard As Long, ByVal iDraw As Long, ByVal clr As Long) As Long

Declare Function cdtTerm Lib "Cards32.Dll" () As Long

Функция cdtInit используется для инициализации Cards32.DLL. Сохраните значения, возвращаемые dx и dy для использования в будущем, так как они содержат ширину и высоту карт

Функция cdtTerm служит для закрытия работы с библиотекой Cards32.DLL и освобождения ресурсов памяти

Функции cdtDraw и cdtDrawExt используются для вывода карт на форме или PictureBox. Единственное отличие между ними, это возможность рисовать функцией cdtDrawExt карты, варьируя их размеры. Приведем параметры, используемые функциями:

Используем библиотеку в проекте

При создании проекта установите свойство формы ScaleMode в "Pixels" для более удобных расчетов размещения карт. Также желательно установить свойство AutoRedraw в "True"

Разберем поподробнее некоторые параметры. iCard - есть число, которое определяет достойство карты. Числа в интервале 0-51 выводят одну из стандартных 52 карт колоды. "0" соответсвует тузу треф (♣), "1" - туз бубен (♦), "2" - туз червей (♥), "3" - туз пик (♠). И так далее. Последнее число 51 соответсвует королю пик. Остальные числа больше 51 выводят различные виды рубашек, а также несколько специальных картинок ("X" или "O"). Перечеркнутая красным крестом карта обозначает конец игры, а зеленая "O" указывает, что вы можете перемешать колоду для продолжения игры.

iDraw позволяет выводить различные состояния карты. Например, вы выбрали значение параметра iCard от 0 до 51 (нормальный вид) и тогда, передавая значение "0" в параметр iDraw, вы выводите стандартный вид карты. Передавая значение "2", вы выводите эту же карту в инвертируемом виде, показывая пользователю, что карта выбрана. Если же необходимо показать рубашку карты (обратную сторону), то используйте значение "1" (one) в iDraw для iCard свыше 51

clr определяет инвертируемый цвет, указывая, что карта выбрана. Используйте константу vbWhite. Можете попробовать и другие цвета, но как правило, это не приносит результата

Приведем несколько примеров:

cdtDraw Me.hdc, 100, 100, 49, 0, vbWhite

Рисует карту Бубновый Король стандартного размера в точке (100,100).

cdtDrawExt Me.hdc, 200, 200, 100, 100, 47, 0, vbWhite

Рисует Пиковую Даму с размерами 100*100 пикселов в точке (200,200).

cdtDraw Me.hdc, 0, 0, 8, 2, vbWhite

Рисует инвертированную Тройку треф стандартного размера в левом углу формы

Подведем итоги

Итак, вы научились выводить карты разных достоинств на форму. Теперь начинается собственно программирование игры: соблюдение правил, сдача карт, перемешивание и т.д. Используя различные события, такие как MouseDown вы определяете область щелчка мыши, а Paint используется для перерисовки состояния игры. На сайте Русский_Проект в разделе Игры вы найдете несколько карточных игр с использованием библитеки cards32.dll

Реклама