CWarBot

Материал из wiki-MyMakerBot

Содержание

/start

<b>«Филлер» — игра для двух игроков</b>

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

<b>Бот начинает играть ↖️ в левом верхнем углу, 
вы начинаете ↘️ в правом нижнем!</b>

На каждом ходу игрок изменяет цвет стартовой клетки на любой другой — при этом все клетки, примыкающие к стартовой по стороне и окрашенные в тот же цвет, 
также перекрашиваются в выбранный цвет. Таким образом игрок «захватывает» соседние клетки, перекрашивая свою область в цвет этих клеток. 

Игрок не может выбрать цвет, которым на этом ходу окрашена область противника.

Цель игры состоит в захвате более половины клеток игрового поля.


<b>Игра создана на конструкторе</b> @MyMakerBot

{key l=2 t='Начать играть' c='/begin'}

/begin

{filler oper='make_game' width=8 height=8}
{$data = [
  'field' => $field,
  'width' => $width,
  'height' => $height,
  'l1' => $l1,
  'l2' => $l2
]}
{interface name='filler' value=$data}
{import c='/show'}

/step

{interface name='filler'}
{$field = $filler.field}
{$width = $filler.width}
{$height = $filler.height}
{$l1 = $filler.l1}
{$l2 = $filler.l2}

{filler oper='change_color' field=$field width=$width height=$height target=$argv[1]}
{$data = [
  'field' => $field,
  'width' => $width,
  'height' => $height,
  'l1' => $l1,
  'l2' => $l2
]}
{interface name='filler' value=$data}
{import c='/show'}

/show

{interface name='filler'}
{$field = $filler.field}
{$width = $filler.width}
{$height = $filler.height}
{$l1 = $filler.l1}
{$l2 = $filler.l2}

Создано на @MyMakerBot

{$m = ['', '🈹', '🈺', '🈳', '🚺', '💹', '🈁']}

{for $y=0 to $height-1}
  {for $x=0 to $width-1}
    {key l=10+$y t=$m[$field[$y][$x]] c="/s"}
  {/for}
{/for}

{if ($l1+$l2) < ($width*$height)}
  {key l=99 t="бот: {$l1} --- {$l2} :{$user.first_name}" c='/show'}
  {for $i=1 to count($m)-1}
      {if $i == $field[0][0] || $i == $field[$height-1][$width-1]}
        {key l=100 t="⚪️" c="/show"}
      {else}
        {key l=100 t=$m[$i] c="/step {$i}"}
      {/if}
  {/for}
{else}
  {db_form name='rating' idx=$user_id}
  {if empty($rating)}
    {db_save name='rating' idx=$user_id data=['win'=>0, 'games'=>0, 'rate'=>0, 'iam'=>0, 'bot'=>0]}
    {db_form name='rating' idx=$user_id}
  {/if}

  {if $l1 == $l2} 
    {return dialog='Ничья'}
  {elseif ($l1>$l2)}
     {return dialog="📺 Бот выиграл со счетом 

{$l1} : {$l2}"}
  {else}
  {$rating.win=$rating.win+1}
    {return dialog="🎉 Поздравляем! 🎉

{$user.first_name} выиграл со счетом 

{$l2} : {$l1}"}
  {/if}
  {$rating.games=$rating.games+1}
  {$rating.bot=$rating.bot+$l1}
  {$rating.iam=$rating.iam+$l2}
  {$rating.rate=round($rating.iam/$rating.bot,3)}
  {db_save name='rating' idx=$user_id data=$rating}

  {key l=1000 t='💠 Заново' c="/start"}
  {key l=1000 t='📊 Рейтинг' c="/rating"}
{/if}

/rating
{db_form name='rating' order=['rate'=>'desc'] limit=900}
💠 <b>FILLER</b> 💠

<i>N. Rate (Win / Games)</i>
_____________________
{$n=0}{$place=0}{$all=0}
{foreach from=$rating key=k item=v}{$all=$all+$v.games}
{if ($v.games>=10)}
{$n=$n+1}{if $v.user_create.user_id==$user_id}{$place=$n}{/if}
{if $n<=20}
{$n}.  <b>{$v.rate}</b> <i>({$v.win} / {$v.games})</i>  -  <code>{mb_substr(str_replace('@', '',$v.user_create.first_name), 0, 25, 'utf-8')} {mb_substr($v.user_create.last_name, 0, 25, 'utf-8')}</code>
{/if}{/if}
{/foreach}
{$rating_cnt=count($rating)}
{db_form name='rating' idx=$user_id}
{if $rating.games>=10}
{if $place>0}Ваше место: <b>{$place}</b> из <b>{$rating_cnt}</b>{/if}
{else}
Для попадания в рейтинг вы должны сыграть не менее <b>10-ти</b> игр
{/if}


Всего сыграно <b>{$all}</b> игр!
{interface name='filler'}
{if !empty($filler)}
{key l=2 t='💠 Продолжить играть' c='/show'}
{else}
{key l=2 t='💠 Начать играть' c='/begin 8 8'}
{/if}