This article will introduce to you how to use Node.js to make a simple rock-paper-scissors game. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.
After having a preliminary understanding of Node.js modules, asynchronous, HTTP services and other knowledge points, let’s make a simple rock-paper-scissors game! ! [Recommended learning: "nodejs tutorial"]
This rock-paper-scissors game is a form of human-computer interaction. We randomly Input rock (rock
)/scissors (scissor
)/paper (paper
), and then the computer also randomly generates rock/scissors/paper, then compares the winning and losing, and outputs result.
There are two questions here. We know the output and can print it through console.log()
, so how do we input it? Then how does Node.js get our input value?
The input is entered directly like this: node index.js rock
, after node
starts running index.js
, add parameters directlyrock
That’s it.
If obtained, Node.js has a global variable process
, which is a process object that records some information about the operation of Node.js, and has an attribute argv
, the input value can be obtained through this attribute:
console.log(process.argv)
Without further ado, let’s go directly to the code :
// 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('你赢了') } }
Then run and play:
node spr.js rock node spr.js scissor node spr.js paper
In " shallow Talking about the module specification in Nodejs》 We have learned about the CommonJS module specification of Node.js, so now let’s encapsulate this game and then implement a new requirement: computers also have emotions. When we win more than After 3 times, the computer's mood got high and it stopped playing.
A new game.js
file is created here, and the game module is exported through 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; } }
New index. js
, load game.js
module through require
:
// 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)
Run it and see:
Now we need to calculate the number of times we win, we need a way to continue typing:
// 获取进程的标准输入 process.stdin.on('data', (buffer) => { // 回调的是 buffer,需要处理成 string const action = buffer.toString().trim(); console.log(action) })
Run the command on the terminal: node index.js
, you can see that we can continue typing of.
Calculate the number of wins. After more than three times, the computer no longer wants to play, and then kill the process through process.exit()
:
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(); } } })
As you can see, after a while of back and forth with the computer and then beating the computer three times, the conditions were met and the process ended.
Okay, now a simple rock-paper-scissors game has been implemented. In the next article, let’s transform the rock-paper-scissors game into a web version!
Code address: https://github.com/V-vincent/node-introduction
For more programming-related knowledge, please visit: Programming Video ! !
The above is the detailed content of How to implement a simple rock-paper-scissors game using Nodejs. For more information, please follow other related articles on the PHP Chinese website!