Сardgame

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

Cardgame.png
Cardgame2.png

Cardgame – фреймворк, который предоставляет примитивы для создания карточных игр с Ren'Py. Движок cardgame на самом деле не реализует для вас любые карточные игры. Вместо этого, он реализует набор примитивов, которые характерны для различных карточных игр:

  • Карты
  • Колоды карт
  • Нажатие или двойное нажатие на карте или колоде
  • Перетаскивание карт между колодами
  • Переворачивать карты с одной стороны на другую

Предоставление этих примитивов позволяет легко создать карточные игры. (Например, создание пасьянса "косынка" занимает 225 строк кода, включая комментарии и пустые строки.)

Cardgame распространяется под другой лицензией, чем сам Ren'Py. Она может свободно распространяться с бесплатными играми. Другие пользователи могут приобрести коммерческую лицензию.

Последняя версия cardgame может быть загружена со страницы frameworks.

Лицензии (License)[править | править код]

Cardgame лицензируется в соответствии со следующими условиями:

cardgame.rpy - Cardgame support for Ren'Py
Copyright (C) 2008 PyTom <pytom@bishoujo.us>

This software may be distributed in modified or unmodified form,
provided:

(1) This complete license notice is retained.

(2) This software and all software and data files distributed
alongside this software and intended to be loaded in the same
memory space may be redistributed without requirement for
payment, notification, or other forms of compensation.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

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

Понятия (Concepts)[править | править код]

Есть четыре понятия, которые используются в cardgame: столы, карты, колоды и события с картой.

Стол (Table)[править | править код]


Объекты стола - это основа, отображаемая на экране, используемая в cardgame. Стол может иметь различные колоды и карты, определенных под ним, и заботиться об их отображении, и создавать события в ответ на пользовательский ввод.

Стол должен быть отображен на основном слое, с помощью методов показа и скрытия. Добавление стола к переходному слою может привести к беспорядку в анимации движения карты.

Столы не отображают фоновое изображение под колодами. Такое изображение можно продемонстрировать, используя операторов "scene" и "show".

Карта (Card)[править | править код]


Cardgame представляет карты, использующие ключ-значения (hashable), предоставленные пользователем. В отличии от столов, колод и событий, карты не являются объектами, созданными cardgame, но вместо этого, они могут быть объектами или другими значениями, созданными пользователями. Например, восьмерка пик могла быть представлена как кортеж (1, 8). Пользовательские объекты так же часто допустимы.

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

Колода (Stack)[править | править код]


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

CardEvent[править | править код]


Когда отображаемый стол, чувствительный к изменениям, вызывается ui.input, который возвратит объекты CardEvent в ответ на определенные пользователем операции.

Стол (Table)[править | править код]

Стол создается с помощью конструктора Table:

Функция: Table (back=None, base=None, springback=0.1, can_drag=..., doubleclick=.33)):

Создаёт новый стол.
back - Отображаемая на экране основа колоды карт, которая не предусматривается более конкретной базой.
base - Отображаемое на экране изображение, используемое в качестве основы колоды, которое не предусматривается более конкретной базой.
springback - время, необходимое для карт перескочить на их новое местоположение, когда они были перемещены между колодами или сброшены.
can_drag - функция, которая должна возвращать значение True, если карту можно перетащить. Функции даётся три аргумента, стол, колода и карта, которые будут перемещены. Она должна возвращать значение True, чтобы дать возможность перетаскивать или, в противном случае, значение False. По умолчанию функция возвращает значение True, если карту тащат лицом вверх.
doubleclick - максимальное время между кликами для получения события doubleclick.

Стол состоит из следующих методов:

Метод: card (value, face, back):

Объявляет новую карту.
value - значение hashable, которое используется для представления карты.
face - отображаться на экране, как лицо карты.
back - если не None, то отображаться на экране, как лицо карты. Иначе, применяется значение обратного аргумента конструктора Table.

Метод: stack (x, y, xoff=0, yoff=0, show=1024, base=None, click=False, drag=DRAG_NONE, drop=False, hidden=False):

Объявляет новую колоду и возвращает в колоду объекты.
x, y - создаёт x и y смещение центра самой нижней карт колоды или основания.
xoff, yoff - смещение каждой карты в колоде относительно следующей нижестоящей карты в колоде.
show - количество карт, показанных в колоде. Если карт больше, чем их количество в колоде, то тогда только верхние показанные карты будут показаны.
base - изображение, которое используется, как основа колоды, если в колоде нет карт. Если значение None, то используется основа по умолчанию, заданная с помощью Table.
clicked - если значение True, то эта колода будет восстанавливаться по событиям клика или двойного клика, когда на колоду щелкнут.
drag - устанавливает какие карты, если такие имеются, участвуют в перетаскивание из колоды:
  • DRAG_NONE - Никакое перемещение не может произойти.
  • DRAG_CARD - Только карта, которую тянут, будут вытянута.
  • DRAG_ABOVE - Карту тянут, и все карты над ней будут тянуться.
  • DRAG_STACK - Все карты в колоде будут тянуться.
  • DRAG_TOP - Верхняя карта в колоде будет тянуться.
drop - если значение True, то колода может быть использована, как цель перетаскивания.
hidden - если значение True, то колода не будет показана на экране.

Метод: set_sensitive (value):

Определяет, будет ли стол реагировать на события. Если значение False, то стол перестанет реагировать на события до тех пор, пока не вызовется со значением True.

Метод: set_faceup (card, faceup=True):

Определяет, будет ли карта отображаться лицевой стороной вверх или лицевой стороной вниз. Карта отображается лицевой стороной вверх, если значение faceup - True.

Метод: get_faceup (card):

Возвращает значение True, если названная карта лежит лицевой стороной вверх, или, в противном случае, значение False.

Метод: set_rotate (card, rotation):

Устанавливает вращение карты с поворотом в градусах. Качество вращения оставляет желать лучшего.

Метод: get_rotate (card):

Возвращает вращение карты, в градусах.

Метод: add_marker (card, marker):

Добавляет маркер на карту. Маркер должен отображаться на экране.

Метод: remove_marker (card, marker):

Удаляет маркер с карты.

Колода (Stacks)[править | править код]

Колода поддерживает некоторые основные операции со списками, как LEN (), индексирования (indexing), проверка принадлежности (membership tests), и итерации (teration). Карты размещаются в список снизу вверх. Колода также поддерживают следующие методы:

Метод: insert (index, card):

Вставляет карты в колоду по индексу, где 0 и len(s) - это основание колоды. Если карта в колоде, анимация перемещения карты в новую колоду.

Метод: append (card):

Место карты в верхней части колоды. Если карта в колоде, анимация перемещения карты к вершине колоды.

Метод: remove (card):

Возвращает карту в колоду.

Метод: deal ():

Перемещает карту наверху колоды от колоды и возвращает её. Возвращает None, если колода пуста.

Метод: shuffle ():

Перетасовывает карты в колоде в случайном порядке.

CardEvent[править | править код]

Объекты CardEvent возвращаются из ui.interact(), когда события происходят в то время, как Table восприимчив к изменениям. Все объекты событий имеют следующие определенные области:

type - Одно из "перетащить", "клик" или "два клика" предоставленных событий.
table - Стол - это событие, соответствующее ему.
stack - Колода, на которую щелкнули или тянули от.
card - Карта, по которой щелкнули или тянули. Не для клика по колоде.

События перетаскивания также имеют следующие определенные области.

drag_cards - Список перетаскиваемых карт
drop_stack - Происходит сбрасывание колоды карт.
drop_card - Карта сбрасываются на карты, если такие имеются, если нет, то карты сбросили на пустую колоду.

Источник[править | править код]

Статья "Cardgame" на английском языке


Фреймворки Книга рецептов Ren'Py Вернуться к началу статьи