使用Nodejs如何實作一個簡單的石頭剪刀布小遊戲
這篇文章跟大家介紹一下使用Node.js做一個簡單的石頭剪刀布小遊戲的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
初步了解了 Node.js 的模組、非同步、HTTP 服務等知識點之後,就來做一個簡單的石頭剪刀布的小遊戲吧! ! 【推薦學習:《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(); } } })
可以看到,在一陣和電腦的你來我往然後贏了電腦三次之後就達成條件結束進程了。
好的,到這裡這樣一個簡單的石頭剪刀布小遊戲就實現了,下一篇我們來把石頭剪刀布小遊戲改造成網頁版的吧!
程式碼位址:https://github.com/V-vincent/node-introduction
更多程式相關知識,請造訪:程式設計視頻! !
以上是使用Nodejs如何實作一個簡單的石頭剪刀布小遊戲的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Node.js 是一種伺服器端 JavaScript 執行時,而 Vue.js 是一個客戶端 JavaScript 框架,用於建立互動式使用者介面。 Node.js 用於伺服器端開發,如後端服務 API 開發和資料處理,而 Vue.js 用於用戶端開發,如單一頁面應用程式和響應式使用者介面。

要連接 MySQL 資料庫,需要遵循以下步驟:安裝 mysql2 驅動程式。使用 mysql2.createConnection() 建立連接對象,其中包含主機位址、連接埠、使用者名稱、密碼和資料庫名稱。使用 connection.query() 執行查詢。最後使用 connection.end() 結束連線。

Node.js 安裝目錄中有兩個與 npm 相關的文件:npm 和 npm.cmd,區別如下:擴展名不同:npm 是可執行文件,npm.cmd 是命令視窗快捷方式。 Windows 使用者:npm.cmd 可以在命令提示字元中使用,npm 只能從命令列執行。相容性:npm.cmd 特定於 Windows 系統,npm 跨平台可用。使用建議:Windows 使用者使用 npm.cmd,其他作業系統使用 npm。

Node.js 中存在以下全域變數:全域物件:global核心模組:process、console、require執行階段環境變數:__dirname、__filename、__line、__column常數:undefined、null、NaN、Infinity、-Infinity

Node.js 和 Java 的主要差異在於設計和特性:事件驅動與執行緒驅動:Node.js 基於事件驅動,Java 基於執行緒驅動。單執行緒與多執行緒:Node.js 使用單執行緒事件循環,Java 使用多執行緒架構。執行時間環境:Node.js 在 V8 JavaScript 引擎上運行,而 Java 在 JVM 上運行。語法:Node.js 使用 JavaScript 語法,而 Java 使用 Java 語法。用途:Node.js 適用於 I/O 密集型任務,而 Java 適用於大型企業應用程式。

Node.js 專案的伺服器部署步驟:準備部署環境:取得伺服器存取權限、安裝 Node.js、設定 Git 儲存庫。建置應用程式:使用 npm run build 產生可部署程式碼和相依性。上傳程式碼到伺服器:透過 Git 或檔案傳輸協定。安裝依賴項:SSH 登入伺服器並使用 npm install 安裝應用程式相依性。啟動應用程式:使用 node index.js 等命令啟動應用程序,或使用 pm2 等進程管理器。設定反向代理(可選):使用 Nginx 或 Apache 等反向代理路由流量到應用程式
