更新记录
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;
}

收藏人数:
购买源码授权版(
导入插件并试用
赞赏(0)
下载 0
赞赏 0
下载 34151
赞赏 154
赞赏
京公网安备:11010802035340号