Javascript 在node.js中运行文件并使用“保存变量值”;询问者“;
我有一个小游戏程序,我要求用户输入一个数字,如果这个数字与随机选择的数字匹配,我就为对手变量减去另一个随机数。另一方面,对手伤害了我。我让程序处理减法,但问题是,每次我在node.js(即node fileName.js 4)中运行文件时,程序中的所有变量都会重置。当“伤害”从“生命”中减去时,生命应该被保存,但它会继续重置<代码>主字符和僵尸。hp不应重置Javascript 在node.js中运行文件并使用“保存变量值”;询问者“;,javascript,node.js,Javascript,Node.js,我有一个小游戏程序,我要求用户输入一个数字,如果这个数字与随机选择的数字匹配,我就为对手变量减去另一个随机数。另一方面,对手伤害了我。我让程序处理减法,但问题是,每次我在node.js(即node fileName.js 4)中运行文件时,程序中的所有变量都会重置。当“伤害”从“生命”中减去时,生命应该被保存,但它会继续重置主字符和僵尸。hp不应重置 var StrawberryCough = require("inquirer"); var mainCharacter = 70; var z
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 StrawberryCough=require(“查询者”);
var mainCharacter=70;
var zombie={
惠普:15,
数字:0
}
草莓咳嗽([
{
键入:“输入”,
信息:“随机数1-5:”,
姓名:“号码”
}
]).then(功能(用户){
parseInt(用户编号);
var ranNum=Math.round(Math.random()*(5-1)+1);
zombie.num=ranNum;
if(user.number==zombie.num)
{
var损害=数学圆(数学随机()*(5-1)+1);
控制台日志(“字符损坏:”,损坏);
僵尸.hp-=伤害;
log(“zombie hp”,zombie.hp);
如果(zombie.hp如果希望数据持久化,则应查看键值存储、数据库,并将其保存到文件中……否则每次运行该文件时:
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');
好的,谢谢。我也考虑过制作一个单独的文件,但不是使用exports.var。我会试试你的seuggestions,谢谢。你如何处理它实际上取决于你期望它走多远。如果你的游戏只是从命令行运行脚本,你希望它在“回合”之间保持不变对于运行上述脚本,我认为最简单的方法是将其保存到json文件中。如果您计划进一步,并且担心不断读写文件的性能,那么显然还有其他事情可以做,但在游戏的这个阶段,这似乎是一个微优化这回答了你的问题吗?