Играя в блэкджек на новом XBox 360, Windows ПК и Windows Phone 7.1(5)

Грэг Дункан

Сегодняшний проект показывает, как одна база кода, один набор исходных файлов может быть использован на Windows ПК, XBox 360 и Windows Phone 7 одновременно…Да, и код на VB или C#... clip_image002

Стартовый набор карточных игр: блэкджек (C#/VB)

Этот пример содержит полнофункциональную карточную игру блэкджек для Windows, консоли Xbox 360 и Windows Phone 7, созданную на основе легко расширяемой платформы карточных игр и анимации, которую можно использовать для создания собственных карточных игр.

clip_image004

Вот содержание включенного файла описания:

Как работает пример

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

  • Классы из примера GameStateManagement управляют загрузкой, обновлением и сменой экранов
  • Класс AnimatedGameComponentнаследующий от DrawableGameComponent, управляет анимацией положения и масштаба, а также прорисовкой текста объектов игры
  • Карточная платформа, представленная главным образом классами CardGame, CardPacket, Player, GameTable и GameRule, обеспечивает общую функциональность карточной игры и расширяется классами Blackjack для реализации специфичной логики игры.

После начала игры GameplayScreenсоздает BlackjackCardGame, передавая BlackJackTableи инициализируя BlackjackPlayers. BlackjackCardGame управляет покадровым вводом с помощью метода GameScreen . HandleInputи передает данные через объект InputState всем другим классам, которыми он управляет.

Разными фазами игры управляет конечный автомат внутри BlackjackCardGame, решая когда начать раздачу, когда добавить и разрешить правила и когда начать новый раунд, основываясь главным образом на взаимодействии пользователя с разными кнопками ввода, которые являются объектами AnimatedGameComponent.

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

Расширение примера

Если вы интересуетесь созданием других типов карточных игр, расширение платформы Cards Framework – хорошее место для начала; создайте новый класс, наследующий от CardsGame, новый класс наследующий от GameTable, новый класс игрока, наследующий от Player, и новые классы GameRule, которые нужны для определения ценности карт в вашей игре. Затем вы можете изменить метод GameplayScreen . Initialize, чтобы вызвать собственный CardsGame . Initialize, добавить необходимые объекты Player и начать раунд игры.

Вот запущенный на Windows проект:

clip_image006

clip_image008

И на Windows Phone 7:

clip_image010

clip_image012

(Мой сын играл на XBox 360 в Skyrim и не позволил мне продемонстрировать работающий на этой консоли вариант игры…)

Давайте взглянем на исходники (VB):

clip_image014

clip_image016clip_image018clip_image020

Три платформы используют одни файлы кода. Как?

clip_image022

Если вы когда-либо интересовались созданием кросс-платформенных XNA-игр, созданием карточных игр или просто играете в блэкджек, этот проект ждет вас…