Javascript - Оповещение пользователя, когда он пытается вычесть, когда больше нечего вычитать - PullRequest
0 голосов
/ 07 октября 2018

У меня есть страница с двумя кнопками: одна добавляет 1 единицу чего-либо в инвентарь пользователя.Другой удаляет 1 единицу этого чего-то из инвентаря пользователя.Например, что-то будет алмазами.

Каждый раз, когда пользователь поднимает или бросает алмазы, в сообщении будет указано, сколько у него алмазов.

Я не хочуэти сообщения должны быть слишком общими: «У вас есть 1 бриллиант».

Мне удалось сгенерировать различные сообщения в зависимости от количества бриллиантов, которые есть у пользователя и если он их подбирает или отбрасывает:

Я также хотел бы иметь пользовательские сообщения о том, когда пользователь пытается забрать алмаз, когда его кошелек уже заполнен, и когда он пытается сбросить один, когда у него нет бриллиантов, которые можно уронить.Например:

«Вы не можете выбрать больше бриллиантов. Ваш кошелек уже заполнен».и «У вас нет бриллиантов, которые можно уронить».

И вот с чем мне нужна помощь.

Как вы увидите из приведенного ниже кода, у меня есть diamondCount == 0 в функциикоторый бросает алмазы, чтобы генерировать сообщение «Вы бросили свой последний Алмаз».Если пользователь попытается сбросить еще один бриллиант с этой точки, diamondCount все равно будет 0. Итак, как я могу сделать его дифференцированным, когда пользователь только что достиг 0 и когда он пытался сбросить бриллиант, начиная с 0?

Вот что у меня есть:

        function pickDiamond() {
            if (typeof(Storage) !== "undefined") {
                if (localStorage.diamondCount < 10) {
                    localStorage.diamondCount = Number(localStorage.diamondCount) + 1;
                } else {
                    localStorage.diamondCount = 10;
                }
                if (localStorage.diamondCount == 1) {
                    document.getElementById("result").innerHTML = "You picked up your first Diamond!";
                } else {
                    document.getElementById("result").innerHTML = "You picked up a Diamond. You now have a total of " + localStorage.diamondCount + " Diamonds in your wallet.";
                }
            }
        }

        function dropDiamond() {
            if (typeof(Storage) !== "undefined") {
                if (localStorage.diamondCount > 0) {
                    localStorage.diamondCount = Number(localStorage.diamondCount) - 1;
                } else {
                    localStorage.diamondCount = 0;
                }
                if (localStorage.diamondCount == 1) {
                    document.getElementById("result").innerHTML = "You dropped 1 Diamond. You only have 1 Diamond left in your wallet.";
                } else if (localStorage.diamondCount == 0) {
                    document.getElementById("result").innerHTML = "You dropped your last Diamond. You don't have any Diamonds now.";
                } else {
                    document.getElementById("result").innerHTML = "You dropped a Diamond. You now have a total of " + localStorage.diamondCount + " Diamonds in your wallet.";
                }
            }
        }

        function dropAllDiamonds() {
            localStorage.diamondCount = 0;
            document.getElementById("result").innerHTML = "You dropped all your Diamonds.";
        }
    <p>Use the buttons to pick up or drop Diamonds</p>
    <p><button onclick="pickDiamond()" type="button">Pick up Diamonds</button></p>
    <p><button onclick="dropDiamond()" type="button">Drop Diamonds</button></p>
    <p><button onclick="dropAllDiamonds()" type="button">Drop All Diamonds</button></p>
    <p id="result"></p>

1 Ответ

0 голосов
/ 07 октября 2018

Похоже, ваша проблема - логика if / else.В частности, вы должны иметь возможность делать все, что хотите, с помощью одной цепочки if / else.Я сделал несколько изменений в вашем коде следующим образом:

Для pickDiamond я начал с вашего счетчика бриллиантов, равного нулю, и добавил новый текст в последовательность логики по мере увеличения запасов пользователя.Имея дело только с числами, здесь уместен инкрементный оператор.Как только инвентарь пользователя достигнет десяти, логика по умолчанию будет звучать так: «Вы больше не можете выбрать алмазы. Ваш кошелек уже заполнен».с последним утверждением еще.Я создал объект localStorage для тестирования.

    let localStorage = {
        diamondCount: 0
    }
    function pickDiamond() {
        if (typeof(Storage) !== "undefined") {
            if (localStorage.diamondCount == 0) {
                localStorage.diamondCount++;
                document.getElementById("result").innerHTML = "You picked up your first Diamond!";
            } else if (localStorage.diamondCount < 10) {
                localStorage.diamondCount++;
                document.getElementById("result").innerHTML = "You picked up a Diamond. You now have a total of " + localStorage.diamondCount + " Diamonds in your wallet.";
            } else {
                document.getElementById("result").innerHTML = "You cannot pick any more diamonds. Your wallet is already full.";
            }

            }
        }

Аналогичное решение можно использовать для функции dropDiamond, кроме как в обратном порядке.Функция dropAllDiamonds будет работать без изменений.

        function dropDiamond() {
        if (typeof(Storage) !== "undefined") {
            if (localStorage.diamondCount > 2) {
                localStorage.diamondCount--;
                document.getElementById("result").innerHTML = "You dropped a Diamond. You now have a total of " + localStorage.diamondCount + " Diamonds in your wallet.";                 
            } else  if (localStorage.diamondCount == 2) {
                localStorage.diamondCount--;
                document.getElementById("result").innerHTML = "You dropped 1 Diamond. You only have 1 Diamond left in your wallet.";                    
            } else if (localStorage.diamondCount == 1) {
                localStorage.diamondCount--;
                document.getElementById("result").innerHTML = "You dropped your last Diamond. You don't have any Diamonds now.";
            } else {
                document.getElementById("result").innerHTML = "You don't have any Diamonds to drop ya dingus";
            }
        }
    }
        function dropAllDiamonds() {
             localStorage.diamondCount = 0;
             document.getElementById("result").innerHTML = "You dropped all your Diamonds.";
    }
...