Путь разработчика    

Основа для карточной игры в C#


Цель этого примера - предоставить некоторую поддержку для создания карточной игры. В нем показано, как сделать класс для представления карт и рассказать, какая карта отображается в PictureBox. На самом деле это относительно просто.

Следующий код показывает класс Card.

Python

Класс сначала определяет свойства Rank и Suit. В этом примере я сделал их числовыми. Ранг будет находиться между 0 (Ace) и 12 (King).

Костюм будет 0 и 4 и будет представлять сердца, бриллианты, клубы, лопаты и другие. Иски в этом порядке, потому что это порядок, в котором они отображаются в файлах изображений .png. Вы можете изменить их, если хотите.

В последнем значении Suit хранятся обратные карточки и другие разные изображения, которые могут использоваться карточной игрой. Изображение cards.png не включает джокеров, но это то место, куда вы могли бы поместить их, если хотите.

В следующем коде показаны переменные, которые программа использует для хранения информации о карте.

Python

Значения NumSuits и NumRanks содержат номера костюмов и рангов. Поля CardWidth и CardHeight будут позднее содержать размеры изображений карт.

Перечисление Suits облегчает привязку индексов к костюмам.

В массиве Pics будут храниться элементы управления PictureBox, удерживающие карты.

Когда программа запускается, следующий обработчик события Load загружает данные карты.

Python

Этот код просто вызывает методы LoadCardImages и ArrangeCards. Следующий код показывает LoadCardImages.

Python

В ресурсе Properties.Resources.cards хранится изображение всех карт. Этот метод использует его для получения ширины и высоты карт. Затем он выделяет массив Pics и проецирует изображение, чтобы получить изображения отдельных карт.

Когда он перемещается по строкам и столбцам карточных изображений, код отслеживает свое положение на основном изображении и вызывает метод LoadCard для загрузки каждой из карт.

В следующем коде показан способ LoadCard.

Python

Этот метод создает новый PictureBox для хранения карты. В зависимости от того, что будет делать ваша карточная игра, вы можете не создавать PictureBox для каждой карты. Например, вы можете просто создать объекты Card для представления карт. Затем вы можете отобразить их в PictureBoxes позже. Этот пример просто загружает изображения и отображает их в отдельных элементах PictureBox, так что это вовсе не карточная игра.

После создания PictureBox метод вызывает LoadCardImage, чтобы загрузить изображение для карты. Затем он устанавливает различные свойства PictureBox, включая его Изображение, SizeMode и BorderStyle. Он устанавливает Parent в элемент управления Panel с именем panCards. Этот элемент управления имеет AutoScroll = True, поэтому он отображает полосы прокрутки, если элементы управления PictureBox внутри него не подходят в его видимой области.

Наконец, метод устанавливает свойство PictureBox элемента управления Tag, равное объекту Card, который содержит информацию о карте. Позже программа может использовать объект Tag, чтобы увидеть, какую карту представляет PictureBox.

В следующем коде показан способ LoadCardImage.

Python

Этот метод создает Bitmap, чтобы удерживать изображение карты и создает связанный объект Graphics. Затем он создает прямоугольник, который заполняет новое растровое изображение.
Он также создает прямоугольники, которые идентифицируют место, где изображение должно быть скопировано из большого растрового изображения, содержащего все изображения карт. Наконец, код копирует изображение карты из большого растрового изображения в новое растровое изображение и возвращает его.

В следующем коде показан способ ArrangeCards.

Python

Этот метод просто проходит через элементы управления PictureBox в массиве Pics и позиционирует элементы управления в строках и столбцах внутри Panel.. р>

В заключительные части программы входят следующие обработчики событий, которые выполняются, когда мышь входит или выходит из PictureBox.

Python

Python

...

Свойство pic_MouseLeave просто сбрасывает строку заголовка формы, поэтому оно отображает имя программы, а не любую карту, с которой последняя передала мышь.

Источник: http://csharphelper.com/blog/2017/03/make-basis-card-game-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Изучаем JavaScript (Моррисон М.)

Вы готовы сделать шаг вперед в своей практике веб-программирования и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда при...

14 09 2019 10:45:16

Размер шрифта, чтобы он соответствовал обернутой этикетке в C#

Пример Установите размер шрифта, чтобы он соответствовал label в C# показывает, как вы можете выбрать размер шрифта, чтобы сделать текст большим, но все ещ...

13 09 2019 2:21:19

Прочтите CSV-файл в массив в C#

Следующий метод LoadCsv считывает CSV-файл в двумерный массив строк. В коде используется System.IO.File.ReadAllText, чтобы прочитать содержимое файла в стр...

12 09 2019 11:46:26

Как очистить базу данных WordPress в C#

В этом примере показано, как можно использовать методы обработки файлов для очистки базы данных WordPress. К сожалению, экспортируемые мной данные содержат...

11 09 2019 20:53:13

Как использовать блокировки в Java

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

10 09 2019 21:20:51

Self в Python

Self в Python представляет экземпляр класса. В отличие от этого в C ++, «я» не является ключевым словом, это всего лишь соглашение о кодировании. Часто пер...

09 09 2019 4:28:59

Кортеж (Tuple) в Python

Кортеж представляет собой совокупность неизменных Python объектов, разделенных запятыми. Кортежи похожи на списки, но мы не можем изменить элементы кортежа...

08 09 2019 21:38:52

Что такое package в Java?

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

07 09 2019 8:47:51

Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14 (Скотт Мейерс)

В этой книге отражен бесценный опыт ее автора как программиста на C++. Новые возможности этого языка программирования, появившиеся в стандартах C++11 и C++...

06 09 2019 9:24:21

Отправлять распечатку непосредственно на конкретный принтер в C#

Код устанавливает имя принтера, а затем вызывает метод PrintDocument объекта Print для немедленной отправки распечатки на этот принтер. Источник: http://cs...

05 09 2019 1:24:51

Сделайте таймер обратного отсчета в C#

Когда программа запускается, она устанавливает имя и время события. Затем он включает управление Timer. В следующем коде показан обработчик событий Timer T...

04 09 2019 14:34:14

Как скопировать и вставить объекты в буфер обмена в C#

Очень легко скопировать и вставить объекты в буфер обмена на C#. Единственный реальный трюк - украсить класс, который вы хотите использовать с атрибутом Se...

03 09 2019 9:59:36

Нарисуйте текст на кривой в C#

Пример Нарисуйте текст в сегменте линии в C# показывает, как рисовать текст, следующий за сегментом линии. В этом примере этот код используется для рисован...

02 09 2019 5:26:47

Как нарисовать пунктирные линии, которые видны на любом фоне в C#

В этом примере показано, как рисовать пунктирные линии, которые видны на любом фоне.  Иногда трудно рисовать линии, которые видны поверх фотографии или друг...

01 09 2019 1:53:44

Класс Java StringBuilder

Java StringBuilder идентичен StringBuffer, за исключением одного важного различия, которое не синхронизировано, это означает, что он не является потокобезо...

31 08 2019 3:16:25

Получение значения переменных по имени в C#

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

30 08 2019 23:50:52


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69