Генератор бросков в нардах

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


В чем заключается новизна предлагаемого генератора?

У нового генератора две отличительные особенности:

1. Броски зар получаются из комбинации пары чисел от 1 до 6, полученных от обоих игроков, и обработанных по специальному алгоритму.

2. Игрок при желании может участвовать в генерации бросков зар.

Как получаются броски зар?

Для каждого игрока (либо автоматически, либо с участием самого игрока - об этом ниже) создается последовательность пар чисел. Числа внутри каждой пары  принимают значение от 1 до 6.
Эти пары чисел используются для получения бросков зар в текущей партии.

Принцип получения броска зар следующий:

Берется пара чисел первого игрока. Например, это 31.
Берется пара чисел второго игрока. Например, это 45.

Далее эти числа подвергаются обработке:
Для получения броска первой зары берется первое число первой пары и первое число второй пары. В нашем примере это 3 и 4.
Потом применяется специальная формула, в результате получается значение первой зары: 3+4=1, то есть бросок первой зары - 1.
Аналогичным образом обрабатываются вторые числа в парах ( 1 и 5 ) - и мы получаем значение второй зары: 1+5=6, то есть бросок второй зары - 6.
Итог: зары для хода игрока - 16.

Понять принцип получения бросков зар можно при помощи таблички, где на пересечении строки и столбца показано  число, которое получается в результате работы формулы:

   

 1     
  

 2     
  
 3     
  
 4     
  
 5     
   
 6     
  

1       

2

3

4

5

1 

2

3

4

5

6

1

2 

3

4

5

6

1

3

4

5

6

1

2

3

4 

5 

6

1

2

3

4

5 

6

1

2

3

4

5

6

Например, у одного игрока 46, у другого - 21. Смотрим пересечение: 4+1=5, пересечение 6+1=1. Результирующий бросок 51.
Еще пример: 23 и 56. Результирующий бросок: 2+3=5, 5+6=5, получаем зары для хода: 55.
 
 
Для любознательных: формула вычисления броска следующая:

z1=(a1+b1-1)mod6+1,
z2=(a2+b2-1)mod6+1
Бросок: z1z2.

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

Как получаются последовательности чисел, из которых потом формируются броски?

1. Игрок может выбирать, как получить последовательность чисел для формирования бросков при игре:

  • получение последовательности можно доверить серверу;
  • можно самому принять участие в создании этой последовательности;

2. Если игрок доверяет серверу - то последовательность чисел для него создается игровым сервером FPClub. В ходе игры числа этой последовательности используются для получения игровых бросков, как это описано выше.

3. Если игрок хочет принять участие в генерации бросков - ему предоставляется на выбор несколько вариантов:

3.1. Полученные автоматически последовательности пар чисел.  Применяются генераторы случайных чисел: "System" или "MD5".
Нажимая на вкладки с названием генератора, можно создавать новые и новые последовательности.

3.2. Последовательность можно загрузить из заранее подготовленного файла.  (Последовательности в файле можно получить ЛЮБЫМ способм, хотя бы и бросая вручную 256 раз зары).

3.3. Можно самостоятельно создать случайную последовательность, путем набора на клавиатуре любых знаков. После набора надо нажать на вкладку "Формат", чтобы преобразовать получившиеся символы в числа.

3.4. Если в получившейся последовательности игрока что-либо не устраивает, например, идущие подряд одинаковые пары, или дубли, или еще что-нибудь - их можно откорректировать вручную, задав любые произвольные пары чисел. После редактирования - не забыть на всякий случай нажать "Формат".

3.5. Если в последовательности все устраивает - нажать на вкладку "Начать игру". 

Определение права первого хода

Если игроки начали играть первую партию - право первого хода определяется случайным образом. В дальнейшем право первого хода имеет игрок, выигравший предыдущую партию. Такое правило применяется как для отдельных играемых подряд партий, так и внутри матчей.

Обсудить новый генератор на форуме