本文摘自PHP中文网,作者青灯夜游,侵删。
本篇文章给大家介绍一下使用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
,通过这个属性可以获取到输入的值:
1 | console.log(process.argv)
|
初始版本
话不多说,直接上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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( '你赢了' )
}
}
|
那么运行玩一下吧:
1 2 3 | node spr.js rock
node spr.js scissor
node spr.js paper
|
模块封装
在 《浅谈Nodejs中的模块规范》 中有学习到 Node.js 的 CommonJS 模块规范,那么现在来把这个游戏封装起来,然后再实现一个新需求:电脑也是有情绪的,当我们赢的次数超过3次时,电脑的情绪就上来了,就不玩了。
这里新建了一个 game.js
文件,通过 module.exports
将游戏模块给出去:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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
模块:
1 2 3 4 5 6 7 8 | var playerAction = process.argv[process.argv.length - 1];
console.log(playerAction);
const game = require( './game.js' )
const result = game(playerAction);
console.log(result)
|
运行起来看看:
现在要来计算我们赢的次数,那需要一个方法让我们可以持续输入:
1 2 3 4 5 6 | process.stdin.on( 'data' , (buffer) => {
const action = buffer.toString().trim();
console.log(action)
})
|
终端运行命令:node index.js
,可以看到是可以持续输入的。
计算赢的次数,超过三次后电脑不想玩了,然后通过 process.exit()
把进程给杀了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | const game = require( './game.js' )
var winCount = 0;
process.stdin.on( 'data' , (buffer) => {
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如何实现一个简单的石头剪刀布小游戏的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
nodejs怎么运行js文件
node.js访问sql数据库的方法
了解nodejs中的模块载入
node.js怎么引用外部js
如何查看nodejs是否安装成功
怎么看nodejs是否安装成功
nodejs版的orm库--sequelize
浅谈nodejs获取参数的几种方法
3个值得收藏的实用nodejs软件包
nodejs|使用mongoosejs将mongodb与node连接
更多相关阅读请进入《nodejs》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 使用Nodejs如何实现一个简单的石头剪刀布小游戏