шёл 4й день ожиданий. Пожалуйста скажи куда писать, чтоб получать помощь оперативнее?
Лучше новый топик создавать если несколько дней не замечают? 250 задание - "экзамен". Не возможно идти дальше. А деньги оплачиваются. Помоги пожалуйста!
gameEngine.js
import {handleKeyPress, handleStateChange} from './handlers.js' // сам добавил
export const startMiningGame = (term, state) => {
init(term);
setInterval(handleStateChange(term, state), 1000);
term.on('key', handleKeyPress(term, state) );
}
functions.js
export const init = (term) => {
term.clear();
term.hideCursor();
term.grabInput();
term('Welcome to the mining game!');
}
export const updateGold = (term, state) => {
term.moveTo(30, 3);
term.eraseLineAfter();
state.gold+=state.productionRate;
term.moveTo(30, 3);
term.bold.yellow(state.gold);
}
export const checkInitCompleted = (term,state) =>{
term.moveTo(25, 2);
term.bold.green("You can purchase producers by clicking the number button (1, 2, 3, ...)");
term.moveTo(25, 3);
term.bold.yellow(`GOLD:${state.gold}`);
term.moveTo(25, 4);
term.bold.green(`PRODUCTION RATE:${state.productionRate}`);
}
handlers.js
import { term } from "./constants.js";
import {updateGold, checkInitCompleted} from "./functions.js"
export const handleStateChange = (term, state) =>{
updateGold(term,state);
return (name, matches, data)=> {
};
}
export const handleKeyPress = (term, state) => {
return (name, matches, data)=> {
if(state.isInitCompleted==false){
let minCost=state.producers[0].cost;
for(let i=1;i<state.producers.length;i++){
if(state.producers[i].cost<minCost){
minCost=state.producers[i].cost;
}
}
if(state.gold>=minCost){
state.isInitCompleted=true;
checkInitCompleted(term,state);
}
}
let curChar=String.fromCharCode(data.code);
if(curChar=="G" || curChar=="g"){
state.gold++;
updateGold(term,state);
}
//press digit
else if(Number(curChar)>=0 && Number(curChar)<=9){
for (let i = 0; i < state.producers.length; i++) {
if ((Number(curChar) == state.producers[i].id)) {
if(state.producers[i].cost<=state.gold){
state.gold -= state.producers[i].cost;
state.producers[i].cost *= state.producers[i].growthRate;
state.producers[i].count++;
state.productionRate+=state.producers[i].baseProduction;
}else{
term.bold.red("Not enough golD");
}
break;
}
}
}else if(curChar=='/'){
process.exit(0);
}else{console.log("Unnkown Char. Press other key");}
};
}
ОШИБКИ
- 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:'
И ещё, к этому не работает setInterval в gameEngine.js. Подскажи в чём проблема.
Помоги пройти дальше. Не принимается моё выполнение задания