js笔记之通过while、switch case实现简单的石头剪刀布游戏

31 篇文章 1 订阅

石头剪刀布{
输入的手势:0代表石头,1代表剪刀,2代表布
注:程序需要提前打开控制台}

//人机壳输赢,五局三胜
//变量:猜拳次数,人和电脑胜利字数,人和电脑手势  
//常量:石头--->0   剪刀--->1   布--->2  胜利的最大局数3
    var counter = 0;  //猜拳次数
    var playerWinCounter = 0;//人胜利次数
    var compterWinCounter = 0;//电脑胜利次数
    var playSelect = 0;//人的手势
    var compterSelect = 0;//电脑手势

    const STONE = 0;//石头
    const SCISSOR = 1;//剪刀
    const PAPER = 2;//布
    const MAX_WIN_COUNT = 3;//胜利的最大局数
    //当玩家和电脑胜利次数比MAX_WIN_COUNT胜利最大局数大时候:结束
    while (playerWinCounter < MAX_WIN_COUNT && compterWinCounter < MAX_WIN_COUNT) {
        counter++;
        console.log('******第' + counter + '局开始******');
        //玩家输入
        var input = parseInt(prompt('输入手势对应数字:石头->0 剪刀->1 布->2 ' + '第' + counter + '局'));
        playSelect = input;
        //playSelect = ~~(Math.random() * (PAPER + 1 - STONE) + STONE);
        //电脑随机
        compterSelect = ~~(Math.random() * (PAPER + 1 - STONE) + STONE);
//进行提示,告诉玩家和电脑都出的啥
        switch (playSelect) {
            case STONE:
                console.log('玩家出的是石头');
                break;
            case SCISSOR:
                console.log('玩家出的是剪刀');
                break;
            case PAPER:
                console.log('玩家出的是布');
                break;
        }
        switch (compterSelect) {
            case STONE:
                console.log('电脑出的石头');
                break;
            case SCISSOR:
                console.log('电脑出的是剪刀');
                break;
            case PAPER:
                console.log('电脑出的是布');
                break;
        }
        //进行判断,并打印谁赢,并给某胜利局数+1
        //3*3=9  所有可能的结果
        switch (playSelect) {
            case STONE://玩家石头
                if (compterSelect === STONE) {//石头
                    console.log('平局')
                } else if (compterSelect === SCISSOR) {//剪刀
                    console.log('玩家赢');
                    playerWinCounter++;
                } else {//布
                    console.log('电脑赢');
                    compterWinCounter++;
                }
                break;
            case SCISSOR://玩家出剪刀
                if (compterSelect === STONE) {//石头
                    console.log('电脑胜利');
                    compterWinCounter++;
                } else if (compterSelect === SCISSOR) {//剪刀
                    console.log('平局');
                } else {//布
                    console.log('玩家赢');
                    playerWinCounter++;
                }
                break;
            case PAPER:
                if (compterSelect === STONE) {//石头
                    console.log('玩家赢');
                    playerWinCounter++;
                } else if (compterSelect === SCISSOR) {//剪刀
                    console.log('电脑胜利');
                    compterWinCounter++;
                } else {//布
                    console.log('平局')
                }
                break;
        }
        //打印当前一局的分.
        console.log(`当前比分【玩家】vs【电脑】==${playerWinCounter}:${compterWinCounter}`);
        console.log('******第' + counter + '局结束******')
    }
    //当while不成立后,打印最终比赛结果
    if (playerWinCounter === MAX_WIN_COUNT) {
        console.log(`当前比分【玩家】vs【电脑】==${playerWinCounter}:${compterWinCounter}`);
        console.log('玩家胜利');
    } else {
        console.log(`最终比分【电脑】vs【玩家】==${compterWinCounter}:${playerWinCounter}`);
        console.log('电脑胜利');
    }
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百事可口

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值