您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎么使用Nodejs實現石頭剪刀布小游戲,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
這個石頭剪刀布小游戲是人機交互的形式,我們隨機輸入石頭(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)
話不多說,直接上代碼:
// 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('你贏了') } }
那么運行玩一下吧:
node spr.js rock node spr.js scissor node spr.js paper
在 《淺談Nodejs中的模塊規范》 中有學習到 Node.js 的 CommonJS 模塊規范,那么現在來把這個游戲封裝起來,然后再實現一個新需求:電腦也是有情緒的,當我們贏的次數超過3次時,電腦的情緒就上來了,就不玩了。
這里新建了一個 game.js
文件,通過 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; } }
新建 index.js
,通過 require
加載 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)
運行起來看看:
現在要來計算我們贏的次數,那需要一個方法讓我們可以持續輸入:
// 獲取進程的標準輸入 process.stdin.on('data', (buffer) => { // 回調的是 buffer,需要處理成 string const action = buffer.toString().trim(); console.log(action) })
終端運行命令:node index.js
,可以看到是可以持續輸入的。
計算贏的次數,超過三次后電腦不想玩了,然后通過 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(); } } })
可以看到,在一陣和電腦的你來我往然后贏了電腦三次之后就達成條件結束進程了。
關于“怎么使用Nodejs實現石頭剪刀布小游戲”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。