Пошаговая инструкция описания конфигурации с примерами - 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

![](https://pp.userapi.com/c845019/v845019730/cc3/FqeZPeDeRpY.jpg)

Добавление правила выигрыша

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

![](https://pp.userapi.com/c845019/v845019730/cca/cE8f0_pvDfc.jpg)

Группировка стопок

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

![](https://pp.userapi.com/c845019/v845019730/cd1/JwhlLmNayOI.jpg)

Примечание
такую настройку генератора 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

![](https://pp.userapi.com/c845019/v845019730/d3d/w_QnWL2e9Is.jpg)

Генерация стопок типа «матрица»

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

![](https://pp.userapi.com/c845019/v845019730/d56/HHmqMOqJ8FU.jpg)

⬆️ Вверх

🏠 В начало

⬅️ Описание структур и правил | Глоссарий ➡️

⚠️ **GitHub.com Fallback** ⚠️