这是我参与更文挑战的第 4 天,活动详情查看: 更文挑战
上一节我们简单介绍了 NodeJS 的特性,今天我们就上手开发,用 NodeJS 写一个「石头、剪刀、布」的小游戏。
游戏过程
这个游戏大家肯定都玩过了,简单描述一下游戏过程:
- 玩家输入一个手势,如 rock ✊
- 电脑反馈一个手势,如 scissor ✂️
- 玩家赢则加一分,反之不加分
- 玩家累计三分则获胜,电脑自动退出程序,放弃比赛
代码实现
这个游戏只包含常规的 JS 逻辑,代码如下:
// index.js
const game = require('./game'); // 游戏逻辑
let count = 0; // 玩家得分
// 启动进程,获取玩家输入
process.stdin.on('data', e => {
const playerAction = e.toString().trim();
// 获得电脑输出
const result = game(playerAction);
// 玩家赢则得一分
if (result.point === -1) {
count++;
}
// 玩家获胜三次,电脑退出程序
if (count >= 3) {
console.log('你太强了,我不玩了!');
process.exit();
}
});
- process.stdin 是进程的输入流,可以获得用户输入
- process.exit 结束当前进程
// game.js
module.exports = function (playerAction) {
// 通过 random 来随机产生电脑行为,比较结果并返回。
const random = Math.random() * 3;
const getComputerAction = () => {
if (random < 1) {
return 'rock';
} else if (random > 2) {
return 'scissor';
} else {
return 'paper';
}
};
const computerAction = getComputerAction();
// 电脑失败为 -1,获胜为 1
let point;
// 平局
if (computerAction === playerAction) {
point = 0;
} else if (
// 电脑获胜
(computerAction === 'rock' && playerAction === 'scissor') ||
(computerAction === 'scissor' && playerAction == 'paper') ||
(computerAction === 'paper' && playerAction == 'rock')
) {
point = 1;
} else {
// 电脑失败
point = -1;
}
// 电脑获胜情况,电脑的行为
return { point, computerAction };
};
运行程序
node index.js
rock # 输入你的手势
总结
以上就是一个简单的 Node 程序,建议大家动手试一试,一起探索 Node 的世界!
下一节,我们将用 express/koa 来改造我们的程序。