亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    使用Nodejs如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的石頭剪刀布小游戲

    本篇文章給大家介紹一下使用Node.js做一個(gè)簡(jiǎn)單的石頭剪刀布小游戲的方法。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。

    使用Nodejs如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的石頭剪刀布小游戲

    初步了解了 Node.js 的模塊、異步、HTTP 服務(wù)等知識(shí)點(diǎn)之后,就來(lái)做一個(gè)簡(jiǎn)單的石頭剪刀布的小游戲吧!!【推薦學(xué)習(xí):《nodejs 教程》】

    需求分析

    這個(gè)石頭剪刀布小游戲是人機(jī)交互的形式,我們隨機(jī)輸入石頭(rock)/剪刀(scissor)/布(paper),然后電腦也隨機(jī)生成石頭/剪刀/布,然后比較輸贏,輸出結(jié)果。

    這里有兩個(gè)問(wèn)題,輸出我們知道,可以通過(guò) console.log() 打印輸出,那么我們?cè)趺摧斎肽??然?Node.js 又通過(guò)什么拿到我們的輸入值呢?

    輸入是這樣直接輸入的:node index.js rock,在 node 啟動(dòng)運(yùn)行 index.js 后面直接添加參數(shù) rock 即可。

    而獲取的話,Node.js 有一個(gè)全局變量 process,它是一個(gè)進(jìn)程對(duì)象,記載 Node.js 運(yùn)行的一些信息,里面有一個(gè)屬性 argv,通過(guò)這個(gè)屬性可以獲取到輸入的值:

    console.log(process.argv)

    使用Nodejs如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的石頭剪刀布小游戲

    初始版本

    話不多說(shuō),直接上代碼:

    // spr.js // 石頭剪刀布小游戲 // 命令行命令:node spr.js rock // argv 可以獲取到命令行 node 后面輸入的行為 // let playerAction = process.argv[process.argv.length - 1]; // 最后面的輸入 let playerAction = process.argv[2]; // 也可以通過(guò)下標(biāo)直接獲取 console.log('你出了', playerAction) if (playerAction != 'rock' && playerAction != 'paper' && playerAction != 'scissor') {   console.log('請(qǐng)輸入rock或paper或scissor') } else {   // 電腦通過(guò)隨機(jī)數(shù)生成石頭剪刀布   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('你贏了')   } }

    那么運(yùn)行玩一下吧:

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

    使用Nodejs如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的石頭剪刀布小游戲

    模塊封裝

    在 《淺談Nodejs中的模塊規(guī)范》 中有學(xué)習(xí)到 Node.js 的 CommonJS 模塊規(guī)范,那么現(xiàn)在來(lái)把這個(gè)游戲封裝起來(lái),然后再實(shí)現(xiàn)一個(gè)新需求:電腦也是有情緒的,當(dāng)我們贏的次數(shù)超過(guò)3次時(shí),電腦的情緒就上來(lái)了,就不玩了。

    這里新建了一個(gè) game.js 文件,通過(guò) module.exports 將游戲模塊給出去:

    // game.js module.exports = function (playerAction) {   if (['rock', 'scissor', 'paper'].indexOf(playerAction) == -1) {     throw new Error('請(qǐng)輸入rock或paper或scissor');   }   // 電腦通過(guò)隨機(jī)數(shù)生成石頭剪刀布   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,通過(guò) require 加載 game.js 模塊:

    // argv 可以獲取到命令行 node 后面輸入的行為 var playerAction = process.argv[process.argv.length - 1]; console.log(playerAction);  // 通過(guò) require 引入石頭剪刀布游戲模塊 const game = require('./game.js') const result = game(playerAction); console.log(result)

    運(yùn)行起來(lái)看看:

    使用Nodejs如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的石頭剪刀布小游戲

    現(xiàn)在要來(lái)計(jì)算我們贏的次數(shù),那需要一個(gè)方法讓我們可以持續(xù)輸入:

    // 獲取進(jìn)程的標(biāo)準(zhǔn)輸入 process.stdin.on('data', (buffer) => {   // 回調(diào)的是 buffer,需要處理成 string   const action = buffer.toString().trim();   console.log(action) })

    終端運(yùn)行命令:node index.js,可以看到是可以持續(xù)輸入的。

    使用Nodejs如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的石頭剪刀布小游戲

    計(jì)算贏的次數(shù),超過(guò)三次后電腦不想玩了,然后通過(guò) process.exit() 把進(jìn)程給殺了:

    const game = require('./game.js') var winCount = 0; // 獲取進(jìn)程的標(biāo)準(zhǔn)輸入 process.stdin.on('data', (buffer) => {   // 回調(diào)的是 buffer,需要處理成 string   const action = buffer.toString().trim();   const result = game(action);   if (result == 1) {     winCount++     if (winCount == 3) {       console.log('我不玩兒了!哼!');       process.exit();     }   } })

    使用Nodejs如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的石頭剪刀布小游戲

    可以看到,在一陣和電腦的你來(lái)我往然后贏了電腦三次之后就達(dá)成條件結(jié)束進(jìn)程了。

    好的,到這里這樣一個(gè)簡(jiǎn)單的石頭剪刀布小游戲就實(shí)現(xiàn)了,下一篇我們來(lái)把石頭剪刀布小游戲改造成網(wǎng)頁(yè)版的吧!

    代碼地址:https://github.com/V-vincent/node-introduction

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)