中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Nodejs實現石頭剪刀布小游戲

發布時間:2021-06-11 11:18:18 來源:億速云 閱讀:233 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關怎么使用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)

怎么使用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('電腦出了石頭')
    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實現石頭剪刀布小游戲

模塊封裝

在 《淺談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)

運行起來看看:

怎么使用Nodejs實現石頭剪刀布小游戲

現在要來計算我們贏的次數,那需要一個方法讓我們可以持續輸入:

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

終端運行命令:node index.js,可以看到是可以持續輸入的。

怎么使用Nodejs實現石頭剪刀布小游戲

計算贏的次數,超過三次后電腦不想玩了,然后通過 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實現石頭剪刀布小游戲

可以看到,在一陣和電腦的你來我往然后贏了電腦三次之后就達成條件結束進程了。

關于“怎么使用Nodejs實現石頭剪刀布小游戲”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呼玛县| 南丰县| 怀仁县| 双桥区| 内丘县| 巢湖市| 绵阳市| 金阳县| 镇安县| 湄潭县| 南澳县| 洪泽县| 怀宁县| 肃南| 依安县| 小金县| 三门县| 昌都县| 将乐县| 永宁县| 寻甸| 吉林省| 洞头县| 耒阳市| 中方县| 金沙县| 沙坪坝区| 沾益县| 合作市| 成安县| 玉树县| 日土县| 孝昌县| 克东县| 甘洛县| 泌阳县| 沙雅县| 天镇县| 兰坪| 沂水县| 乌鲁木齐市|