Home  >  Article  >  Web Front-end  >  How to implement a simple rock-paper-scissors game using Nodejs

How to implement a simple rock-paper-scissors game using Nodejs

青灯夜游
青灯夜游forward
2021-06-11 10:34:093434browse

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.

How to implement a simple rock-paper-scissors game using Nodejs

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"]

Requirements Analysis

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)

How to implement a simple rock-paper-scissors game using Nodejs

Initial version

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(&#39;电脑出了石头&#39;)
    computerAction = &#39;rock&#39;
  } else if (random > 2) {
    console.log(&#39;电脑出了剪刀&#39;)
    computerAction = &#39;scissor&#39;
  } else {
    console.log(&#39;电脑出了布&#39;)
    computerAction = &#39;paper&#39;
  }

  // 比较分出输赢
  if (computerAction === playerAction) {
    console.log(&#39;平局&#39;)
  } else if (
    (computerAction == &#39;rock&#39; && playerAction == &#39;scissor&#39;) ||
    (computerAction == &#39;scissor&#39; && playerAction == &#39;paper&#39;) ||
    (computerAction == &#39;paper&#39; && playerAction == &#39;rock&#39;)
  ) {
    console.log(&#39;你输了&#39;)
  } else {
    console.log(&#39;你赢了&#39;)
  }
}

Then run and play:

node spr.js rock
node spr.js scissor
node spr.js paper

How to implement a simple rock-paper-scissors game using Nodejs

Module encapsulation

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 ([&#39;rock&#39;, &#39;scissor&#39;, &#39;paper&#39;].indexOf(playerAction) == -1) {
    throw new Error(&#39;请输入rock或paper或scissor&#39;);
  }
  // 电脑通过随机数生成石头剪刀布
  var computerAction;
  var random = Math.random() * 3
  if (random < 1) {
    computerAction = &#39;rock&#39;
    console.log(&#39;电脑出了石头&#39;)
  } else if (random > 2) {
    computerAction = &#39;scissor&#39;
    console.log(&#39;电脑出了剪刀&#39;)
  } else {
    computerAction = &#39;paper&#39;
    console.log(&#39;电脑出了布&#39;)
  }

  // 比较分出输赢
  if (computerAction === playerAction) {
    console.log(&#39;平局&#39;)
    return 0;
  } else if (
    (computerAction == &#39;rock&#39; && playerAction == &#39;scissor&#39;) ||
    (computerAction == &#39;scissor&#39; && playerAction == &#39;paper&#39;) ||
    (computerAction == &#39;paper&#39; && playerAction == &#39;rock&#39;)
  ) {
    console.log(&#39;你输了&#39;)
    return -1;
  } else {
    console.log(&#39;你赢了&#39;)
    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(&#39;./game.js&#39;)
const result = game(playerAction);
console.log(result)

Run it and see:

How to implement a simple rock-paper-scissors game using Nodejs

Now we need to calculate the number of times we win, we need a way to continue typing:

// 获取进程的标准输入
process.stdin.on(&#39;data&#39;, (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.

How to implement a simple rock-paper-scissors game using Nodejs

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(&#39;./game.js&#39;)
var winCount = 0;
// 获取进程的标准输入
process.stdin.on(&#39;data&#39;, (buffer) => {
  // 回调的是 buffer,需要处理成 string
  const action = buffer.toString().trim();
  const result = game(action);
  if (result == 1) {
    winCount++
    if (winCount == 3) {
      console.log(&#39;我不玩儿了!哼!&#39;);
      process.exit();
    }
  }
})

How to implement a simple rock-paper-scissors game using Nodejs

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!

Statement:
This article is reproduced at:juejin.cn. If there is any infringement, please contact admin@php.cn delete