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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

...

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

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *