Eventos do Jogo
Eventos de jogo são a tradução de números aleatórios gerados em um resultado relacionável que é específico do jogo. Isso inclui qualquer coisa, desde o resultado de um lançamento de dados até a ordem das cartas em um baralho ou até a localização de todas as bombas em um jogo de minas.
Em nossa versão de dados, cobrimos um intervalo de rolagem possível de 00,00 a 100,00, que tem um intervalo de 10.001 resultados possíveis. A tradução do evento do jogo é feita multiplicando o float pelo número de resultados possíveis e, em seguida, dividindo por 100 para que o resultado se ajuste às restrições do nosso dado declarado.
// Game event translation
const roll = (float * 10001) / 100;
Quando se trata de Limbo, usamos um processo de duas etapas. Primeiro, multiplicamos o float pelo multiplicador máximo possível e pela vantagem da casa. Em seguida, para gerar um evento de jogo que tenha distribuição de probabilidade, dividimos o multiplicador máximo possível pelo resultado da primeira etapa para criar o evento do jogo na forma de um ponto de crash.
// Game event translation with houseEdge of 0.99 (1%)
const floatPoint = 1e8 / (float * 1e8) * houseEdge;
// Crash point rounded down to required denominator
const crashPoint = Math.floor(floatPoint * 100) / 100;
// Consolidate all crash points below 1
const result = Math.max(crashPoint, 1);
Para qualquer jogo de Plinko, o resultado gerado é baseado no caminho da bola em queda. O evento do jogo determina a direção da bola em queda para cada nível no processo de queda. Os jogadores podem escolher entre 8 e 16 pinos de jogo, o que determina o número de eventos de jogo necessários para gerar um caminho completo de cima para baixo. Como há apenas duas direções possíveis (esquerda ou direita), a tradução é feita multiplicando cada float por 2, que mapeia para o seguinte índice:
// Index of 0 to 1 : left to right
const DIRECTIONS = [ left, right ];
// Game event translation
const direction = DIRECTIONS[Math.floor(float * 2)];
Nossa Roleta é derivada da versão europeia do jogo, onde a roda consiste em 37 bolsos possíveis diferentes, variando de 0 a 36. O evento do jogo é calculado multiplicando o float por 37 e, em seguida, traduzido em um bolso correspondente usando o seguinte índice:
// Index of 0 to 36
const POCKETS = [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36
];
// Game event translation
const pocket = POCKETS[Math.floor(float * 37)];
Os jogos de Keno tradicionais exigem a seleção de 10 eventos de jogo possíveis na forma de acertos em um quadro. Para conseguir isso, multiplicamos cada float pelo número de quadrados exclusivos possíveis. Uma vez que um acerto é colocado, ele não pode ser escolhido novamente, o que altera o tamanho do pool de resultados possíveis. Isso é feito subtraindo o tamanho dos resultados possíveis máximos por 1 para cada iteração do resultado do evento do jogo gerado usando o float correspondente, usando o seguinte índice:
// Index of 0 to 39 : 1 to 40
const SQUARES = [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40
];
// The fisher-yates shuffle implementation is utilised to prevent duplicate possible hits being generated.
const hit = SQUARES[Math.floor(float * 40)];
Um jogo de minas é gerado com 24 eventos de jogo separados, na forma de minas no tabuleiro. Cada número flutuante é multiplicado pelo número de azulejos únicos ainda restantes no tabuleiro. Isso é feito subtraindo 1 do número de azulejos restantes a cada iteração do resultado do evento de jogo gerado, usando o número flutuante correspondente. A localização da mina é plotada usando uma posição de grade da esquerda para a direita, de cima para baixo. A implementação do embaralhamento Fisher-Yates é utilizada para evitar que sejam gerados acertos duplicados. Entre 1 e 24 resultados de eventos de jogo são usados, com base nas configurações escolhidas.

