更新记录

1.0.0(2025-12-31)

wj-mjaigame

功能简介

该游戏为人机对战麻将游戏,AI为玩家提供出牌策略指导,提升玩家麻将水平,实现百战百胜。 1.本人作为其中一个玩家,其他玩家为程序出牌。 2.已有胡牌规则有:平胡、龙七对、七对、大对子、清一色 3.抓鸡规则有:幺鸡、八筒以及胡牌后翻的鸡,没叫牌时已出的鸡被扣分 4.AI在线思考出牌决策:在线连接Deepseek现场指导出牌决策,提升玩家麻将水平,实现百战百胜。 5.配备完备的广告体系:视频激励+信息流广告,多重立体广告收益。

基本使用方法

1.修改广告adpid为自己的:插件wj-mjaigame/common/constants.js第34行

//视频奖励广告位adpid
export const adpid = '1507000689';

//游戏界面信息流广告位adpid
export const adXXLpid = '1111111111';

2.修改deepseek的key:插件wj-mjaigame/uniCloud/cloudfunctions/ai-demo/index.js的69行

        const llmManager = uniCloud.ai.getLLMManager({
  provider: 'deepseek',
  apiKey:'在deepseek.com上申请的Key',
  proxy:'https://api.deepseek.com' //也可以是ip
}) //创建llm对象

通过以上两步已经实现:推广使用、坐等广告收益。

二开基本思路

修改胡牌规则,实现本地特色麻将规则,更受本地人喜欢。

修改胡牌逻辑

// 检查七对/杠七对
if (tempHand.length === 14 & this.checkSevenPairs(tempHand)) {
    paixingfen = paixingfen + 3;
    //如果七对中有4张牌相同,则说明是杠七对
    if (this.findFourthDuplicate(tempHand)) {
        paixing.push('杠七对');
        paixingfen = paixingfen + 20;
    } else {
        paixing.push('七对');
        paixingfen = paixingfen + 10;
    }

    // 检查是否是同一色(即清一色牌型的基础)
    const special = this.players[player].special;
    if (this.checkQingYiSe(tempHand, special)) {
        paixing.push('清一色');
        paixingfen = paixingfen + 10;
    }

    this.paixingfen = paixingfen;

    return paixing.map(t => t).join(' ');
}

// 检查大对子
if (this.checkDaDuizi(tempHand)) {
    paixingfen = paixingfen + 3;
    paixing.push('大对子');
    paixingfen = paixingfen + 5;
    // 检查是否是同一色(即清一色牌型的基础)
    const special = this.players[player].special;
    if (this.checkQingYiSe(tempHand, special)) {
        paixing.push('清一色');
        paixingfen = paixingfen + 10;
    }

    this.paixingfen = paixingfen;

    return paixing.map(t => t).join(' ');
}

// 检查平胡
if (this.checkPingHu(tempHand)) {
    paixingfen = paixingfen + 3;
    //检查自己是否有杠
    const gangCombos = this.players[player].special.filter(combo => combo.type === 'gang');
    // 如果是自摸或者有杠,平胡可以胡
    if (isZimo || this.gang || gangCombos.length > 0) {
        paixing.push('平胡');
        paixingfen = paixingfen;
        if (this.gang) {
            paixingfen = paixingfen + 2;
        }
    }

    // 检查是否是同一色(即清一色牌型的基础)
    const special = this.players[player].special;
    if (this.checkQingYiSe(tempHand, special)) {
        paixing.push('清一色');
        paixingfen = paixingfen + 10;
    }

    this.paixingfen = paixingfen;
    return paixing.map(t => t).join(' ');
}

新建具体规则函数

// 大对子检查
checkDaDuizi(tiles) {
    // 碰碰胡牌数要求: 2,5,8,11,14
    const validLengths = [2, 5, 8, 11, 14];
    if (!validLengths.includes(tiles.length) || tiles[0] != tiles[1]) return false;
    if (tiles.length === 2 & tiles[0] === tiles[1]) return true;

    // 提取所有name值
    const names = tiles.map(item => item);
    // 统计数字出现频率
    const freq = {};
    for (const num of names) {
        freq[num] = (freq[num] || 0) + 1;
    }

    const counts = Object.values(freq);
    // 检查频率模式:一个数字出现2次,其余数字每个出现3次
    return counts.includes(2) && counts.filter(c => c === 3).length === counts.length - 1;
}
// 清一色检查
checkQingYiSe(tiles, special) {
    if (tiles.length === 0) return false;

    const firstTileType = tiles[0].charAt(1);

    // 检查手牌
    for (const tile of tiles) {
        if (tile.charAt(1) !== firstTileType) {
            return false;
        }
    }

    // 检查特殊牌组
    if (special && special.length > 0) {
        for (const group of special) {
            for (const tile of group.tiles) {
                if (tile.name.charAt(1) !== firstTileType) {
                    return false;
                }
            }
        }
    }

    return true;
}

平台兼容性

云端兼容性

阿里云 腾讯云 支付宝云

uni-app(4.71)

Vue2 Vue2插件版本 Vue3 Vue2插件版本 Chrome Chrome插件版本 Safari Safari插件版本 app-vue app-nvue Android iOS 鸿蒙
1.0.0 1.0.0 1.0.0 1.0.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟

uni-app x(4.71)

Chrome Safari Android iOS 鸿蒙 微信小程序

其他

多语言 暗黑模式 宽屏模式
× ×

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


wj-mjaigame

功能简介

该游戏为人机对战麻将游戏,AI为玩家提供出牌策略指导,提升玩家麻将水平,实现百战百胜。 1.本人作为其中一个玩家,其他玩家为程序出牌。 2.已有胡牌规则有:平胡、龙七对、七对、大对子、清一色 3.抓鸡规则有:幺鸡、八筒以及胡牌后翻的鸡,没叫牌时已出的鸡被扣分 4.AI在线思考出牌决策:在线连接Deepseek现场指导出牌决策,提升玩家麻将水平,实现百战百胜。 5.配备完备的广告体系:视频激励+信息流广告,多重立体广告收益。

基本使用方法

1.修改广告adpid为自己的:插件wj-mjaigame/common/constants.js第34行

//视频奖励广告位adpid
export const adpid = '1507000689';

//游戏界面信息流广告位adpid
export const adXXLpid = '1111111111';

2.修改deepseek的key:插件wj-mjaigame/uniCloud/cloudfunctions/ai-demo/index.js的69行

        const llmManager = uniCloud.ai.getLLMManager({
  provider: 'deepseek',
  apiKey:'在deepseek.com上申请的Key',
  proxy:'https://api.deepseek.com' //也可以是ip
}) //创建llm对象

通过以上两步已经实现:推广使用、坐等广告收益。

二开基本思路

修改胡牌规则,实现本地特色麻将规则,更受本地人喜欢。

修改胡牌逻辑

// 检查七对/杠七对
if (tempHand.length === 14 & this.checkSevenPairs(tempHand)) {
    paixingfen = paixingfen + 3;
    //如果七对中有4张牌相同,则说明是杠七对
    if (this.findFourthDuplicate(tempHand)) {
        paixing.push('杠七对');
        paixingfen = paixingfen + 20;
    } else {
        paixing.push('七对');
        paixingfen = paixingfen + 10;
    }

    // 检查是否是同一色(即清一色牌型的基础)
    const special = this.players[player].special;
    if (this.checkQingYiSe(tempHand, special)) {
        paixing.push('清一色');
        paixingfen = paixingfen + 10;
    }

    this.paixingfen = paixingfen;

    return paixing.map(t => t).join(' ');
}

// 检查大对子
if (this.checkDaDuizi(tempHand)) {
    paixingfen = paixingfen + 3;
    paixing.push('大对子');
    paixingfen = paixingfen + 5;
    // 检查是否是同一色(即清一色牌型的基础)
    const special = this.players[player].special;
    if (this.checkQingYiSe(tempHand, special)) {
        paixing.push('清一色');
        paixingfen = paixingfen + 10;
    }

    this.paixingfen = paixingfen;

    return paixing.map(t => t).join(' ');
}

// 检查平胡
if (this.checkPingHu(tempHand)) {
    paixingfen = paixingfen + 3;
    //检查自己是否有杠
    const gangCombos = this.players[player].special.filter(combo => combo.type === 'gang');
    // 如果是自摸或者有杠,平胡可以胡
    if (isZimo || this.gang || gangCombos.length > 0) {
        paixing.push('平胡');
        paixingfen = paixingfen;
        if (this.gang) {
            paixingfen = paixingfen + 2;
        }
    }

    // 检查是否是同一色(即清一色牌型的基础)
    const special = this.players[player].special;
    if (this.checkQingYiSe(tempHand, special)) {
        paixing.push('清一色');
        paixingfen = paixingfen + 10;
    }

    this.paixingfen = paixingfen;
    return paixing.map(t => t).join(' ');
}

新建具体规则函数

// 大对子检查
checkDaDuizi(tiles) {
    // 碰碰胡牌数要求: 2,5,8,11,14
    const validLengths = [2, 5, 8, 11, 14];
    if (!validLengths.includes(tiles.length) || tiles[0] != tiles[1]) return false;
    if (tiles.length === 2 & tiles[0] === tiles[1]) return true;

    // 提取所有name值
    const names = tiles.map(item => item);
    // 统计数字出现频率
    const freq = {};
    for (const num of names) {
        freq[num] = (freq[num] || 0) + 1;
    }

    const counts = Object.values(freq);
    // 检查频率模式:一个数字出现2次,其余数字每个出现3次
    return counts.includes(2) && counts.filter(c => c === 3).length === counts.length - 1;
}
// 清一色检查
checkQingYiSe(tiles, special) {
    if (tiles.length === 0) return false;

    const firstTileType = tiles[0].charAt(1);

    // 检查手牌
    for (const tile of tiles) {
        if (tile.charAt(1) !== firstTileType) {
            return false;
        }
    }

    // 检查特殊牌组
    if (special && special.length > 0) {
        for (const group of special) {
            for (const tile of group.tiles) {
                if (tile.name.charAt(1) !== firstTileType) {
                    return false;
                }
            }
        }
    }

    return true;
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

每局麻将结束后下局开始前打开视频激励广告

暂无用户评论。