Maison  >  Article  >  interface Web  >  Comment implémenter un simple jeu pierre-feuille-ciseaux en utilisant Nodejs

Comment implémenter un simple jeu pierre-feuille-ciseaux en utilisant Nodejs

青灯夜游
青灯夜游avant
2021-06-11 10:34:093492parcourir

Cet article vous présentera comment utiliser Node.js pour créer un simple jeu de pierre, papier, ciseaux. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment implémenter un simple jeu pierre-feuille-ciseaux en utilisant Nodejs

Après avoir eu une compréhension préliminaire des modules Node.js, des services asynchrones, HTTP et d'autres points de connaissances, créons un simple jeu pierre-feuille-ciseaux ! ! [Apprentissage recommandé : "Tutoriel nodejs"]

Analyse des exigences

Ce jeu pierre-feuille-ciseaux est une forme d'interaction homme-machine . Nous saisissons au hasard une pierre (rock)/ciseaux (scissor)/papier (paper), puis l'ordinateur génère également de manière aléatoire une pierre/ciseaux/papier, puis compare les gains et les pertes et génère le résultat.

Il y a deux questions ici. Nous connaissons le résultat et pouvons l'imprimer via console.log(), alors comment pouvons-nous le saisir ? Alors, comment Node.js obtient-il notre valeur d'entrée ?

l'entrée est saisie directement comme suit : node index.js rock, et ajoutez simplement le paramètre node directement après index.js démarrage de l'exécution rock.

Pour l'obtenir, Node.js possède une variable globale process, qui est un objet de processus qui enregistre des informations sur le fonctionnement de Node.js. Il contient un attribut argv qui peut. être obtenu grâce à cet attribut Valeur d'entrée :

console.log(process.argv)

Comment implémenter un simple jeu pierre-feuille-ciseaux en utilisant Nodejs

Version initiale

Sans plus attendre, passons directement au 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;)
  }
}

Ensuite, exécutez et jouez :

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

Comment implémenter un simple jeu pierre-feuille-ciseaux en utilisant Nodejs

Module Encapsulation

Dans "Une brève discussion sur Spécifications du module dans Nodejs》 Nous avons appris la spécification du module CommonJS de Node.js, encapsulons maintenant ce jeu et implémentons ensuite une nouvelle exigence : les ordinateurs ont aussi des émotions. Lorsque nous gagnons plus de 3 fois, les émotions de l'ordinateur le feront. Une fois arrivé, vous ne jouerez plus.

Un nouveau fichier game.js est créé ici, et le module de jeu est distribué via 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;
  }
}

Créez un nouveau index.js et chargez le module require via game.js :

// 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)

Lancez-le et voyez :

Comment implémenter un simple jeu pierre-feuille-ciseaux en utilisant Nodejs

Maintenant, pour calculer le nombre de fois que nous gagnons, nous avons besoin d'une méthode qui nous permette de continuer en tapant :

// 获取进程的标准输入
process.stdin.on(&#39;data&#39;, (buffer) => {
  // 回调的是 buffer,需要处理成 string
  const action = buffer.toString().trim();
  console.log(action)
})

Exécutez la commande dans le terminal : node index.js, vous pouvez voir que vous pouvez continuer à saisir.

Comment implémenter un simple jeu pierre-feuille-ciseaux en utilisant Nodejs

Calculez le nombre de victoires. Après trois fois, l'ordinateur ne veut plus jouer, puis tuez le processus via 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();
    }
  }
})

Comment implémenter un simple jeu pierre-feuille-ciseaux en utilisant Nodejs

Comme vous pouvez le constater, après un certain temps d'allers-retours avec l'ordinateur, puis de battre l'ordinateur trois fois, les conditions ont été remplies et le processus s'est terminé.

D'accord, nous avons ici implémenté un simple jeu pierre-papier-ciseaux. Dans le prochain article, transformons le jeu pierre-papier-ciseaux en une version web !

Adresse du code : https://github.com/V-vincent/node-introduction

Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer