Compara os gestos escolhidos e mostra o resultado desta rodada.
O que aconteceu?
Os gestos estão escolhidos. Clique em “Jogar rodada” para avaliá-los.
Ver explicação técnica e código desta passagem
player e opponent guardam as entradas. O resultado começa em null até a avaliação.
/** Função pura suficiente para três jogadas fixas. Não modifica suas entradas. */
export function playClassic(player: string, opponent: string): RoundOutcome | 'invalid' {
if (!isMove(player, CLASSIC_MOVES) || !isMove(opponent, CLASSIC_MOVES)) {
return 'invalid';
}
if (player === opponent) {
return 'tie';
}
// && exige as duas condições; || aceita qualquer uma das três vitórias possíveis.
const wins =
(player === 'rock' && opponent === 'scissors') ||
(player === 'paper' && opponent === 'rock') ||
(player === 'scissors' && opponent === 'paper');
// ?: escolhe um retorno. Uma vez removidos empates, não vencer significa perder.
return wins ? 'win' : 'lose';
}Inspecionar os registros antes e depois
Estes registros mostram a simulação em cada momento. Rever uma passagem muda o estado observado; agir a partir dela substitui o caminho que vinha depois.
Estado anterior
{
"player": "rock",
"opponent": "scissors",
"variant": "conditions",
"result": null,
"inspectedRule": null,
"inspectedRules": []
}Estado observado
{
"player": "rock",
"opponent": "scissors",
"variant": "conditions",
"result": null,
"inspectedRule": null,
"inspectedRules": []
}
