Test

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Test » pattern matching » игра


игра

Сообщений 1 страница 4 из 4

1

[hideprofile]
[html]<div class="rgf-layout" data-rgf-root="game">
<!------прогресс игроков тут в []. ВАЖНО. СОХРАНЯЙТЕ ВНЕШНИЕ []------------------>
  <div class="rgf-layout__state-source">[["петя",6],["маша",4],["Игрок_03",6],["Игрок_04",2],["Игрок_05",2]]</div>

  <div class="rgf-layout__head">
    <div class="rgf-layout__title-box">
      <div class="rgf-layout__title">название игры</div>
    </div>

    <div class="rgf-layout__cards" aria-hidden="true">
      <span class="rgf-layout__card rgf-layout__card--a"></span>
      <span class="rgf-layout__card rgf-layout__card--b"></span>
    </div>

    <div class="rgf-layout__intro">
      <div class="rgf-layout__rules">
        <div class="rgf-layout__label">правила игры</div>
        <div class="rgf-layout__copy">В игре участвуют от 2 до 6 игроков. В свой ход игрок бросает кубик и двигается вперёд на количество клеток от 1 до 6. На некоторых клетках срабатывают особые эффекты: они могут перенести вас вперёд, отбросить назад, дать приз или задание. Фишки игроков показывают их текущее положение на поле. Цель игры — первым добраться до финала, преодолевая ловушки, порталы и случайные события.</div>
      </div>

      <div class="rgf-layout__effects">
        <div class="rgf-layout__label rgf-layout__label--small">эффекты клеток</div>
        <div class="rgf-layout__effects">
3, 9, 22, 24 — перемещение вперёд<br>
11, 31 — возвращение к началу<br>
21, 32 — сильный откат назад<br>
18, 35 — небольшой откат назад<br>
5, 30 — проверка удачи (кубик: ничего или приз)<br>
7, 25 — получение приза<br>
13, 28 — задание (нужно выполнить, чтобы продолжить)
        </div>
      </div>
    </div>
  </div>

  <div class="rgf-layout__board-wrap">
    <div class="rgf-layout__board-stage">
      <div class="rgf-board">
        <div class="rgf-board__cell rgf-board__cell--finish" aria-label="клетка 36"></div>
        <div class="rgf-board__cell rgf-board__cell--spider">
          <span class="rgf-board__num">35</span>
          <span class="rgf-layout__asset rgf-layout__asset--bug" aria-hidden="true"></span>
        </div>
        <div class="rgf-board__cell"><span class="rgf-board__num">34</span></div>
        <div class="rgf-board__cell"><span class="rgf-board__num">33</span></div>
        <div class="rgf-board__cell rgf-board__cell--snake"><span class="rgf-board__num">32</span></div>
        <div class="rgf-board__cell rgf-board__cell--monster"><span class="rgf-board__num">31</span></div>

        <div class="rgf-board__cell rgf-board__cell--reward">
          <span class="rgf-board__num">25</span>
          <span class="rgf-layout__asset rgf-layout__asset--chest" aria-hidden="true"></span>
        </div>
        <div class="rgf-board__cell rgf-board__cell--danger"><span class="rgf-board__num">26</span></div>
        <div class="rgf-board__cell"><span class="rgf-board__num">27</span></div>
        <div class="rgf-board__cell rgf-board__cell--quest">
          <span class="rgf-board__num">28</span>
          <span class="rgf-layout__asset rgf-layout__asset--flame" aria-hidden="true"></span>
        </div>
        <div class="rgf-board__cell"><span class="rgf-board__num">29</span></div>
        <div class="rgf-board__cell rgf-board__cell--luck">
          <span class="rgf-board__num">30</span>
          <span class="rgf-layout__asset rgf-layout__asset--moon" aria-hidden="true"></span>
        </div>

        <div class="rgf-board__cell rgf-board__cell--boost">
          <span class="rgf-board__num">24</span>
          <span class="rgf-layout__asset rgf-layout__asset--pacman" aria-hidden="true"></span>
        </div>
        <div class="rgf-board__cell"><span class="rgf-board__num">23</span></div>
        <div class="rgf-board__cell rgf-board__cell--danger"><span class="rgf-board__num">22</span></div>
        <div class="rgf-board__cell rgf-board__cell--snake"><span class="rgf-board__num">21</span></div>
        <div class="rgf-board__cell"><span class="rgf-board__num">20</span></div>
        <div class="rgf-board__cell rgf-board__cell--snake"><span class="rgf-board__num">19</span></div>

        <div class="rgf-board__cell rgf-board__cell--quest">
          <span class="rgf-board__num">13</span>
          <span class="rgf-layout__asset rgf-layout__asset--flame" aria-hidden="true"></span>
        </div>
        <div class="rgf-board__cell"><span class="rgf-board__num">14</span></div>
        <div class="rgf-board__cell"><span class="rgf-board__num">15</span></div>
        <div class="rgf-board__cell"><span class="rgf-board__num">16</span></div>
        <div class="rgf-board__cell rgf-board__cell--danger"><span class="rgf-board__num">17</span></div>
        <div class="rgf-board__cell rgf-board__cell--spider">
          <span class="rgf-board__num">18</span>
          <span class="rgf-layout__asset rgf-layout__asset--bug" aria-hidden="true"></span>
        </div>

        <div class="rgf-board__cell"><span class="rgf-board__num">12</span></div>
        <div class="rgf-board__cell rgf-board__cell--monster"><span class="rgf-board__num">11</span></div>
        <div class="rgf-board__cell rgf-board__cell--snake"><span class="rgf-board__num">10</span></div>
        <div class="rgf-board__cell rgf-board__cell--danger"><span class="rgf-board__num">09</span></div>
        <div class="rgf-board__cell"><span class="rgf-board__num">08</span></div>
        <div class="rgf-board__cell rgf-board__cell--reward">
          <span class="rgf-board__num">07</span>
          <span class="rgf-layout__asset rgf-layout__asset--chest" aria-hidden="true"></span>
        </div>

        <div class="rgf-board__cell rgf-board__cell--start" aria-label="клетка 01"></div>
        <div class="rgf-board__cell"><span class="rgf-board__num">02</span></div>
        <div class="rgf-board__cell rgf-board__cell--boost">
          <span class="rgf-board__num">03</span>
          <span class="rgf-layout__asset rgf-layout__asset--pacman" aria-hidden="true"></span>
        </div>
        <div class="rgf-board__cell"><span class="rgf-board__num">04</span></div>
        <div class="rgf-board__cell rgf-board__cell--luck">
          <span class="rgf-board__num">05</span>
          <span class="rgf-layout__asset rgf-layout__asset--moon" aria-hidden="true"></span>
        </div>
        <div class="rgf-board__cell"><span class="rgf-board__num">06</span></div>
      </div>

      <div class="rgf-board__overlays" aria-hidden="true">
        <span class="rgf-board__overlay rgf-board__overlay--finish">
          <span class="rgf-board__overlay-part rgf-board__overlay-part--finish-castle"></span>
          <span class="rgf-board__overlay-part rgf-board__overlay-part--finish-text"></span>
        </span>
        <span class="rgf-board__overlay rgf-board__overlay--start">
          <span class="rgf-board__overlay-part rgf-board__overlay-part--start-swords"></span>
          <span class="rgf-board__overlay-part rgf-board__overlay-part--start-text"></span>
        </span>
        <span class="rgf-board__overlay rgf-board__overlay--ladder-a">
          <span class="rgf-board__overlay-part rgf-board__overlay-part--ladder"></span>
        </span>
        <span class="rgf-board__overlay rgf-board__overlay--ladder-b">
          <span class="rgf-board__overlay-part rgf-board__overlay-part--ladder"></span>
        </span>
        <span class="rgf-board__overlay rgf-board__overlay--monster-a">
          <span class="rgf-board__overlay-part rgf-board__overlay-part--monster"></span>
        </span>
        <span class="rgf-board__overlay rgf-board__overlay--monster-b">
          <span class="rgf-board__overlay-part rgf-board__overlay-part--monster"></span>
        </span>
        <span class="rgf-board__overlay rgf-board__overlay--snake-a">
          <span class="rgf-board__overlay-part rgf-board__overlay-part--snake"></span>
        </span>
        <span class="rgf-board__overlay rgf-board__overlay--snake-b">
          <span class="rgf-board__overlay-part rgf-board__overlay-part--snake"></span>
        </span>
      </div>
    </div>
  </div>

  <div class="rgf-layout__players-panel">
    <div class="rgf-layout__players-title">игроки на поле</div>
    <div class="rgf-layout__players rgf-layout__players--list" data-rgf-player-list></div>
  </div>

  <div class="rgf-admin" data-rgf-admin>
    <div class="rgf-admin__heading">админка</div>
    <div class="rgf-admin__grid">
      <div class="rgf-admin__card rgf-admin__card--players">
        <div class="rgf-admin__hint rgf-admin__hint--top">ВАЖНО!!! админка корректно работает только в режиме редактирования</div>
        <div class="rgf-admin__card-title">игроки</div>
        <div class="rgf-admin__players-list rgf-admin__players-list--mount" data-rgf-admin-players></div>
        <div class="rgf-admin__footer">
          <button class="rgf-admin__button rgf-admin__button--dark rgf-admin__button--add" type="button" data-rgf-action="add-player">добавить игрока</button>
          <div class="rgf-admin__count rgf-admin__count--value" data-rgf-count>Игроков: 4/6</div>
        </div>
      </div>

      <div class="rgf-admin__side">
        <div class="rgf-admin__card">
          <div class="rgf-admin__card-title">код положения игроков</div>
          <div class="rgf-admin__hint">замените скрытый блок состояния в начале html после тега rgf-layout__state-source</div>
          <textarea class="rgf-admin__output rgf-admin__output--state" data-rgf-output="state" readonly spellcheck="false"></textarea>
          <button class="rgf-admin__button rgf-admin__button--dark rgf-admin__button--copy-state" type="button" data-rgf-copy="state">скопировать код</button>
        </div>

        <div class="rgf-admin__card">
          <div class="rgf-admin__card-title">ответ игрокам</div>
          <div class="rgf-admin__hint">чтобы сформированный автоматически ответ не исчез, скопируйте его куда-нибудь до того, как обновите положение игроков в коде</div>
          <textarea class="rgf-admin__output rgf-admin__output--reply" data-rgf-output="reply" readonly spellcheck="false"></textarea>
          <button class="rgf-admin__button rgf-admin__button--dark rgf-admin__button--copy-reply" type="button" data-rgf-copy="reply">скопировать код</button>
        </div>
      </div>
    </div>
  </div>
</div>
[/html]

0

2

Игрок_01, тебя подхватил попутный ветер - летишь на клетку 6.
Игрок_02, ты перемещаешься на клетку 4.
Игрок_03, ты перемещаешься на клетку 6.
Игрок_04, тебя подхватил попутный ветер - летишь на клетку 6.
Игрок_05, ты перемещаешься на клетку 6.
Игрок_06, судьба решила поиграть с тобой. Бросай кубик: 1-3 - увы, не твой день, 4-6 - получаешь подарок.

0

3

Игрок_01, из тьмы выскочил монстр... Возвращаешься на клетку 1.
Игрок_02, ты наступил на тайный портал - перенос на клетку 17.
Игрок_03, судьба решила поиграть с тобой. Бросай кубик: 1-3 - увы, не твой день, 4-6 - получаешь подарок.
Игрок_05, ты перемещаешься на клетку 4.
Игрок_06, ты перемещаешься на клетку 6.

0

4

Код:
/*игра*/
.rgf-layout {
  --rgf-stage-ratio: 897.422119 / 876.427368;
  --rgf-board-left: 1.3%;
  --rgf-board-width: 97.102813%;
  --rgf-board-height: 97.531594%;
  --rgf-board-column-gap: 0.918040%;
  --rgf-board-row-gap: 0.935898%;
  --rgf-gap: 8px;
  --rgf-radius: 9.238px;
  --rgf-copy-bg: rgba(0, 0, 0, 0.05);
  --rgf-copy-border: rgba(0, 0, 0, 0.05);
  --rgf-copy-rule: rgba(0, 0, 0, 0.2);
  --rgf-text-soft: rgba(0, 0, 0, 0.78);
  --rgf-num-light: rgba(255, 255, 255, 0.3);
  --rgf-num-dark: rgba(255, 255, 255, 0.25);
  --rgf-cell-neutral: #cccccc;
  --rgf-cell-start: #ffd858;
  --rgf-cell-boost: #77afe9;
  --rgf-cell-luck: #834ea8;
  --rgf-cell-reward: #ff9900;
  --rgf-cell-snake: #6cb47f;
  --rgf-cell-danger: #b88071;
  --rgf-cell-quest: #000000;
  --rgf-cell-spider: #56474c;
  --rgf-cell-monster: #f0471c;
  --rgf-cell-finish: #e46654;
  --rgf-panel-bg: #eeeeee;
  --rgf-panel-border: rgba(0, 0, 0, 0.1);
  --rgf-token-1: #f0471c;
  --rgf-token-2: #4f7cf0;
  --rgf-token-3: #2ea36b;
  --rgf-token-4: #f0a11f;
  --rgf-token-5: #8b67c3;
  --rgf-token-6: #d464a1;
  --rgf-ease-soft: cubic-bezier(0.22, 1, 0.36, 1);

  --rgf-img-pacman: url(https://forumstatic.ru/files/001c/aa/0d/48444.png);
  --rgf-img-moon: url(https://forumstatic.ru/files/001c/aa/0d/39302.png);
  --rgf-img-chest: url(https://forumstatic.ru/files/001c/aa/0d/87404.png);
  --rgf-img-flame: url(https://forumstatic.ru/files/001c/aa/0d/48451.png);
  --rgf-img-bug: url(https://forumstatic.ru/files/001c/aa/0d/35394.png);
  --rgf-img-ladder: url(https://forumstatic.ru/files/001c/aa/0d/67667.png);
  --rgf-img-monster: url(https://forumstatic.ru/files/001c/aa/0d/67802.png);
  --rgf-img-snake: url(https://forumstatic.ru/files/001c/aa/0d/88403.png);
  --rgf-img-start-swords: url(https://forumstatic.ru/files/001c/aa/0d/65389.png);
  --rgf-img-start-text: none;
  --rgf-img-finish-castle: url(https://forumstatic.ru/files/001c/aa/0d/20710.png);
  --rgf-img-finish-text: none;
  --rgf-img-card-a: url(https://forumstatic.ru/files/001c/aa/0d/86512.png);
  --rgf-img-card-b: url(https://forumstatic.ru/files/001c/aa/0d/79255.png);

  width: 100%;
  max-width: var(--rgf-max-width);
  margin: 0 auto;
  display: grid;
  gap: var(--rgf-gap);
  overflow: hidden;
  color: #000;
  text-align: left;
}

.rgf-layout,
.rgf-layout * {
  box-sizing: border-box;
}

.rgf-layout__state-source {
  display: none;
}

.rgf-layout__head {
    position: relative;
    display: grid;
    gap: 0;
    margin: 0 auto;
    width: 901px;
    left: 13px;
}

.rgf-layout__title {
  margin: 0;
  font-family: "Press Start 2P";
  font-size: 48px;
  line-height: 1;
  font-weight: 700;
  text-transform: lowercase;
}

.rgf-layout__title-box {
  width: calc(100% - 29px);
  min-height: 61px;
  padding-right: 0;
}

.rgf-layout__cards {
  position: absolute;
  top: 0;
  right: 0;
  width: 181.942px;
  max-width: 20.215778%;
  aspect-ratio: 181.942 / 163.891;
  pointer-events: none;
  z-index: 3;
}

.rgf-layout__card {
  position: absolute;
  display: block;
  background-position: 50% 50%;
  background-repeat: no-repeat;
  background-size: contain;
}

.rgf-layout__card--a {
  left: 42.049389%;
  top: 15.941083%;
  width: 45.685988%;
  height: 77.034737%;
  transform: rotate(24.33deg);
  background-image: var(--rgf-img-card-a);
}

.rgf-layout__card--b {
  left: 5.632289%;
  top: 3.868425%;
  width: 45.618934%;
  height: 75.520925%;
  transform: rotate(-10.14deg);
  background-image: var(--rgf-img-card-b);
}

.rgf-layout__intro {
  width: calc(100% - 29px);
  display: grid;
  grid-template-columns: 542px 271px;
  gap: 8px;
  align-items: stretch;
  min-height: 133px;
  padding: 12px 42px 12px 8px;
  background: var(--rgf-copy-bg);
  border: 1px solid var(--rgf-copy-border);
  border-radius: 5px;
}

.rgf-layout__rules,
.rgf-layout__effects {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.rgf-layout__rules {
  gap: 8px;
  width: 542px;
  min-height: 109px;
  padding-right: 12px;
  border-right: 1px dashed var(--rgf-copy-rule);
}

.rgf-layout__effects {
  gap: 6px;
  width: 271px;
  padding: 0;
}

.rgf-layout__label {
    display: block;
    width: 100%;
    margin: 0;
    font-size: 20px;
    line-height: 1.1;
    font-weight: 700;
    text-transform: lowercase;
}

.rgf-layout__label--small {
  font-size: 14px;
}

.rgf-layout__copy {
  display: block;
  width: 100%;
  margin: 0;
  font-size: 12px;
  line-height: 1.25;
  color: var(--rgf-text-soft);
  text-align: justify;
  text-transform: lowercase;
}

.rgf-layout__effects {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0px;
    font-size: 10px;
    line-height: 1.2;
    color: var(--rgf-text-soft);
    text-align: left;
    text-transform: lowercase;
    margin-top: 5px;
}

.rgf-layout__board-wrap {
  width: 100%;
  max-width: 897.422px;
  margin: 0 auto;
  overflow: hidden;
}

.rgf-layout__board-stage {
  position: relative;
  width: 100%;
  aspect-ratio: var(--rgf-stage-ratio);
  overflow: hidden;
}

.rgf-board {
  position: absolute;
  top: 0;
  left: var(--rgf-board-left);
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  grid-template-rows: repeat(6, minmax(0, 1fr));
  column-gap: var(--rgf-board-column-gap);
  row-gap: var(--rgf-board-row-gap);
  width: var(--rgf-board-width);
  height: var(--rgf-board-height);
}

.rgf-board__cell {
  position: relative;
  min-width: 0;
  overflow: visible;
  border-radius: var(--rgf-radius);
  background: var(--rgf-cell-neutral);
}

.rgf-board__cell--start { background: var(--rgf-cell-start); }
.rgf-board__cell--boost { background: var(--rgf-cell-boost); }
.rgf-board__cell--luck { background: var(--rgf-cell-luck); }
.rgf-board__cell--reward { background: var(--rgf-cell-reward); }
.rgf-board__cell--snake { background: var(--rgf-cell-snake); }
.rgf-board__cell--danger { background: var(--rgf-cell-danger); }
.rgf-board__cell--quest { background: var(--rgf-cell-quest); }
.rgf-board__cell--spider { background: var(--rgf-cell-spider); }
.rgf-board__cell--monster { background: var(--rgf-cell-monster); }
.rgf-board__cell--finish { background: var(--rgf-cell-finish); }

.rgf-board__num {
    position: absolute;
    top: 5.155%;
    left: 5.052%;
    z-index: 1;
    font-family: "Press Start 2P";
    font-size: 23px;
    color: var(--rgf-num-light);
}

.rgf-board__cell--quest .rgf-board__num,
.rgf-board__cell--spider .rgf-board__num {
  color: var(--rgf-num-dark);
}

.rgf-layout__asset {
  position: absolute;
  left: 5.333%;
  bottom: 5.442%;
  z-index: 2;
  display: block;
  background-position: 50% 50%;
  background-repeat: no-repeat;
  background-size: contain;
  pointer-events: none;
}

.rgf-layout__asset--pacman {
  width: 32.667%;
  height: 27.357%;
  transform: rotate(180deg) scaleY(-1);
  background-image: var(--rgf-img-pacman);
}

.rgf-layout__asset--moon {
  width: 26.667%;
  height: 27.104%;
  background-image: var(--rgf-img-moon);
}

.rgf-layout__asset--chest {
  width: 28.962%;
  height: 27.211%;
  background-image: var(--rgf-img-chest);
}

.rgf-layout__asset--flame {
  width: 25.333%;
  height: 27.424%;
  background-image: var(--rgf-img-flame);
}

.rgf-layout__asset--bug {
    width: 32%;
    height: 32%;
    background-image: var(--rgf-img-bug);
}

.rgf-board__tokens {
  position: absolute;
  left: 5.052%;
  right: 5.052%;
  bottom: 5.155%;
  z-index: 6;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: flex-end;
  gap: 4px;
}

.rgf-token {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    padding: 0;
    border: 2px solid #ffffffb5;
    border-radius: 999px;
    color: #fff;
    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
    font-size: 13px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    box-shadow: -5px 9px 18px rgb(0 0 0 / 11%);
}

.rgf-token[data-rgf-color="1"] { background: var(--rgf-token-1); }
.rgf-token[data-rgf-color="2"] { background: var(--rgf-token-2); }
.rgf-token[data-rgf-color="3"] { background: var(--rgf-token-3); }
.rgf-token[data-rgf-color="4"] { background: var(--rgf-token-4); }
.rgf-token[data-rgf-color="5"] { background: var(--rgf-token-5); }
.rgf-token[data-rgf-color="6"] { background: var(--rgf-token-6); }

.rgf-token__tip {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 6px);
  transform: translateX(-50%);
  display: block;
  min-width: 72px;
  max-width: 120px;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.88);
  color: #fff;
  font-size: 10px;
  line-height: 1.2;
  text-align: center;
  white-space: nowrap;
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18);
  animation: rgf-tip-in 0.18s var(--rgf-ease-soft) both;
}

.rgf-token__tip::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 100%;
  margin-left: -4px;
  border: 4px solid transparent;
  border-top-color: rgba(0, 0, 0, 0.88);
}

.rgf-layout__players-panel {
  display: grid;
  gap: 8px;
  width: 100%;
  max-width: 873px;
  margin: 0 auto;
  padding: 12px;
  background: var(--rgf-copy-bg);
  border: 1px solid var(--rgf-copy-border);
  border-radius: 5px;
}

.rgf-layout__players-title {
  margin: 0;
  font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
  font-size: 20px;
  line-height: 1.1;
  font-weight: 700;
  text-transform: lowercase;
}

.rgf-layout__players {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.rgf-layout__player-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.05);
}

.rgf-layout__player-dot {
  width: 16px;
  height: 16px;
  border-radius: 999px;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.14);
}

.rgf-layout__player-dot[data-rgf-color="1"] { background: var(--rgf-token-1); }
.rgf-layout__player-dot[data-rgf-color="2"] { background: var(--rgf-token-2); }
.rgf-layout__player-dot[data-rgf-color="3"] { background: var(--rgf-token-3); }
.rgf-layout__player-dot[data-rgf-color="4"] { background: var(--rgf-token-4); }
.rgf-layout__player-dot[data-rgf-color="5"] { background: var(--rgf-token-5); }
.rgf-layout__player-dot[data-rgf-color="6"] { background: var(--rgf-token-6); }

.rgf-layout__player-name {
  font-size: 12px;
  line-height: 1.3;
}

.rgf-board__overlays {
    position: absolute;
    inset: 0;
    z-index: 4;
    pointer-events: none;
    left: -13px;
}

.rgf-board__overlay,
.rgf-board__overlay-part {
  position: absolute;
  display: block;
}

.rgf-board__overlay {
  overflow: visible;
}

.rgf-board__overlay-part {
  background-position: 50% 50%;
  background-repeat: no-repeat;
  background-size: contain;
}

.rgf-board__overlay--finish {
    left: -99px;
    top: -21px;
    width: 29%;
    height: 21%;
}

.rgf-board__overlay-part--finish-castle {
  left: 39.044097%;
  top: 6.418478%;
  width: 70.723408%;
  height: 76.134428%;
}

.rgf-board__overlay-part--finish-castle::before,
.rgf-board__overlay-part--finish-text::before,
.rgf-board__overlay-part--start-swords::before,
.rgf-board__overlay-part--start-text::before,
.rgf-board__overlay-part--monster::before,
.rgf-board__overlay-part--ladder::before,
.rgf-board__overlay-part--snake::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 100%;
  height: 100%;
  background-position: 50% 50%;
  background-repeat: no-repeat;
  background-size: contain;
}

.rgf-board__overlay-part--finish-castle::before {
  transform: translate(-50%, -50%) rotate(11.11deg);
  background-image: var(--rgf-img-finish-castle);
}

.rgf-board__overlay-part--finish-text {
  left: 6.963024%;
  top: 35.068511%;
  width: 91.398926%;
  height: 64.200288%;
}

.rgf-board__overlay-part--finish-text::before {
  transform: translate(-50%, -50%) rotate(11.11deg);
  background-image: var(--rgf-img-finish-text);
}

.rgf-board__overlay--start {
    left: -9.770012%;
    top: 79.47532%;
    width: 26.087507%;
    height: 20.068285%;
}

.rgf-board__overlay-part--start-swords {
  left: 40.996910%;
  top: 0;
  width: 78.223731%;
  height: 88.150701%;
}

.rgf-board__overlay-part--start-swords::before {
  transform: translate(-50%, -50%) rotate(19.69deg);
  background-image: var(--rgf-img-start-swords);
}

.rgf-board__overlay-part--start-text {
  left: 11.676022%;
  top: 37.110022%;
  width: 72.470571%;
  height: 62.889958%;
}

.rgf-board__overlay-part--start-text::before {
  transform: translate(-50%, -50%) rotate(22.39deg);
  background-image: var(--rgf-img-start-text);
}

.rgf-board__overlay--ladder-a {
    left: -5.064509%;
    top: 11.296903%;
    width: 52.622305%;
    height: 24.897172%;
    transform: rotate(339deg);
}

.rgf-board__overlay--ladder-b {
    left: 28.535943%;
    top: 34.453038%;
    width: 44.062359%;
    height: 36.626101%;
    transform: rotate(330deg);
}

.rgf-board__overlay--ladder-a .rgf-board__overlay-part--ladder {
  left: 50%;
  top: 50%;
  width: 28.949086%;
  height: 105.496865%;
}

.rgf-board__overlay--ladder-b .rgf-board__overlay-part--ladder {
  left: 50%;
  top: 50%;
  width: 31.947222%;
  height: 102.098147%;
}

.rgf-board__overlay--ladder-a .rgf-board__overlay-part--ladder::before {
  transform: translate(-50%, -50%) rotate(-34.06deg);
  background-image: var(--rgf-img-ladder);
}

.rgf-board__overlay--ladder-b .rgf-board__overlay-part--ladder::before {
  transform: translate(-50%, -50%) rotate(28.72deg);
  background-image: var(--rgf-img-ladder);
}

.rgf-board__overlay--monster-a {
    left: 24%;
    top: 63.613181%;
    width: 14.617417%;
    height: 16.548658%;
}

.rgf-board__overlay--monster-b {
  left: 79.493455%;
  top: 2.845526%;
  width: 14.617417%;
  height: 16.548658%;
}

.rgf-board__overlay--monster-a .rgf-board__overlay-part--monster,
.rgf-board__overlay--monster-b .rgf-board__overlay-part--monster {
  inset: 0;
}

.rgf-board__overlay--monster-a .rgf-board__overlay-part--monster::before,
.rgf-board__overlay--monster-b .rgf-board__overlay-part--monster::before {
  transform: translate(-50%, -50%);
  background-image: var(--rgf-img-monster);
}

.rgf-board__overlay--snake-a {
    left: 9.141165%;
    top: 8.045578%;
    width: 53.098943%;
    height: 51.582942%;
    transform: rotate(-16deg);
}

.rgf-board__overlay--snake-b {
    left: 47.140717%;
    top: -25.254419%;
    width: 60.172119%;
    height: 48.8952%;
    transform: rotate(23deg);
}

.rgf-board__overlay--snake-a .rgf-board__overlay-part--snake {
  left: 50%;
  top: 50%;
  width: 41.778017%;
  height: 97.866191%;
}

.rgf-board__overlay--snake-b .rgf-board__overlay-part--snake {
  left: 50%;
  top: 50%;
  width: 37.052909%;
  height: 99.472740%;
}

.rgf-board__overlay--snake-a .rgf-board__overlay-part--snake::before {
  transform: translate(-50%, -50%) rotate(21.19deg);
  background-image: var(--rgf-img-snake);
}

.rgf-board__overlay--snake-b .rgf-board__overlay-part--snake::before {
  transform: translate(-50%, -50%) rotate(153.5deg) scaleY(-1);
  background-image: var(--rgf-img-snake);
}

.rgf-admin {
  display: grid;
  gap: 4px;
  width: 100%;
  max-width: 873px;
  margin: 0 auto;
}

.rgf-admin__heading {
  margin: 0;
  font-family: "Onest", "Trebuchet MS", Arial, Helvetica, sans-serif;
  font-size: 32px;
  line-height: 1;
  font-weight: 700;
  text-transform: lowercase;
}

.rgf-admin__grid {
  display: grid;
  grid-template-columns: minmax(0, 499px) minmax(0, 1fr);
  gap: 4px;
  width: 100%;
}

.rgf-admin__side {
  display: grid;
  gap: 4px;
  align-content: start;
}

.rgf-admin__card {
  display: grid;
  gap: 8px;
  width: 100%;
  padding: 12px;
  background: var(--rgf-panel-bg);
  border: 1px solid var(--rgf-panel-border);
  border-radius: 4px;
  align-content: start;
}

.rgf-admin__card--players {
  align-content: start;
}

.rgf-admin__card-title {
  margin: 0;
  font-family: "Onest", "Trebuchet MS", Arial, Helvetica, sans-serif;
  font-size: 18px;
  line-height: 1.1;
  font-weight: 700;
  text-transform: lowercase;
}

.rgf-admin__side .rgf-admin__card-title {
  min-width: 100%;
  font-size: 14px;
}

.rgf-admin__players-list {
  display: grid;
  gap: 0;
  width: 100%;
}

.rgf-admin__player {
  display: grid;
  gap: 4px;
  width: 100%;
  padding-bottom: 4px;
  border-bottom: 1px dashed var(--rgf-panel-border);
}

.rgf-admin__player + .rgf-admin__player {
  margin-top: 8px;
}

.rgf-admin__player-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.rgf-admin__player-title {
  margin: 0;
  font-family: "Onest", "Trebuchet MS", Arial, Helvetica, sans-serif;
  font-size: 14px;
  line-height: 1.1;
  font-weight: 700;
  text-transform: lowercase;
}

.rgf-admin__player-grid {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0;
  width: 100%;
}

.rgf-admin__player-grid > :nth-child(1) {
  width: 180px;
}

.rgf-admin__player-grid > :nth-child(2) {
  width: 76px;
}

.rgf-admin__player-grid > :nth-child(3) {
  width: 71px;
}

.rgf-admin__player-grid > :nth-child(4) {
  width: 63px;
}

.rgf-admin__field {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.rgf-admin__field-label {
  margin: 0;
  font-size: 10px;
  line-height: 1.2;
  color: rgba(0, 0, 0, 0.6);
  text-transform: lowercase;
}

.rgf-admin__input,
.rgf-admin__rollmenu,
.rgf-admin__cell-value,
.rgf-admin__new-value,
.rgf-admin__output {
  width: 100%;
  border: 1px solid var(--rgf-panel-border);
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.05);
  color: #000;
  font-family: Arial, Helvetica, sans-serif;
  transition: border-color 0.18s var(--rgf-ease-soft), background-color 0.18s var(--rgf-ease-soft), box-shadow 0.18s var(--rgf-ease-soft);
}

.rgf-admin__input,
.rgf-admin__rollmenu {
  height: 27px;
  padding: 0 12px;
  font-size: 12px;
  line-height: 1;
}

.rgf-admin__input {
  appearance: none;
}

.rgf-admin__rollmenu {
  appearance: none;
  padding-right: 20px;
  background-image:
    linear-gradient(45deg, transparent 50%, #8b67c3 50%),
    linear-gradient(135deg, #8b67c3 50%, transparent 50%);
  background-position:
    calc(100% - 12px) 10px,
    calc(100% - 7px) 10px;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
}

.rgf-admin__input:focus,
.rgf-admin__rollmenu:focus,
.rgf-admin__output:focus {
  outline: none;
  border-color: rgba(139, 103, 195, 0.45);
  box-shadow: 0 0 0 3px rgba(139, 103, 195, 0.14);
  background-color: rgba(255, 255, 255, 0.75);
}

.rgf-admin__cell-value {
  display: grid;
  align-items: center;
  min-height: 27px;
  padding: 0 4px;
  border-color: transparent;
  background: transparent;
  font-family: "Onest", "Trebuchet MS", Arial, Helvetica, sans-serif;
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
  text-align: center;
}

.rgf-admin__new-value {
  display: grid;
  align-items: center;
  min-height: 27px;
  padding: 0 4px;
  border-color: transparent;
  background: transparent;
  font-family: "Onest", "Trebuchet MS", Arial, Helvetica, sans-serif;
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
  text-align: center;
}

.rgf-admin__hint {
  margin: 0;
  font-size: 10px;
  line-height: 1.2;
  color: rgba(0, 0, 0, 0.6);
  text-transform: lowercase;
}

.rgf-admin__output {
  min-height: 88px;
  min-width: 100%;
  padding: 6px 12px;
  resize: none;
  overflow: auto;
  vertical-align: top;
  text-align: left;
  font-size: 12px;
  line-height: 1.35;
  justify-self: stretch;
}

.rgf-admin__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  padding: 4px 12px;
  border: 0;
  border-radius: 999px;
  min-height: 23px;
  font-size: 12px;
  line-height: 1.2;
  text-transform: lowercase;
  cursor: pointer;
  justify-self: start;
  align-self: start;
  flex: 0 0 auto;
  transition: transform 0.18s var(--rgf-ease-soft), box-shadow 0.18s var(--rgf-ease-soft), opacity 0.18s var(--rgf-ease-soft), background-color 0.18s var(--rgf-ease-soft);
}

.rgf-admin__button--dark {
  background: #000;
  color: #fff;
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.18);
}

.rgf-admin__button:not([disabled]):hover {
  transform: translateY(-1px);
}

.rgf-admin__button:not([disabled]):active {
  transform: translateY(0) scale(0.97);
}

.rgf-admin__button[disabled] {
  opacity: 0.45;
  cursor: default;
  pointer-events: none;
}

.rgf-admin__button--remove {
  padding: 2px 4px;
  min-height: 17px;
  background: rgba(240, 71, 28, 0.05);
  color: #f0471c;
  font-size: 10px;
}

.rgf-admin__button--remove[disabled] {
  visibility: hidden;
  pointer-events: none;
}

.rgf-admin__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.rgf-admin__button--add,
.rgf-admin__button--copy-state,
.rgf-admin__button--copy-reply {
  min-width: 121px;
}

.rgf-admin__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.05);
  color: rgba(0, 0, 0, 0.6);
  font-size: 10px;
  line-height: 1.2;
}

@keyframes rgf-tip-in {
  from {
    opacity: 0;
    transform: translateX(-50%) translateY(4px);
  }

  to {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .rgf-layout *,
  .rgf-layout *::before,
  .rgf-layout *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}

@media (max-width: 760px) {
  .rgf-layout__title {
    font-size: 38px;
  }

  .rgf-layout__title-box {
    min-height: 46px;
    width: 100%;
  }

  .rgf-layout__cards {
    width: min(26vw, 160px);
    max-width: 160px;
  }

  .rgf-layout__intro {
    width: 100%;
    grid-template-columns: 1fr;
    gap: 12px;
    min-height: 0;
    padding: 12px 8px;
  }

  .rgf-layout__rules {
    width: 100%;
    min-height: 0;
    padding-right: 0;
    padding-bottom: 12px;
    border-right: 0;
    border-bottom: 1px dashed var(--rgf-copy-rule);
  }

  .rgf-layout__effects {
    width: 100%;
  }

  .rgf-admin__grid {
    grid-template-columns: 1fr;
  }

  .rgf-admin__player-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .rgf-admin__player-grid > :nth-child(1),
  .rgf-admin__player-grid > :nth-child(2),
  .rgf-admin__player-grid > :nth-child(3),
  .rgf-admin__player-grid > :nth-child(4) {
    width: 100%;
  }
}

@media (max-width: 560px) {
  .rgf-layout {
    --rgf-gap: 6px;
  }

  .rgf-layout__title {
    font-size: 30px;
  }

  .rgf-layout__title-box {
    min-height: 38px;
    padding-right: 0;
  }

  .rgf-layout__cards {
    position: relative;
    top: auto;
    right: auto;
    justify-self: end;
    width: min(42vw, 150px);
    max-width: 150px;
    margin-top: -6px;
  }

  .rgf-layout__intro {
    padding: 10px 7px;
  }

  .rgf-layout__label {
    font-size: 18px;
  }

  .rgf-layout__label--small {
    font-size: 13px;
  }

  .rgf-layout__copy {
    font-size: 11px;
  }

  .rgf-layout__effects {
    font-size: 9px;
  }

  .rgf-board__num {
    font-size: clamp(16px, 5vw, 24px);
  }

  .rgf-token {
    width: 28px;
    height: 28px;
    font-size: 12px;
  }

  .rgf-admin__heading {
    font-size: 28px;
  }

  .rgf-admin__player-grid {
    grid-template-columns: 1fr;
  }
}


/*анимации*/

.rgf-layout__asset--chest {
  overflow: visible;
  isolation: isolate;
  transform-origin: 50% 72%;
  animation: rgf-chest-glow 2.6s ease-in-out infinite;
}

.rgf-layout__asset--chest::before,
.rgf-layout__asset--chest::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 48%;
  width: 9px;
  height: 9px;
  margin-left: -4.5px;
  border-radius: 50%;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(circle at 35% 35%, #fff6c8 0 28%, #ffd45c 29% 64%, #d88d00 65% 100%);
  box-shadow:
    0 0 0 1px rgba(255, 234, 156, 0.18),
    0 0 8px rgba(255, 202, 74, 0.35);
}

.rgf-layout__asset--chest::before {
  animation: rgf-chest-coins-a 2.6s ease-out infinite;
}

.rgf-layout__asset--chest::after {
  animation: rgf-chest-coins-b 2.6s ease-out infinite 0.28s;
}

@keyframes rgf-chest-glow {
  0%, 100% {
    transform: scale(1);
    filter:
      drop-shadow(0 0 0 rgba(255, 204, 82, 0))
      drop-shadow(0 0 0 rgba(255, 142, 35, 0));
  }

  32% {
    transform: scale(1.03);
    filter:
      drop-shadow(0 0 6px rgba(255, 208, 95, 0.35))
      drop-shadow(0 0 12px rgba(255, 153, 51, 0.18));
  }

  56% {
    transform: scale(1.07);
    filter:
      drop-shadow(0 0 10px rgba(255, 214, 102, 0.55))
      drop-shadow(0 0 18px rgba(255, 166, 56, 0.28));
  }

  78% {
    transform: scale(1.02);
    filter:
      drop-shadow(0 0 5px rgba(255, 208, 95, 0.3))
      drop-shadow(0 0 10px rgba(255, 153, 51, 0.16));
  }
}

@keyframes rgf-chest-coins-a {
  0%, 18% {
    opacity: 0;
    transform: translate(-50%, 0) scale(0.45);
  }

  26% {
    opacity: 1;
    transform: translate(-50%, -2px) scale(0.92);
  }

  58% {
    opacity: 1;
    transform: translate(calc(-50% - 10px), -17px) scale(1);
  }

  100% {
    opacity: 0;
    transform: translate(calc(-50% - 15px), -24px) scale(0.82);
  }
}

@keyframes rgf-chest-coins-b {
  0%, 20% {
    opacity: 0;
    transform: translate(-50%, 0) scale(0.45);
  }

  30% {
    opacity: 1;
    transform: translate(-50%, -3px) scale(0.95);
  }

  60% {
    opacity: 1;
    transform: translate(calc(-50% + 12px), -15px) scale(1.04);
  }

  100% {
    opacity: 0;
    transform: translate(calc(-50% + 18px), -23px) scale(0.8);
  }
}


.rgf-layout__card--a {
  transform-origin: 48% 88%;
  animation: rgf-card-fold-a 5.4s cubic-bezier(0.45, 0.05, 0.2, 1) infinite;
}

.rgf-layout__card--b {
  transform-origin: 52% 88%;
  animation: rgf-card-fold-b 5.4s cubic-bezier(0.45, 0.05, 0.2, 1) infinite;
}

.rgf-board__overlay--finish,
.rgf-board__overlay-part--finish-castle::before,
.rgf-board__overlay-part--finish-text::before {
  animation: none;
}


.rgf-board__overlay--monster-b {
  transform-origin: 50% 78%;
  animation: rgf-monster-float 4.8s ease-in-out infinite 0.3s;
}

@keyframes rgf-card-fold-a {
  0%, 100% {
    transform: rotate(24.33deg) translate3d(0, 0, 0) scale(1);
  }

  18% {
    transform: rotate(19.5deg) translate3d(-14px, 6px, 0) scale(0.95);
  }

  42% {
    transform: rotate(17deg) translate3d(-24px, 8px, 0) scale(0.94);
  }

  64% {
    transform: rotate(21deg) translate3d(-10px, 2px, 0) scale(0.97);
  }
}

@keyframes rgf-card-fold-b {
  0%, 100% {
    transform: rotate(-10.14deg) translate3d(0, 0, 0) scale(1);
  }

  18% {
    transform: rotate(-5.5deg) translate3d(14px, 6px, 0) scale(0.95);
  }

  42% {
    transform: rotate(-1.5deg) translate3d(24px, 8px, 0) scale(0.94);
  }

  64% {
    transform: rotate(-6.5deg) translate3d(10px, 2px, 0) scale(0.97);
  }
}

@keyframes rgf-monster-pounce {
  0%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
    filter: brightness(1);
  }

  14% {
    transform: translate3d(1px, 3px, 0) rotate(6deg) scale(0.94);
    filter: brightness(0.95);
  }

  28% {
    transform: translate3d(-2px, -11px, 0) rotate(-7deg) scale(1.12);
    filter: brightness(1.12);
  }

  46% {
    transform: translate3d(1px, 1px, 0) rotate(3deg) scale(0.98);
    filter: brightness(1);
  }

  70% {
    transform: translate3d(0, -4px, 0) rotate(-2deg) scale(1.04);
    filter: brightness(1.04);
  }
}

@keyframes rgf-monster-float {
  0%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
    filter: brightness(1);
  }

  22% {
    transform: translate3d(-2px, -3px, 0) rotate(-2.5deg) scale(1.015);
    filter: brightness(1.04);
  }

  50% {
    transform: translate3d(2px, -7px, 0) rotate(1.8deg) scale(1.03);
    filter: brightness(1.07);
  }

  76% {
    transform: translate3d(-1px, -4px, 0) rotate(-1.4deg) scale(1.01);
    filter: brightness(1.03);
  }
}

.rgf-board__overlay--monster-a {
  animation: rgf-monster-pounce-softer 2.55s cubic-bezier(0.34, 1.56, 0.64, 1) infinite;
}

@keyframes rgf-monster-pounce-softer {
  0%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
    filter: brightness(1);
  }

  14% {
    transform: translate3d(1px, 1px, 0) rotate(3deg) scale(0.97);
    filter: brightness(0.975);
  }

  28% {
    transform: translate3d(-1px, -5px, 0) rotate(-3.5deg) scale(1.06);
    filter: brightness(1.06);
  }

  46% {
    transform: translate3d(0, 1px, 0) rotate(1.5deg) scale(0.99);
    filter: brightness(1);
  }

  70% {
    transform: translate3d(0, -2px, 0) rotate(-1deg) scale(1.018);
    filter: brightness(1.02);
  }
}

0


Вы здесь » Test » pattern matching » игра


Рейтинг форумов | Создать форум бесплатно