Table of Contents
Requirements Analysis
Initial version
Module encapsulation
Home Web Front-end JS Tutorial How to implement a simple rock-paper-scissors game using Nodejs

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

Jun 11, 2021 am 10:34 AM
nodejs

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)
Copy after login

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;)
  }
}
Copy after login

Then run and play:

node spr.js rock
node spr.js scissor
node spr.js paper
Copy after login

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;
  }
}
Copy after login

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)
Copy after login

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)
})
Copy after login

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();
    }
  }
})
Copy after login

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 of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

The difference between nodejs and vuejs The difference between nodejs and vuejs Apr 21, 2024 am 04:17 AM

Node.js is a server-side JavaScript runtime, while Vue.js is a client-side JavaScript framework for creating interactive user interfaces. Node.js is used for server-side development, such as back-end service API development and data processing, while Vue.js is used for client-side development, such as single-page applications and responsive user interfaces.

Is nodejs a backend framework? Is nodejs a backend framework? Apr 21, 2024 am 05:09 AM

Node.js can be used as a backend framework as it offers features such as high performance, scalability, cross-platform support, rich ecosystem, and ease of development.

How to connect nodejs to mysql database How to connect nodejs to mysql database Apr 21, 2024 am 06:13 AM

To connect to a MySQL database, you need to follow these steps: Install the mysql2 driver. Use mysql2.createConnection() to create a connection object that contains the host address, port, username, password, and database name. Use connection.query() to perform queries. Finally use connection.end() to end the connection.

What is the difference between npm and npm.cmd files in the nodejs installation directory? What is the difference between npm and npm.cmd files in the nodejs installation directory? Apr 21, 2024 am 05:18 AM

There are two npm-related files in the Node.js installation directory: npm and npm.cmd. The differences are as follows: different extensions: npm is an executable file, and npm.cmd is a command window shortcut. Windows users: npm.cmd can be used from the command prompt, npm can only be run from the command line. Compatibility: npm.cmd is specific to Windows systems, npm is available cross-platform. Usage recommendations: Windows users use npm.cmd, other operating systems use npm.

What are the global variables in nodejs What are the global variables in nodejs Apr 21, 2024 am 04:54 AM

The following global variables exist in Node.js: Global object: global Core module: process, console, require Runtime environment variables: __dirname, __filename, __line, __column Constants: undefined, null, NaN, Infinity, -Infinity

Is there a big difference between nodejs and java? Is there a big difference between nodejs and java? Apr 21, 2024 am 06:12 AM

The main differences between Node.js and Java are design and features: Event-driven vs. thread-driven: Node.js is event-driven and Java is thread-driven. Single-threaded vs. multi-threaded: Node.js uses a single-threaded event loop, and Java uses a multi-threaded architecture. Runtime environment: Node.js runs on the V8 JavaScript engine, while Java runs on the JVM. Syntax: Node.js uses JavaScript syntax, while Java uses Java syntax. Purpose: Node.js is suitable for I/O-intensive tasks, while Java is suitable for large enterprise applications.

Is nodejs a back-end development language? Is nodejs a back-end development language? Apr 21, 2024 am 05:09 AM

Yes, Node.js is a backend development language. It is used for back-end development, including handling server-side business logic, managing database connections, and providing APIs.

How to deploy nodejs project to server How to deploy nodejs project to server Apr 21, 2024 am 04:40 AM

Server deployment steps for a Node.js project: Prepare the deployment environment: obtain server access, install Node.js, set up a Git repository. Build the application: Use npm run build to generate deployable code and dependencies. Upload code to the server: via Git or File Transfer Protocol. Install dependencies: SSH into the server and use npm install to install application dependencies. Start the application: Use a command such as node index.js to start the application, or use a process manager such as pm2. Configure a reverse proxy (optional): Use a reverse proxy such as Nginx or Apache to route traffic to your application

See all articles