最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實(shí)現(xiàn)中秋博餅游戲的示例代碼

 更新時(shí)間:2022年09月01日 14:41:19   作者:LiBiGo  
中秋博餅習(xí)俗源于福建廈門,盛行于漳州的龍海、泉州的安海和金門縣等地。博餅的游戲規(guī)則簡(jiǎn)單公平,既充滿競(jìng)爭(zhēng)懸念,又富于生活情趣,本文將用JavaScript實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以了解一下

1、什么是中秋節(jié)(中秋博餅)

中秋節(jié)的最大特征是將人與自然和諧的美好愿望寄托在天上,八月中正當(dāng)農(nóng)業(yè)豐收的季節(jié),月餅和瓜果既是敬神的供品,也是豐收的具體象征。花好月圓之夜戶戶團(tuán)聚,加強(qiáng)了親情關(guān)系,中秋節(jié)亦因此而成為社會(huì)和諧的重要媒介。

中秋博餅習(xí)俗源于福建廈門,盛行于漳州的龍海、泉州的安海和金門縣等地,清代康乾時(shí)期的《臺(tái)灣府志》曾有過(guò)相關(guān)記載。每逢中秋佳節(jié),閩南及臺(tái)灣地區(qū)會(huì)以家庭或社團(tuán)為單位,自發(fā)舉行中秋博餅活動(dòng),參加者以六個(gè)骰子輪流投擲,博取狀元、榜眼、探花、進(jìn)士、舉人、秀才六個(gè)等第并按等第獲取大小不同的月餅。博餅的游戲規(guī)則簡(jiǎn)單公平,既充滿競(jìng)爭(zhēng)懸念,又富于生活情趣,歷來(lái)為廣大民眾所喜愛。

2、游戲玩法

2.1 道具

大的瓷碗一個(gè),類似盛湯那種大碗。其次是六個(gè)骰子,多一個(gè)少一個(gè)都不行。

2.2 流程

每個(gè)人按人數(shù)圍成一桌,一般博餅都會(huì)有聚餐,每一桌大概10人左右。然后圍成圈,將瓷碗放置在桌子中間。然后每人依次把6個(gè)骰子投進(jìn)大碗里,博到什么就領(lǐng)取什么獎(jiǎng)品,如果沒(méi)有博到任何獎(jiǎng)品也需要將骰子交付給下一位成員,然后由下一位成員繼續(xù)投骰子,根據(jù)骰子的點(diǎn)數(shù)得獲取獎(jiǎng)品,直至所有的獎(jiǎng)品全部博完為止。

2.3 規(guī)則

根據(jù)科舉制度來(lái)劃分等級(jí),由高到低。

六抔紅:六個(gè)4====>所有的餅全歸投者所有。

六抔黑:六個(gè)其他數(shù)字。

狀元插金花:四個(gè)4+兩個(gè)1。

五子登科:五個(gè)相同的數(shù)。

狀元:四個(gè)4帶其他兩個(gè)任意數(shù)。

對(duì)堂:搖出順子,比如123456

四進(jìn):除了4以外的四個(gè)相同的數(shù),比如666611

三紅:三個(gè)4

二舉:兩個(gè)4

一秀:一個(gè)4

3.中秋博餅H5設(shè)計(jì)(直接進(jìn)入)

中秋博餅H5

3.1介紹

3.2點(diǎn)擊開始博餅 

4.導(dǎo)入程序自己diy

程序鏈接:

中秋博餅H5代碼

提取碼:d47f

啟動(dòng)開發(fā)

$ cd mid-autumn
$ npm install
$ npm start

編譯打包

$ npm run build

抽出通用的博餅邏輯

返回博餅結(jié)果

提前設(shè)置結(jié)果

判斷獎(jiǎng)項(xiàng)

5. 代碼實(shí)現(xiàn)

5.1 indexjs

import { MidAutumn } from './common';
import './style/main.less';
 
import $ from "jquery";
 
 
 
class Game {
    result = [];
    position = [];
 
    midAutumn = new MidAutumn();
 
    start() {
        this.result = this.midAutumn.start();
        // this.result = this.midAutumn.setResult([4, 4, 4, 4, 1, 1]).getResult();
        console.log(this.midAutumn.getAward());
        this.setDice();
    }
 
    getPosition() {
        let position = []
        this.position = [1, 2, 3, 4, 5, 6, 7];
        for (let i = 0; i < 6; i++) {
            position.push(this.position.splice(Math.floor(Math.random() * this.position.length), 1)[0])
        }
        return position;
    }
 
    setDice() {
        $("#bowl").removeClass('active');
        const position = this.getPosition();
        $.each($("#bowl .dice"), (index, item) => {
            $(item).removeClass();
            $(item).addClass(`sprite dice dice${this.result[index]} dice-position${position[index]}`)
        })
        setTimeout(() => {
            $("#bowl").addClass('active');
        }, 200)
    }
}
 
$(() => {
    const game = new Game();
    $("#startGame").click(() => {
        game.start();
    })
});

5.2 mid-autumn.js代碼邏輯

export default class MidAutumn {
 
    constructor(config = {}) {
        this.config = config;
    }
 
    result = [];
    awardList = [];
 
    // '000600' 六勃紅
    // '600000' 遍地錦
    // '060000' '006000' '000060' '000006' 六勃黑
    // '111111' 對(duì)堂
    // '100500' '010500' '001500' '000510' '000501' 五紅
    // '5xxxxx' 'x5xxxx' 'xx5xxx' 'xxxx5x' 'xxxxx5' 五子登科
    // '200400' 狀元插金花
    // 'xxx4xx' 狀元
    // '4xxxxx' 'x4xxxx' 'xx4xxx' 'xxxx4x' 'xxxxx4' 四進(jìn)
    // 'xxx3xx' 三紅
    // 'xxx2xx' 二舉
    // 'xxx1xx' 一秀
    rule = [{
        reg: /000600/,
        name: '六勃紅'
    }, {
        reg: /600000/,
        name: '遍地錦'
    }, {
        reg: /6/,
        name: '六勃黑'
    }, {
        reg: /111111/,
        name: '對(duì)堂'
    }, {
        reg: /^\d{3}5\d{2}$/,
        name: '五紅'
    }, {
        reg: /5/,
        name: '五子登科'
    }, {
        reg: /200400/,
        name: '狀元插金花'
    }, {
        reg: /^\d{3}4\d{2}$/,
        name: '狀元'
    }, {
        reg: /4/,
        name: '四進(jìn)'
    }, {
        reg: /^\d{3}3\d{2}$/,
        name: '三紅'
    }, {
        reg: /^\d{3}2\d{2}$/,
        name: '二舉'
    }, {
        reg: /\d{3}1\d{2}$/,
        name: '一秀'
    }]
 
    _change() {
        const { onChange } = this.config;
        typeof onChange === 'function' && onChange(this.result);
    }
 
    // 開始博餅
    start() {
        return this.getPoint();
    }
 
    // 獲取隨機(jī)的6個(gè)點(diǎn)數(shù)
    getPoint() {
        this.result.length = 0;
        for (let i = 0; i < 6; i++) {
            this.result.push(Math.floor(Math.random() * 6) + 1)
        }
        this._change();
        return this.result;
    }
 
    // 通過(guò)傳入特定的6個(gè)色子設(shè)置結(jié)果的點(diǎn)數(shù)
    setResult(result) {
        if (!(result instanceof Array) || result.length !== 6) {
            throw new Error('設(shè)置的結(jié)果必須是一個(gè)數(shù)字?jǐn)?shù)組,并且每個(gè)數(shù)字在1到6之間');
        }
        this.result = result;
        this._change();
        return this;
    }
 
    getResult() {
        return this.result;
    }
 
    // 統(tǒng)計(jì)結(jié)果,將不同的點(diǎn)數(shù)統(tǒng)計(jì)在對(duì)應(yīng)的位置上
    // [1點(diǎn), 2點(diǎn), 3點(diǎn), 4點(diǎn), 5點(diǎn), 6點(diǎn)]
    _countResult() {
        this.award = [0, 0, 0, 0, 0, 0];
        this.result.forEach(item => {
            this.award[item - 1]++;
        });
        return this;
    }
 
    // 判斷結(jié)果是什么獎(jiǎng)項(xiàng)
    getAward() {
        this._countResult();
        const awardString = this.award.join('');
        console.log(awardString);
        if (this.rule && this.rule.length) {
            for (let i = 0; i < this.rule.length; i++) {
                if (this.rule[i].reg.test(awardString)) {
                    return {
                        name: this.rule[i].name,
                    }
                }
            }
            return {
                name: '未中獎(jiǎng)',
            }
        }
    }
}

到此這篇關(guān)于JavaScript實(shí)現(xiàn)中秋博餅游戲的示例代碼的文章就介紹到這了,更多相關(guān)JavaScript中秋博餅內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

敦化市| 通渭县| 噶尔县| 车险| 吉首市| 筠连县| 沙湾县| 景谷| 明光市| 光山县| 霍山县| 集安市| 河津市| 永宁县| 贵州省| 民权县| 胶南市| 白城市| 安康市| 剑河县| 新沂市| 凌海市| 宜宾县| 巴彦淖尔市| 新乡市| 永清县| 邵阳市| 大名县| 蒙阴县| 奉化市| 揭阳市| 遂川县| 新竹市| 嘉善县| 贵港市| 沙湾县| 张家港市| 灵丘县| 邹平县| 定西市| 青冈县|