Задание:
Сейчас, давай добавим возможность покупать новых производителей.
Если ты создал производителей с id состоящими из одной цифры, ты все сделал правильно. Если нет, ты еще можешь это исправить.
Нам нужно добавить новый функционал в функцию handleKeyPress.
Если пользователь нажимает на клавишу, которая соответствует id производителя, мы должны:
Вычесть необходимое количество золота из хранилища.
Увеличить стоимость следующего производителя умножив его текущую стоимость на growthRate.
Увеличить количество производителей нужного типа.
Детали:
- handleKeyPress не должен влиять на состояние, если пользователь нажал нерелевантную кнопку
Прошел
- Золото должно быть уменьшено на стоимость производителя после завершения покупки
Не прошел
- Цена следующего производителя должна равняться cost * growthRate после покупки
Не прошел
- Количество производителей соответствующего типа должно увеличиться после покупки
Не прошел.
Код:
import { updateGold } from './functions.js';
export const handleKeyPress = (term, state) => {
return function (name, matches, data) {
const key = String.fromCharCode(data.code);
if (key == 'G' || key == 'g') {
state.gold++;
updateGold(term, state);
};
for (let i = 0; i < state.producers.length; i++) {
if (key === '49' && `${state.producers[i].id}` == 1) {
state.gold = state.gold - state.producers[i].cost;
state.producers[i].cost = state.producers[i].cost * state.producers[i].growthRate;
state.producers[i].count++;
updateGold(term, state);
}
else if (key === '50' && `${state.producers[i].id}` == 2) {
state.gold = state.gold - state.producers[i].cost;
state.producers[i].cost = state.producers[i].cost * state.producers[i].growthRate;
state.producers[i].count++;
updateGold(term, state);
}
else if (key === '51' && `${state.producers[i].id}` == 3) {
state.gold = state.gold - state.producers[i].cost;
state.producers[i].cost = state.producers[i].cost * state.producers[i].growthRate;
state.producers[i].count++;
updateGold(term, state);
};
};
};
};
Подскажите пожалуйста в чем может заключатся проблема?
Разобрался, не правильно понял вывод результата переменной 'key'.
Вот так правильно:
for (let i = 0; i < state.producers.length; i++) {
if (key === `${state.producers[i].id}`) {
state.gold = state.gold - state.producers[i].cost;
state.producers[i].cost = state.producers[i].cost * state.producers[i].growthRate;
state.producers[i].count++;
updateGold(term, state);
}