Как сделать шанс выпадения предмета при нажатии на кнопку

Я делаю игру типа кликера, и в одном разделе есть что-то вроде мины. Я хочу, чтобы шахта, когда ваш Mininglv < 10, имела 50% шанс, когда вы щелкнете по ней сверху, выпадет 1 бронза. Я новичок в HTML и не знаю как math.random works. Я хочу, возможно, позже добавить способ повысить шанс, поэтому, возможно, мне следует определить первый шанс выпадения как BronzeDropChance.

Я пробовал это:

var Minechance = Math.random();  

function Miningaction(){
    if (MiningCexp < NextMaxMiningExp && Mininglv < 10){
        MiningCexp = MiningCexp + 1;
        if (Minechance < 0.5)
            Bronze = Bronze + 1
        document.getElementById("Bronze").innerHTML = Bronze;
        document.getElementById("MiningCexp").innerHTML = MiningCexp;
        }else{

Это остальная часть моего кода для майнинга:

var Bronze = 0;
var Silver = 0;
var Gold = 0;
var Diamond = 0;

var Mining = 1;
var Mininglv = 1;
var MiningCexp = 0;
var MiningMexp = 100;
var NextMaxMiningExp =  MiningMexp;
var Minechance = Math.random();

function Miningaction(){
    if (MiningCexp < NextMaxMiningExp && Mininglv < 10){
        MiningCexp = MiningCexp + 1;
        if (Minechance < 0.5)
            Bronze = Bronze + 1
        document.getElementById("Bronze").innerHTML = Bronze;
        document.getElementById("MiningCexp").innerHTML = MiningCexp;
        }else{
        Mininglv = Mininglv + 1
        MiningCexp = 0
        Mining = Mining + 1
        NextMaxMiningExp = NextMaxMiningExp * 1.5;
        document.getElementById('MiningMexp').innerHTML = 
NextMaxMiningExp;
        document.getElementById('Mininglv').innerHTML = Mininglv;
        document.getElementById('MiningCexp').innerHTML = MiningCexp;
        document.getElementById('Mining').innerHTML = Mining;
    }
}

HTML-разметка для справки о том, как я ее отформатировал: (у меня нет кнопки для каждого навыка, но я использую одну кнопку, чтобы проверить, работают ли навыки)

Mining: Lv <span id = "Mininglv">1</span> <span id = "MiningCexp">0</span> / 
<span id = "MiningMexp">100</span>
                    <br />
                    Fishing: Lv <span id = "Fishinglv">1</span> <span 
id = "FishingCexp">0</span> / <span id = "FishingMexp">100</span>
                    <br />
                    <button onclick = "Miningaction()">Click Me!</button>
                    <br />
                </div>

Я ожидаю, что после нажатия кнопки опыт всегда будет увеличиваться на 1, а также при майнинге уровня ниже 10 будет 50% шанс выпадения бронзы, поэтому она будет добавлена ​​в инвентарь:

Как сделать шанс выпадения предмета при нажатии на кнопку

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

Попробуйте сделать if (Math.random() < 0.5) или сбросить MineChance в своих утверждениях, иначе оно останется тем же постоянным значением, которым оно инициализировано при запуске.

Snel23 28.05.2019 08:54

это сработало спасибо. если вы опубликуете это как ответ, я могу сказать, что ответил

tmanrocks994 28.05.2019 09:14

Так что я могу установить MineBronzeChance на 0,5 в начале, а позже я могу обновить его. то же самое, если я добавлю больше материалов

tmanrocks994 28.05.2019 09:15

Да, и это облегчит дальнейшую работу, если вы перейдете к просмотру своего кода и не будете уверены, какими должны быть ваши константы.

Snel23 28.05.2019 09:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
86
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

MineChance изначально установлено на Math.Random(), что даст вам значение от 0 до 1, но это значение останется на протяжении всей программы. Если вы измените оператор if на if (Math.random() < 0.5) или сбросите MineChance на новый Math.random() в своих операторах (если вы хотите использовать его как переменную), в противном случае он останется тем же постоянным значением, которым он инициализируется при запуске.

Другие вопросы по теме