Files
portifolio-evandrodevbr/lib/jogo/rng.ts
T
evandro 67b32fcab3
CI / audit (push) Successful in 10m48s
CI / verify (push) Successful in 19m2s
CI / deploy (push) Successful in 2m14s
CI / e2e (push) Failing after 36m15s
feat(jogo): expediente dos mortos, jogo de zumbis em primeira pessoa
Etapa 1 inteira (logica com 100% de cobertura, cena 3D, toque, sons, bancada de desempenho, e2e) e a base da etapa 2 (mapa novo no Tiled, texturas, imagens dos itens, sons conferidos, golpe recortado e medido). Pagina /jogo fora do menu e do sitemap ate a medicao no celular.
2026-11-10 19:37:10 -03:00

22 lines
739 B
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/** Sorteio determinístico (mulberry32). Único ponto de aleatoriedade da lógica do jogo. */
/** Estado inicial uint32 a partir de uma semente; 0 vira 0x9e3779b9. */
export function semear(semente: number): number {
const estado = semente >>> 0;
return estado === 0 ? 0x9e3779b9 : estado;
}
/** Avança `p.rng` e devolve um número em [0, 1). */
export function sortear(p: { rng: number }): number {
p.rng = (p.rng + 0x6d2b79f5) >>> 0;
let t = p.rng;
t = Math.imul(t ^ (t >>> 15), t | 1);
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
}
/** Inteiro de 0 a n−1. */
export function sortearInteiro(p: { rng: number }, n: number): number {
return Math.floor(sortear(p) * n);
}