我有一个可在命令行中播放井字游戏和四连奏的应用程序。有些代码是我未编写的样板,并且在理解其工作方式时遇到了麻烦。
当我运行npm start
时,“连接四人”会按预期播放,但是无法播放井字游戏。我希望用户选择玩任一游戏。理想情况下,我会提示用户,但是每个游戏都有一个命令就可以了。
有一个简短的server.js
文件,看起来像这样:
require('babel-polyfill');
require('babel-register');
require('.');
在我的package.json
中,我有main: "./connect4/index.js"
。
据我所知,这是与启动应用程序相关的所有代码。对于这个模糊的问题,我表示歉意。但是该应用程序不是很复杂,因此希望它有意义。
答案 0 :(得分:0)
您可以通过两种方式执行此操作。第一种是使用npm软件包查询器,它允许您在命令行中提示用户。
另一种选择是使用内置的process.argv
节点,该节点的属性将返回包含您传递的所有命令行参数的数组。请注意,使用此选项时,位置[0]将默认为计算机上节点的位置,位置[1]将默认为当前文件位置。要访问自定义参数,您必须从位置[2]等处开始。因此,您可以根据位置2的argv值编写运行tic-tac-toe或连接4的逻辑。因此,在代码中的某处您会有所作为像
if (process.argv[2] === "tick-tack-toe") {
console.log("do tick tack toe logic");
}else if (process.argv[2] === "connect-4") {
console.log("do connect 4 logic");
}
希望这会有所帮助。您可以在https://nodejs.org/docs/latest/api/process.html#process_process_argv
处了解有关process.argv的更多信息。这是github上查询者的链接 https://github.com/SBoudrias/Inquirer.js#readme
答案 1 :(得分:0)
作为背景,如果在package.json文件中未指定npm start
,则执行scripts.start
时npm将尝试运行命令node server.js
。
假设执行node ./connect4/index.js
可行,并且tic-tac-toe的组织方式与connect4类似,则以下任何一种都可以工作。
node ./ticTacToe/index.js
直接执行命令(假设ticTacToe
是目录,index.js
是要执行的主要文件)。scripts: {ticTacToe: "node ./ticTacToe/index.js"}
(或任何您想调用的名称),然后执行npm run ticTacToe
。答案 2 :(得分:0)
感谢您的反馈。我添加了一个顶级index.js
文件,将每个游戏的相关代码导入了该文件,并使用了Inquirer来提示用户选择游戏。
无法将ticTacToe
和c4
的脚本添加到package.json
上,因为我认为我的server.js
文件需要解析导入/导出语法。
如果好奇,回购协议是here。