JSFiddle - React, Tailwind, and code Playground

by skwjdgn

HTML

<script src='//rawgit.com/eu81273/jsfiddle-console/master/console.js'></script>

JavaScript

//m 이상 n 이하의 무작위 정수를 반환합니다.
function rand(m ,n){
    return m + Math.floor((n - m + 1) * Math.random());
}

//크라운 앤 앵커 게임의 여섯 그림 중 하나에 해당하는 문자열을 무작위로 반환합니다.
function randFace(){
    return ["crown", "anchor", "heart", "spade", "club", "diamond"]
        [rand(0, 5)];
}

let game = {

    doBet : function(funds){

        return rand(1, funds);
    },
    remainingBet : function(totalBet){
        if(totalBet === 7){
            totalBet = funds;
            bets.heart = totalBet;
        }else{
            let remaining = totalBet;

            do{
                let bet = rand(1, remaining);
                let face = randFace();
                bets[face] = bets[face] + bet;
                remaining = remaining - bet;
            }while(remaining > 0)
        }
        funds = funds - totalBet;
        console.log("\t bets: " + Object.keys(bets).map(face => `${face}: ${bets[face]} pence`).join(', ')  + ` (total: ${totalBet} pence)`);
        return funds;
    },
    rollDice : function(){
        const hand = [];
        for(let roll = 0; roll < 3; roll++){
            hand.push(randFace());
        }
        console.log(`\t hand: ${hand.join(', ')}`);
        return hand;

    },
    makeMoney : function(hand){
        let winnings = 0;
        for(let die = 0; die < hand.length; die++){
            let face = hand[die];
            if(bets[face] > 0) winnings = winnings + bets[face];
        }
        funds = funds + winnings;
        console.log(`\t winnings: ${winnings}`);

        return funds;
    }

}

function doGame(funds){

    let round = 0;

    while(funds > 0 && funds < 100){
        round++;
        console.log(`rond ${round}:`);
        console.log(`\t starting funds : ${funds}p`);

        //돈을 겁니다.
        let totalBet = game.doBet(funds);
        //돈을 나눕니다.
        funds = game.remainingBet(totalBet);
        //주사위를 굴립니다.
        const hand = game.rollDice();
        //딴 돈을 가져옵니다.
        funds = game.makeMoney(hand);
       ...