Heim > Web-Frontend > js-Tutorial > Hauptteil

So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs

青灯夜游
Freigeben: 2021-06-25 09:49:51
nach vorne
3423 Leute haben es durchsucht

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.

So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs

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

Anforderungsanalyse

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)
Nach dem Login kopieren

So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs

初始版本

话不多说,直接上代码:

// 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;)
  }
}
Nach dem Login kopieren

那么运行玩一下吧:

node spr.js rock
node spr.js scissor
node spr.js paper
Nach dem Login kopieren

So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs

模块封装

在 《浅谈Nodejs中的模块规范》 中有学习到 Node.js 的 CommonJS 模块规范,那么现在来把这个游戏封装起来,然后再实现一个新需求:电脑也是有情绪的,当我们赢的次数超过3次时,电脑的情绪就上来了,就不玩了。

这里新建了一个 game.js 文件,通过 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;
  }
}
Nach dem Login kopieren

新建 index.js,通过 require 加载 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)
Nach dem Login kopieren

运行起来看看:

So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs

现在要来计算我们赢的次数,那需要一个方法让我们可以持续输入:

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

终端运行命令:node index.js,可以看到是可以持续输入的。

So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs

计算赢的次数,超过三次后电脑不想玩了,然后通过 process.exit()

Hier gibt es zwei Fragen. Wir wissen, dass die Ausgabe über console.log() gedruckt werden kann. Wie geben wir sie also ein? Wie erhält Node.js dann unseren Eingabewert?

So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit NodejsDie 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 hinzu > direkt danach Rock reicht aus.

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(&#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();
    }
  }
})
Nach dem Login kopieren

So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs

Ursprüngliche Version

Da gibt es nicht viel zu sagen, gehen wir direkt zum Code:

rrreeeDann führen Sie und aus spielen:rrreee

So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs 🎜

🎜Modulkapselung🎜🎜🎜 in " Eine kurze Diskussion der Modulspezifikationen in Nodejs 🎜》 Wir haben die CommonJS-Modulspezifikation von Node.js gelernt. Lassen Sie uns nun dieses Spiel kapseln und dann eine neue Anforderung implementieren: Computer haben auch Emotionen, wenn wir mehr als dreimal gewinnen Emotionen werden sich ändern. Sobald du hochkommst, wirst du nicht mehr spielen. 🎜🎜Eine neue 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: 🎜🎜So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs🎜🎜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. 🎜🎜So implementieren Sie ein einfaches Stein-Schere-Papier-Spiel mit Nodejs🎜🎜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!

Verwandte Etiketten:
Quelle:juejin.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!