文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript实现中秋博饼游戏的示例代码

2024-04-02 19:55

关注

1、什么是中秋节(中秋博饼)

中秋节的最大特征是将人与自然和谐的美好愿望寄托在天上,八月中正当农业丰收的季节,月饼和瓜果既是敬神的供品,也是丰收的具体象征。花好月圆之夜户户团聚,加强了亲情关系,中秋节亦因此而成为社会和谐的重要媒介。

中秋博饼习俗源于福建厦门,盛行于漳州的龙海、泉州的安海和金门县等地,清代康乾时期的《台湾府志》曾有过相关记载。每逢中秋佳节,闽南及台湾地区会以家庭或社团为单位,自发举行中秋博饼活动,参加者以六个骰子轮流投掷,博取状元、榜眼、探花、进士、举人、秀才六个等第并按等第获取大小不同的月饼。博饼的游戏规则简单公平,既充满竞争悬念,又富于生活情趣,历来为广大民众所喜爱。

2、游戏玩法

2.1 道具

大的瓷碗一个,类似盛汤那种大碗。其次是六个骰子,多一个少一个都不行。

2.2 流程

每个人按人数围成一桌,一般博饼都会有聚餐,每一桌大概10人左右。然后围成圈,将瓷碗放置在桌子中间。然后每人依次把6个骰子投进大碗里,博到什么就领取什么奖品,如果没有博到任何奖品也需要将骰子交付给下一位成员,然后由下一位成员继续投骰子,根据骰子的点数得获取奖品,直至所有的奖品全部博完为止。

2.3 规则

根据科举制度来划分等级,由高到低。

六抔红:六个4====>所有的饼全归投者所有。

六抔黑:六个其他数字。

状元插金花:四个4+两个1。

五子登科:五个相同的数。

状元:四个4带其他两个任意数。

对堂:摇出顺子,比如123456

四进:除了4以外的四个相同的数,比如666611

三红:三个4

二举:两个4

一秀:一个4

3.中秋博饼H5设计(直接进入)

中秋博饼H5

3.1介绍

3.2点击开始博饼 

4.导入程序自己diy

程序链接:

中秋博饼H5代码

提取码:d47f

启动开发

$ cd mid-autumn
$ npm install
$ npm start

编译打包

$ npm run build

抽出通用的博饼逻辑

返回博饼结果

提前设置结果

判断奖项

5. 代码实现

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' 对堂
    // '100500' '010500' '001500' '000510' '000501' 五红
    // '5xxxxx' 'x5xxxx' 'xx5xxx' 'xxxx5x' 'xxxxx5' 五子登科
    // '200400' 状元插金花
    // 'xxx4xx' 状元
    // '4xxxxx' 'x4xxxx' 'xx4xxx' 'xxxx4x' 'xxxxx4' 四进
    // 'xxx3xx' 三红
    // 'xxx2xx' 二举
    // 'xxx1xx' 一秀
    rule = [{
        reg: /000600/,
        name: '六勃红'
    }, {
        reg: /600000/,
        name: '遍地锦'
    }, {
        reg: /6/,
        name: '六勃黑'
    }, {
        reg: /111111/,
        name: '对堂'
    }, {
        reg: /^\d{3}5\d{2}$/,
        name: '五红'
    }, {
        reg: /5/,
        name: '五子登科'
    }, {
        reg: /200400/,
        name: '状元插金花'
    }, {
        reg: /^\d{3}4\d{2}$/,
        name: '状元'
    }, {
        reg: /4/,
        name: '四进'
    }, {
        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();
    }
 
    // 获取随机的6个点数
    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;
    }
 
    // 通过传入特定的6个色子设置结果的点数
    setResult(result) {
        if (!(result instanceof Array) || result.length !== 6) {
            throw new Error('设置的结果必须是一个数字数组,并且每个数字在1到6之间');
        }
        this.result = result;
        this._change();
        return this;
    }
 
    getResult() {
        return this.result;
    }
 
    // 统计结果,将不同的点数统计在对应的位置上
    // [1点, 2点, 3点, 4点, 5点, 6点]
    _countResult() {
        this.award = [0, 0, 0, 0, 0, 0];
        this.result.forEach(item => {
            this.award[item - 1]++;
        });
        return this;
    }
 
    // 判断结果是什么奖项
    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: '未中奖',
            }
        }
    }
}

到此这篇关于JavaScript实现中秋博饼游戏的示例代码的文章就介绍到这了,更多相关JavaScript中秋博饼内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯