Terentyev / SmallWorld

Board game "Small world"
6 stars 2 forks source link

Формат статуса игры #6

Closed Terentyev closed 12 years ago

Terentyev commented 12 years ago

Черновик:

TGame: {
    players: [TPlayer],     // массив игроков
    regions: [TRegion],     // массив регионов
    turNum: int,            // номер хода
    pairs: [TRacePowerPair] // пары (раса, умение)
}

TPlayer: {
    id: int,                 // номер идентификатора
    coins: race,
    active: TRacePowerPair,  // активная пара (раса, умение) (может быть пустой)
    decline: TRacePowerPair, // пара в упадке (раса, умение) (может быть пустой)
    status: [
        "wait",              // игрок ждёт, когда наступит его очередь для действия
        "defend",            // игрок защищается
        "attack",            // игрок атакует
        "redeploy"           // игрок выполняет реорганизацию
    ],                       // статус игрок (может быть только что-то одно)
    /* дополнительные необязательные поля, определяющие остаточные данные способностей */
    berserkDice: int,        // число, которое выпало после бросания костей, для умения берсеркера
    berserkRegionId:         // номер региона, на который нападает "берсеркер"
    encampmentNum: int,      // кол-во лагерей, которые остались на руках
    friends: int,            // игрок, который принудил нас к дружбе (только у одного игрока) (обнуляется, когда  дипломат снова начинает ходить)
    victims: [ id ],         // игроки, на которых напал за этот ход дипломат (обнуляется, когда дипломат заканчивает ход или выбрал друга)
}

TRegion: {
    id: int,                // номер идентификатора региона
    race: string,           // раса, фигурки которой расположены в регионе (также являются идентификатором принадлежности игроку)
    tokensNum: int,         // кол-во фигурок, которые находятся в регионе (также нейтральные)
    type: [ "border" etc. ],// тип региона
    flags: [
        "holes",            // сделана дыра полуросликами (может и не нужен этот параметр)
        "firstHoles",       // сделана дыра полуросликами на первом ходу
        "conquer",          // захвачена на этом ходу (после подсчета бонусов при наличии фигурок убирается/меняется на occupy
        "occupy",           // окупирована
        "encampment",       // лагерь (может быть несколько лагерей)
        "dragon",           // дракон стоит в регионе
        "fort",             // поставлен форт
        "hero"              // поставлен герой
    ]
}

TRacePowerPair: {
    race: string,
    power: string
}
pnazarov commented 12 years ago

в TPlayer еще необходимо добавить сведения о пассивной расе если есть И как то надо хранить сведения о том кому какая территория принадлежит

Terentyev commented 12 years ago

Да, ты прав. Я думал это сделать через флаги регионов (после захвата регион начинает принадлежать игроку и появляется флаг "conquered", после расстановки войск статус меняется либо на "occupied" либо на свободную).

pnazarov commented 12 years ago

-TPlayer.coins не хотелось бы что бы игрок знал информацию о монетах других игроков -TPlayer.berserkRegionId, TPlayer.encampmentNum думаю не нужно хранить -TPlaye.status хранить не для каждого игрока, а хранить как TGame.mode+Tgame.activePlayerId если TGame.mode = defend хранить еще TGame.targetId -TRegion.id - не нужен так как карта задается массивом и id порядковый номер элемента в массиве -TRegion.flags = firstHoles не понимаю зачем нужен? как то отличается от просто "holes" -TRegion.flags = conquer вроде по другому обсуждали как это хранить

Terentyev commented 12 years ago

Короче все не так как здесь, поэтому сюда не смотреть