простая игра Javascript, функция повтора.(вопрос новичка) - PullRequest
0 голосов
/ 26 сентября 2018

Я новичок в кодировании и переполнении стека, так что будьте осторожны со мной.Я был бы очень признателен за помощь в попытке интерпретировать мои цели в функциональный скрипт для игры на веб-сайте html5.Сценарий функционирует для предоставления результата гонки, имитирующего скачки, который затем может быть использован в RPG позже.

Выберите свой выбор, совершите гонку, и победитель будет выбран с шансами на выигрыш.

Я хотел бы изменить сценарий, чтобы обеспечить полный набор мест с 1 по 8.Я рассчитал два способа добиться этого.Снова бросьте кубик, исключая победителя, до 8-го числа или получите результат гонки от +1 до 10 баллов.Таким образом, я могу симулировать выигрыш по длине х.

var gen_number = getRoll(serverSeed, clientSeed, $nonceValue);

var winnerNumber = 0;
if(gen_number < 836)
  winnerNumber = 1;
else if(gen_number < 2172)
  winnerNumber = 2;
else if(gen_number < 2840)
  winnerNumber = 3;
else if(gen_number < 4109)
  winnerNumber = 4;
else if(gen_number < 5766)
  winnerNumber = 5;
else if(gen_number < 7837)
  winnerNumber = 6;
else if(gen_number < 8589)
  winnerNumber = 7;
else
  winnerNumber = 8;

var status = '';
if($selectedRange.includes('' + winnerNumber)) {
  document.getElementById('winner_lose').innerHTML = winnerNumber + " Wins";
  status = 'Win';

Вопросы - Как мне написать скрипт автоматического перебора для 2-го, 3-го места.Нажмите кнопку гонки один раз, чтобы получить победителя, снова бросить, не считая победителя, снова бросить, не считая победителя, и второй.Вывод результатов?

или

Как сделать условия выигрыша сначала с 10 очками 1 очко за бросок?

Любая помощь будет полезна для изучения!

Заранее спасибо.

1 Ответ

0 голосов
/ 26 сентября 2018

Вот рабочий пример, основанный на вашем коде, который демонстрирует простой способ начисления одного очка за бросок с первым до 10 объявленным победителем:

const serverSeed = 0, clientSeed = 0, $nonceValue = 0;  // stubbed values
const getRoll = () => Math.random() * 10000;  // stubbed function

const getPointWinner = () => {
  const gen_number = getRoll(serverSeed, clientSeed, $nonceValue);

  if (gen_number < 836)
    return 0;
  if (gen_number < 2172)
    return 1;
  if (gen_number < 2840)
    return 2;
  if (gen_number < 4109)
    return 3;
  if (gen_number < 5766)
    return 4;
  if (gen_number < 7837)
    return 5;
  if (gen_number < 8589)
    return 6;
  return 7;
}

let raceWon = false;
const pointsWon = [0, 0, 0, 0, 0, 0, 0, 0];
while (!raceWon) {
  const pointWinner = getPointWinner();  // get the winner for this point
  pointsWon[pointWinner]++;  // award the point
  raceWon = pointsWon[pointWinner] >= 10;  // race won if point winner has 10 points
}

// pointsWon can be used to print out the winner, final order, won by x lengths, etc.
console.log(pointsWon);  // prints the array containing the points won

const winner = pointsWon.indexOf(10) + 1;  // + 1 since pointsWon uses a zero-based index
console.log('winner:', winner);  // prints the first to 10 points
...