In diesem Artikel erfahren Sie, wie Sie mit Node.js ein einfaches Stein-, Papier- und Scherenspiel erstellen. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Nachdem wir ein vorläufiges Verständnis der Node.js-Module, asynchronen HTTP-Dienste und anderer Wissenspunkte erlangt haben, spielen wir ein einfaches Schere-Stein-Papier-Spiel! ! [Empfohlenes Lernen: „nodejs-Tutorial“]
Dieses Stein-Papier-Schere-Spiel ist eine Form der Mensch-Computer-Interaktion. Wir geben Stein (stein
) nach dem Zufallsprinzip ein. Schere (Schere
)/Papier (Papier
), und dann generiert der Computer auch zufällig Stein/Schere/Papier, vergleicht dann Gewinn und Verlust und gibt das Ergebnis aus. rock
)/剪刀(scissor
)/布(paper
),然后电脑也随机生成石头/剪刀/布,然后比较输赢,输出结果。
这里有两个问题,输出我们知道,可以通过 console.log()
打印输出,那么我们怎么输入呢?然后 Node.js 又通过什么拿到我们的输入值呢?
输入是这样直接输入的:node index.js rock
,在 node
启动运行 index.js
后面直接添加参数 rock
即可。
而获取的话,Node.js 有一个全局变量 process
,它是一个进程对象,记载 Node.js 运行的一些信息,里面有一个属性 argv
,通过这个属性可以获取到输入的值:
console.log(process.argv)
话不多说,直接上代码:
// spr.js // 石头剪刀布小游戏 // 命令行命令:node spr.js rock // argv 可以获取到命令行 node 后面输入的行为 // let playerAction = process.argv[process.argv.length - 1]; // 最后面的输入 let playerAction = process.argv[2]; // 也可以通过下标直接获取 console.log('你出了', playerAction) if (playerAction != 'rock' && playerAction != 'paper' && playerAction != 'scissor') { console.log('请输入rock或paper或scissor') } else { // 电脑通过随机数生成石头剪刀布 let computerAction; let random = Math.random() * 3; if (random < 1) { console.log('电脑出了石头') computerAction = 'rock' } else if (random > 2) { console.log('电脑出了剪刀') computerAction = 'scissor' } else { console.log('电脑出了布') computerAction = 'paper' } // 比较分出输赢 if (computerAction === playerAction) { console.log('平局') } else if ( (computerAction == 'rock' && playerAction == 'scissor') || (computerAction == 'scissor' && playerAction == 'paper') || (computerAction == 'paper' && playerAction == 'rock') ) { console.log('你输了') } else { console.log('你赢了') } }
那么运行玩一下吧:
node spr.js rock node spr.js scissor node spr.js paper
在 《浅谈Nodejs中的模块规范》 中有学习到 Node.js 的 CommonJS 模块规范,那么现在来把这个游戏封装起来,然后再实现一个新需求:电脑也是有情绪的,当我们赢的次数超过3次时,电脑的情绪就上来了,就不玩了。
这里新建了一个 game.js
文件,通过 module.exports
将游戏模块给出去:
// game.js module.exports = function (playerAction) { if (['rock', 'scissor', 'paper'].indexOf(playerAction) == -1) { throw new Error('请输入rock或paper或scissor'); } // 电脑通过随机数生成石头剪刀布 var computerAction; var random = Math.random() * 3 if (random < 1) { computerAction = 'rock' console.log('电脑出了石头') } else if (random > 2) { computerAction = 'scissor' console.log('电脑出了剪刀') } else { computerAction = 'paper' console.log('电脑出了布') } // 比较分出输赢 if (computerAction === playerAction) { console.log('平局') return 0; } else if ( (computerAction == 'rock' && playerAction == 'scissor') || (computerAction == 'scissor' && playerAction == 'paper') || (computerAction == 'paper' && playerAction == 'rock') ) { console.log('你输了') return -1; } else { console.log('你赢了') return 1; } }
新建 index.js
,通过 require
加载 game.js
模块:
// argv 可以获取到命令行 node 后面输入的行为 var playerAction = process.argv[process.argv.length - 1]; console.log(playerAction); // 通过 require 引入石头剪刀布游戏模块 const game = require('./game.js') const result = game(playerAction); console.log(result)
运行起来看看:
现在要来计算我们赢的次数,那需要一个方法让我们可以持续输入:
// 获取进程的标准输入 process.stdin.on('data', (buffer) => { // 回调的是 buffer,需要处理成 string const action = buffer.toString().trim(); console.log(action) })
终端运行命令:node index.js
,可以看到是可以持续输入的。
计算赢的次数,超过三次后电脑不想玩了,然后通过 process.exit()
console.log()
gedruckt werden kann. Wie geben wir sie also ein? Wie erhält Node.js dann unseren Eingabewert? Die Eingabe erfolgt direkt wie folgt: node index.js rock
, starten Sie die Ausführung von index.js
in node
und fügen Sie den Parameter
Wenn Sie es erhalten möchten, verfügt Node.js über eine globale Variable process
, bei der es sich um ein Prozessobjekt handelt, das einige Informationen über den Betrieb von Node.js aufzeichnet. Es verfügt über ein Attribut argv
. Der Eingabewert kann über dieses Attribut abgerufen werden:
const game = require('./game.js') var winCount = 0; // 获取进程的标准输入 process.stdin.on('data', (buffer) => { // 回调的是 buffer,需要处理成 string const action = buffer.toString().trim(); const result = game(action); if (result == 1) { winCount++ if (winCount == 3) { console.log('我不玩儿了!哼!'); process.exit(); } } })
Ursprüngliche VersionDa gibt es nicht viel zu sagen, gehen wir direkt zum Code:
rrreeeDann führen Sie und aus spielen:rrreee
🎜game.js
-Datei wird hier erstellt und das Spielmodul wird über module.exports
exportiert: 🎜rrreee🎜Erstellen Sie eine neue index.js, Laden Sie das Modul <code>game.js
über require
: 🎜rrreee🎜Führen Sie es aus und sehen Sie: 🎜🎜🎜🎜Jetzt müssen wir berechnen, wie oft wir gewinnen, und wir brauchen eine So können Sie mit der Eingabe fortfahren: 🎜rrreee 🎜Führen Sie den Befehl im Terminal aus: node index.js
. Sie können sehen, dass Sie mit der Eingabe fortfahren können. 🎜🎜🎜🎜Berechnung Die Anzahl der Siege, nach mehr als drei Malen möchte der Computer nicht mehr spielen und bricht dann den Prozess durch process.exit()
ab: 🎜rrreee🎜🎜🎜🎜Wie Sie sehen können, danach Nach einer Weile mit dem Computer kommst du zu mir. Nachdem du den Computer dreimal besiegt hast, sind die Bedingungen erfüllt und der Prozess ist beendet. 🎜🎜Okay, hier haben wir ein einfaches Stein-Papier-Schere-Spiel implementiert. Im nächsten Artikel verwandeln wir das Stein-Papier-Schere-Spiel in eine Webversion! 🎜🎜🎜Code-Adresse: https://github.com/V-vincent/node-introduction🎜🎜🎜Weitere Kenntnisse zum Thema Programmierung finden Sie unter: 🎜Programmiervideo🎜! ! 🎜
Das obige ist der detaillierte Inhalt vonSo implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!