constants.js
import terminalKit from 'terminal-kit';
export const term = terminalKit.terminal;
export const state = {
gold: 0,
producers:
[{ id: 1, title: 'Miner', cost: 10, growthRate: 1.13, baseProduction: 0.1, count: 0 },
{ id: 2, title: 'Adventurer', cost: 100, growthRate: 1.17, baseProduction: 1, count: 0 },
{ id: 3, title: 'Professional', cost: 1200, growthRate: 1.14, baseProduction: 9, count: 0 }],
}
export const data = {
code: String.fromCharCode(71, 103, 49, 50, 51)
}
export const config = {
gold: 0,
productionRate: 0,
isInitCompleted: false,
isProducerListUpdated: true,
}
export const messages = {
message: 'You can purchase producers by clicking the number button (1, 2, 3, ...)',
gold: 'GOLD:',
prodRate: 'PRODUCTION RATE:',
}
functions.js
import {messages} from './constants.js';
import {state} from './constants.js';
import {config} from './constants.js';
export const init = (term) => {
term('Welcome to the mining game!')
term.clear()
term.hideCursor()
term.grabInput()
}
export const updateGold = (term, state) => {
term.moveTo(25, 2)
term.bold.yellow(`Now your gold count is ${state.gold} `)
term.eraseLineAfter()
state.gold += state.productionRate;
}
export const checkInitCompleted = (term, state) => {
term.moveTo(0,0)
term.moveTo(0,0)
term.moveTo(0,0)
term.eraseLineAfter()
term('You can purchase producers by clicking the number button (1, 2, 3, ...)')
term('PRODUCTION RATE:')
term('GOLD:')
handlers.js
import { updateGold} from "./functions.js"
import {state} from "./constants.js"
import {checkInitCompleted} 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 = state.gold + 1
}
for (var i = 0; i < state.producers.length; i++) {
if (String.fromCharCode(data.code)===`${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 = state.producers[i].count + 1
state.productionRate+= state.producers[i].baseProduction;
}
}
if(state.gold > 10) {
checkInitCompleted(term, state)
}
}
}
export const handleStateChange = (term, state) => () => {
updateGold(term, state)
}
Ошибки
checkInitCompleted должен вызываться из handleKeyPress, если у пользователя достаточно золота для первой покупки.
Аргументы handleKeyPress должны быть переданы в checkInitCompleted
checkInitCompleted должен вызываться из handleKeyPress только один раз за время существования игры.
checkInitCompleted нужно использовать term.moveTo три раза, чтобы перейти в нужное место на экране
checkInitCompleted не должна вызываться из handleKeyPress, если у пользователя недостаточно золота для первой покупки
Сделал что пришло в голову, дальше не понимаю, что от меня требуется дальше, как исправить оставшиеся ошибки?