阿尔卑斯丶
圣骑士
圣骑士
  • 最后登录2023-11-03
  • 发帖数59
  • 社区居民
  • 原创写手
阅读:5763回复:1

[Javascript]Nodejs的一个石头剪刀布的小游戏(假装是小游戏)(二)

楼主#
更多 发布于:2019-11-25 15:33
这是上一个小游戏的升级版,这版本主要是使用commonJs规范以及使用了nodejs中的杀进程的方法。
首先,我们将上个版本的内容进行提取,将处理的逻辑写在一个单独的js(lib.js)中:
module.exports = function(player) {
   var radom = Math.random() * 3;
    if (radom < 1) {
        var computer = "剪刀"
        console.log("电脑出剪刀")
    } else if (radom > 2) {
        var computer = '石头'
        console.log("电脑出石头")
    } else {
        var computer = "布"
        console.log("电脑出布")
    }
    if (computer === player) {
        console.log("玩家出" + player)
        console.log("平局");
    } else if (
        (computer == "石头" && player == "布") ||
        (computer == "剪刀" && player == "石头") ||
        (computer == "布" && player == "剪刀")
    ) {
        console.log("玩家出" + player)
        console.log("玩家赢了")
    } else {
        console.log("玩家出" + player)
        console.log("电脑赢了")
    }
}


然后我们在index.js中引用这个js文件
var player = process.argv[process.argv.length - 1]
const game = require('./lib');
game(player);


这样我们就能够如同之前 的小游戏一样正常操作。
接下来我们还要做的是在玩家赢电脑三次之后,电脑的小脾气是将自身的进程杀掉,这要怎么做呢?首先我们要统计电脑输给玩家三次,所以我们就需要将其统计起来。
module.exports = function(player) {
    var radom = Math.random() * 3;
    if (radom < 1) {
        var computer = "剪刀"
        console.log("电脑出剪刀")
    } else if (radom > 2) {
        var computer = '石头'
        console.log("电脑出石头")
    } else {
        var computer = "布"
        console.log("电脑出布")
    }
    if (computer === player) {
        console.log("玩家出" + player)
        console.log("平局");
        return 0;
    } else if (
        (computer == "石头" && player == "布") ||
        (computer == "剪刀" && player == "石头") ||
        (computer == "布" && player == "剪刀")
    ) {
        console.log("玩家出" + player)
        console.log("玩家赢了")
        return -1;
    } else {
        console.log("玩家出" + player)
        console.log("电脑赢了")
        return 1;
    }
}


我在双方平局时返回一个0,玩家赢时返回一个 -1,电脑赢时返回一个1。然后我们就需要进行统计。
不过在这里有个问题需要解决的是,我们需要在玩家输入三次之后才能进行进程关闭,那么我们就需要让这个进行之前一直存在,知道玩家赢了电脑三次之后才能关闭进程。我们就是会用到process.stdin来进行获取用户的标准输入,转换成字符串输出出来。
process.stdin.on('data', e => {
    const player = e.toString().trim();
    const result = game(player);
    console.log(result)
})


完整的判断逻辑就是
process.stdin.on('data', e => {
    const player = e.toString().trim();
    const result = game(player);
    console.log(result)
    if (result == -1) {
        count++;
    }
    if (count == 3) {
        console.log("你太厉害了,我不玩了")
        process.exit();
    }
})




接下来就是这个小游戏的完整代码(前边是libs.js,后边是Index.js):
module.exports = function(player) {
    var radom = Math.random() * 3;
    if (radom < 1) {
        var computer = "剪刀"
        console.log("电脑出剪刀")
    } else if (radom > 2) {
        var computer = '石头'
        console.log("电脑出石头")
    } else {
        var computer = "布"
        console.log("电脑出布")
    }
    if (computer === player) {
        console.log("玩家出" + player)
        console.log("平局");
        return 0;
    } else if (
        (computer == "石头" && player == "布") ||
        (computer == "剪刀" && player == "石头") ||
        (computer == "布" && player == "剪刀")
    ) {
        console.log("玩家出" + player)
        console.log("玩家赢了")
        return -1;
    } else {
        console.log("玩家出" + player)
        console.log("电脑赢了")
        return 1;
    }
}


var player = process.argv[process.argv.length - 1]
const game = require('./lib');
var count = 0;
process.stdin.on('data', e => {
    const player = e.toString().trim();
    const result = game(player);
    console.log(result)
    if (result == -1) {
        count++;
    }
    if (count == 3) {
        console.log("你太厉害了,我不玩了")
        process.exit();
    }
})
阿尔卑斯丶
圣骑士
圣骑士
  • 最后登录2023-11-03
  • 发帖数59
  • 社区居民
  • 原创写手
沙发#
发布于:2019-11-25 15:35
这次新增了使用commonJs规范进行代码编写,然后增加在nodejs中进行进程长期存在和进行进程关闭。
游客


返回顶部

公众号

公众号