Maison > Article > interface Web > Comment implémenter un simple jeu pierre-feuille-ciseaux en utilisant Nodejs
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.
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"]
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)
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('电脑出了石头') 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('你赢了') } }
Ensuite, exécutez et jouez :
node spr.js rock node spr.js scissor node spr.js paper
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 (['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; } }
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('./game.js') const result = game(playerAction); console.log(result)
Lancez-le et voyez :
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('data', (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.
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('./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(); } } })
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!