皇冠与锚-JS实现(拒绝赌博)

皇冠与锚-JS实现(19世纪中叶流行的赌博游戏)

游戏规则

皇冠与锚游戏

游戏规则:

有一个6个面是"皇冠", “锚”, “红心”,“梅花”, “黑桃”, "方块"的骰子。玩家可以在这些面的组合中放任意数量钱数。

然后掷三个骰子,每个骰子上面都有之前提到的6个面。如果掷出来的骰子跟他下注的一样,那玩家可以收取对应的奖励。

场景模拟:玩家手里拥有50便士,当玩家赢到100便士或者输光则游戏结束。

下注掷骰子盈利
5便士皇冠皇冠、皇冠、锚10便士
3便士梅花、2便士皇冠黑桃、红桃、锚0便士
所有花色1便士任何一面3便士

实现思路

1.游戏首先需要判断游戏状态

2.下注

function rand(m, n) {       //随机金额
    return m + Math.floor((n - m + 1) * Math.random());
}

3.掷骰子

function randFace() {       //随机面
    const allFace = ["crown", "anchor", "heart", "spade", "club", "diamond"];
    let faceIndex = rand(0, 5);
    return allFace[faceIndex];
}

4.收集奖励

代码实现

// 需求分析:1.判断游戏状态    2.下注  3.掷骰子    4.收集奖励
//游戏至少赢一次所需要次数
let num = 0;
let flag = false;
while (!flag) {
    // 给初始50便士
    let funds = 50;
    num++;
    // 1.判断游戏状态
    while (funds > 0 && funds < 100) {
        // 2.下注
        const bets = { crown: 0, anchor: 0, heart: 0, spade: 0, club: 0, diamond: 0 };  //初始化下注
        let totalBet = rand(1, funds);  //下注总金额
        console.log("这次下注:", totalBet);
        //随机分配下注
        let remaining = totalBet;
        do {
            let bet = rand(1, remaining);   //单面下注金额
            let face = randFace();  //下注的面
            bets[face] += bet;
            remaining -= bet;
        } while (remaining > 0);
        funds -= totalBet;  //减去下注金额
        console.log("下注情况:", bets);

        // 3.掷骰子(3次)
        const hand = [];
        for (let roll = 0; roll < 3; roll++) {
            hand.push(randFace());
        }
        console.log("骰子情况:", hand);

        // 4.收集奖励
        let winnings = 0;   //赢得钱
        for (let index = 0; index < hand.length; index++) {
            let face = hand[index];
            if (bets[face] > 0) {
                winnings += bets[face];
            }
        }
        funds += winnings;  //加钱
        console.log("这次赢了", winnings, "便士");
        console.log("这次后金额:", funds);
    }
    console.log("第", num, "次游戏最后金额:", funds);
    if(funds >= 100) {
        flag = true;
    }
}

function rand(m, n) {       //随机金额
    return m + Math.floor((n - m + 1) * Math.random());
}

function randFace() {       //随机面
    const allFace = ["crown", "anchor", "heart", "spade", "club", "diamond"];
    let faceIndex = rand(0, 5);
    return allFace[faceIndex];
}

这里我加入了循环判断,判断赌徒需要进行多少次赌博才能赢得一次赌博(相对极端,假设赌徒每次都花光50便士)下面是结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

每次掷三个骰子,从上三次数据可以看出要盈利50便士以上需要的次数之高,假设赌徒每天赌博一次,运气最好也很难快速回本!拒绝赌博!!!

注:游戏摘自《JavaScript学习指南》

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hairy377

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

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

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

打赏作者

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

抵扣说明:

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

余额充值