| 123456789101112131415161718192021 |
- const VM = require('./lib/vm')
- const fs = require('fs')
- const data = fs.readFileSync('./games/ZORK1.DAT')
- const saveFile = './zork1.sav'
- const main = async () => {
- let state
- if (fs.existsSync(saveFile)) {
- state = JSON.parse(fs.readFileSync(saveFile, 'utf8'))
- } else {
- state = await VM.play(data)
- }
- while (state) {
- fs.writeFileSync(saveFile, JSON.stringify(state), 'utf8')
- if (typeof state.output === 'string') process.stdout.write(state.output)
- const text = (await new Promise(resolve => process.stdin.once('data', resolve))).toString()
- state = await VM.play(data, state.save, text.toString().trim())
- }
- }
- main().catch(console.error)
|