Пошаговая инструкция описания конфигурации с примерами - romasan/solitaire-game-engine GitHub Wiki
Добавление стопки с картами
Обработка правил возможного хода
Добавление правила выигрыша
Группировка стопок
Генерация стопок в группе
Генерация стопок типа «веер»
Генерация стопок типа «матрица»
var config = {
field: "#wrap", // элемент в котором будет рендериться игровые элементы
// если не задано, по умолчанию равно "#map"
decks: [ // описание стопок на игровом поле
{
name: "deck_name", // имя этой стопки карт (необязательно)
position: { // координаты стопки на поле
x: 1,
y: 1
}
},
fill: ["c1", "c2", "c3", "c4"] // заполнение стопки картами
// последний элемент в стопке верхний
]
};
Примечание:
config.decks[0].fill = ["c1", "c2", "c3", "c4"]; // можно подставлять для расклада
// нужные карты в стопки
// в любой момент до инициализации
В данной конфигурации имеется две стопки, первая deck_one
из которой можно брать карты по одной и нельзя класть карты в неё, и вторая deck_two
в которую можно класть любое сочетание карт, но брать карты из неё нельзя.
var config = {
decks: [
{
name: "deck_one",
position: {
x: 100,
y: 100
},
takeRules: ["onlytop"], // описание правил возможности взять карты из этой стопки карт
putRules: ["not"] // описание правил возможности положить карты в эту стопку карт
},
{
name : "deck_two",
position : {
x: 300,
y: 100
},
takeRules: ["not"],
putRules: ["any"]
}
]
};
config.decks[0].fill = ["c1", "c2", "c3", "c4"];
Preview

var config = {
winCheck: ["allInOne"], // простое правило выигрыша
// все карты собраны в одной из стопок
decks: [
{
name: "deck_one",
position: {
x: 100,
y: 20
},
takeRules: ["onlytop"],
putRules: ["not"]
},
{
name: "deck_two",
position: {
x: 400,
y: 20
},
takeRules: ["onlytop"],
putRules: ["not"]
},
{
name : "deck_three",
position : {
x: 250,
y: 70
},
takeRules: ["not"],
putRules: ["any"]
}
]
};
config.decks[0].fill = ["c7", "c5", "c3", "c1"];
config.decks[1].fill = ["c8", "c6", "c4", "c2"];
Preview

var config = {
winCheck: ["allInOne"],
groups: {
group_1: {
takeRules: ["onlytop"],
putRules: ["not"],
position: {
y: 20
},
decks: [
{
position: {
x: 100
},
},
{
position: {
x: 400
}
}
]
}
},
decks: [
{
name : "deck_three",
position : {
x: 250,
y: 70
},
takeRules: ["not"],
putRules: ["any"]
}
]
};
config.groups.group_1.fill = [ // заполнение группы стопок картами
["c7", "c5", "c3", "c1"], // первая стопка карт
["c8", "c6", "c4", "c2"] // вторая стопка карт
];
var config = {
groups: {
group_1: {
takeRules: ["onlytop"],
putRules: ["not"],
position: {
x: 100,
y: 20
},
placement : {
x : 20
},
decks: { // настройка генерации стопок в группе
generator: { // вместо описания каждой отдельной стопки карт
type: "count", // тип "генератора"
count: 3 // параметры
}
}
}
}
};
config.groups.group_1.fill = [
["c7", "c4", "c1"],
["c8", "c5", "c2"],
["c9", "c6", "c3"]
];
Preview

Примечание
такую настройку генератора count
decks: {
generator: {
type: "count",
count: 3
}
}
можно заменить на
decks: 3
указав сколько стопок должно быть в группе
var config = {
groups: {
group_1: {
takeRules: ["onlytop"],
putRules: ["not"],
position: {
x: 100,
y: 100
},
placement : {
x : 20
},
decks: {
generator: {
type: "fan", // тип "генератора"
count: 5, // параметры
radius: 160,
center: {
x: 200,
y: 200
}
}
}
}
}
};
config.groups.group_1.fill = [
["c1", "c2"],
["c3", "c4"],
["c5", "c6"],
["c7", "c8"],
["c9", "c10"],
];
Preview

var config = {
groups: {
group_1: {
takeRules: ["onlytop"],
putRules: ["not"],
position: {
x: 100,
y: 100
},
placement : {
x: 10,
y: 10
},
decks: {
generator: {
type: "map", // тип "генератора"
map: [
[true, true, true],
[true, null, true],
[true, true, true],
]
}
}
}
}
};
config.groups.group_1.fill = ["c1", "c2", "c3", "c4", "c6", "c7", "c8", "c9"];
Preview
