javascript - 在node.js中运行文件并使用 "inquirer"后保存变量的值

标签 javascript node.js

我有一个迷你游戏程序,要求用户输入一个数字,如果该数字与随机选择的数字匹配,我会为对手变量减去另一个随机数。否则,对手会伤害我。我让程序使用减法,但问题是,每次我在 node.js 中运行我的文件(即 node fileName.js 4)时,程序中的所有变量都会重置。当从“生命值”中减去“伤害”时,生命值应该被保存,但它会不断重置。 mainCharacterzombie.hp 不应重置。

var StrawberryCough = require("inquirer");

var mainCharacter = 70;
var zombie = {
    hp: 15,
    num: 0
}

StrawberryCough.prompt([

        {
            type: "input",
            message: "Random Number 1-5: ",
            name: "number"
        }

    ]).then(function(user){

        parseInt(user.number);
        var ranNum = Math.round(Math.random() * (5 - 1) + 1);
        zombie.num = ranNum;

        if(user.number === zombie.num)
        {
            var damage = Math.round(Math.random() * (5 - 1) + 1);
            console.log("Character Damage: ", damage);
            zombie.hp -= damage;
            console.log("zombie hp", zombie.hp);
            if(zombie.hp <= 0)
            {
                console.log("You win!")
                return;
            }
        }
        else if(user.number !== zombie.num)
        {
            var zomDamage = Math.round(Math.random() * (5 - 1) + 1);
            console.log("Zombie Damage: ", zomDamage);
            mainCharacter -= zomDamage;
            console.log("main hp", mainCharacter);
            if(mainCharacter <= 0)
            {
                console.log("You lose!");
                return;
            }
        }
    });

最佳答案

如果您希望数据持久存在,您应该查看键值存储、数据库,将其保存到文件中......否则每次运行文件时:

var mainCharacter = 70;
var zombie = {
    hp: 15,
    num: 0
}

在执行这些行时加载文件时将设置值,但这不会永久存储这些值,并且它们将在脚本结束后不再存在。

看起来您正在寻找快速且杂乱的解决方案,因此我建议使用文件系统并将其保存为:gameMemory.json

gameMemory.json 的内容:

{
    "mainCharacter" : 70,
    "zombie" : {
        "hp": 15,
        "num": 0
    }
}

从 gameMemory.js 加载值:

fs = require('fs');
//loads the gameMemory into a json object
var gameMemory =JSON.parse(fs.readFileSync('./gameMemory.json', 'utf8'));

然后,当您完成变量操作并希望它们持续存在时:

fs.writeFileSync('./gameMemory.json', JSON.stringify(gameMemory, null, 2) , 'utf-8');

关于javascript - 在node.js中运行文件并使用 "inquirer"后保存变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40955036/

相关文章:

javascript - NodeJS - 服务资源错误

javascript - Node JS,如何从P12文件中提取X.509证书?

javascript - 基于字段值的 Angular 过滤

node.js - windows下用nodejs抓包

mysql - MySQL 中的 ER_NO_DEFAULT_FOR_FIELD(nodejs 休息请求)

events - 我如何从 Node.js 中的嵌套函数内部发送到 eventListener(javascript 范围问题)

javascript - 如何主动寻找并接收浏览器窗口的宽度?

javascript - 使用 javascript 在 Photoshop 中查找特定图层的图层组

javascript - 外部人员的谷歌关闭错误

mysql - 如何在 feathersjs 的 yeoman 生成的配置中设置 mysql 密码