Все работает, в чем ошибка?
- checkInitCompleted должен вызываться из handleKeyPress, если у пользователя достаточно золота для первой покупки.
- Аргументы handleKeyPress должны быть переданы в checkInitCompleted
- checkInitCompleted должен вызываться из handleKeyPress только один раз за время существования игры.
- checkInitCompleted нужно использовать term.moveTo три раза, чтобы перейти в нужное место на экране
- checkInitCompleted должна вывести сообщение 'You can purchase producers by clicking the number button (1, 2, 3, ...)'
- checkInitCompleted должна вывести сообщение 'PRODUCTION RATE:'
- checkInitCompleted должно вывести сообщение 'GOLD:'
functions.js
export const init = (term) => {
term.clear();
term ('Welcome to the mining game!');
term.hideCursor();
term.grabInput();
}
export const updateGold = (term, state) => {
term.moveTo(25, 2);
term.eraseLineAfter();
state.gold += state.productionRate;
term.bold.yellow(state.gold + ' ');
}
export const checkInitCompleted = (term, state) => {
term.moveTo(1, 1);
term.eraseLineAfter();
term.white('You can purchase producers by clicking the number button (1,2,3, ...)');
term.moveTo(1, 2);
term.yellow('GOLD:');
term.moveTo(1, 3);
term.yellow('PRODUCTION RATE:');
state.isInitCopleted = true;
}
handlers.js
import { checkInitCompleted, updateGold } from "./functions.js";
export const handleKeyPress = (term, state) =>{
return (name, matches, data) => {
if (String.fromCharCode(data.code)==='g'||String.fromCharCode(data.code)==='G') {
state.gold++;
}
let minimalProducerCost = state.producers[0].cost;
for (const i in state.producers) {
if (minimalProducerCost>state.producers.cost) {
minimalProducerCost = state.producers.cost;
}
}
if ((state.gold>=minimalProducerCost)&&(state.isInitCompleted===false)) {
checkInitCompleted(term, state);
}
for (const i in state.producers) {
if ((String.fromCharCode(data.code)===String(state.producers.id)) && (state.gold>=state.producers.cost)) {
state.gold -= state.producers.cost;
state.producers.cost *= state.producers.growthRate;
state.producers.count++;
state.productionRate += state.producers.baseProduction;
break;
}
}
}
}
export const handleStateChange = (term, state) => {
return () => {
updateGold(term, state);
}
}