MAHJONG
在 VS Code 里玩的局域网四人广东麻将。装在编辑器里,牌桌是一块可以拖到任意位置的侧边视图——左边写代码,右边打牌,按 Alt+M 一键切回正经工作。
支持四台电脑局域网联机,真人不够时由机器人补位。所有牌局权限集中在房主的机器上,其他人只接收自己能看到的信息。
功能
牌局规则
- 一副 136 张,不含花牌。
- 不允许吃牌;支持碰、明杠、暗杠、加杠。
- 标准和牌为 4 组面子加 1 对将。
- 特殊牌型全覆盖:七对、豪华七对、十三幺、十三不靠、七星不靠、九莲宝灯、清一色、混一色、字一色、清幺九、混幺九、绿一色、大三元、小三元、大四喜、小四喜、四暗刻、三杠子、四杠子。
- 和牌方式支持自摸,以及杠上开花、海底捞月、天胡、地胡。同一局只有一名赢家。
- 不支持抢杠胡。
- 支持多局比赛:房主可设 1、4、8 或 16 局,分数逐局累计,全部结束后显示最终排名。
- 可选红中赖子:红中可作真实"中"使用,也可在和牌计算时替代任意牌,替代后仍按原番表计分,红中本身不额外加番。
- 可选买马:胜局结束时抽取马牌,命中赢家加分。
房间与联机
- 房主的 VS Code 启动局域网服务,其他玩家连接加入。
- 房间固定四个座位,真人不足时自动由机器人补位;机器人和真人走同一套规则校验。
- 支持创建房间时设置可选密码。
- 支持 UDP 自动发现房间,也支持手动输入 IP 和端口(广播不可用时的后备方式)。
- 游戏中途短时间断线会自动保留座位,重连后恢复原座位和手牌。
- 私有信息隔离:每位玩家只能收到自己的手牌,其他人的手牌只在界面上显示张数和背面占位。
牌桌界面
- 牌桌是可移动的独立视图,默认在底部面板,可拖到左侧或右侧侧栏。
- 四方座位、剩余牌数、各家弃牌、自己的手牌与可用操作都在一块紧凑布局里。
- 鼠标悬停副露可查看具体牌面。
- 内置规则速查面板,随时查看各牌型的番数和计分方式。
- 红中赖子模式开启时,红中带"赖"标识和虚线边框。
- 切换视图、移动位置或临时隐藏,都不会断开房间连接。
音效与背景音乐
- 出牌按座位音色播报牌名,碰、杠、自摸、食糊、流局都有对应语音,四个座位各一种音色(粤语)。
- 内置 4 首背景音乐,可在牌桌底栏开关和切曲。
- 音效和背景音乐默认都关闭,可单独开启。
安装
需要 VS Code 1.85 或更高版本。
方式一:在扩展面板安装
- 按
Ctrl+Shift+X 打开扩展面板。
- 点击右上角
...,选择 Install from VSIX...。
- 选择安装包文件
guangdong-mahjong-vscode-0.3.0.vsix。
方式二:命令行安装
code --install-extension .\guangdong-mahjong-vscode-0.3.0.vsix --force
安装完成后执行 Developer: Reload Window,或重启 VS Code。可以在扩展面板搜索 MAHJONG,扩展 ID 为 Azusa.guangdong-mahjong-vscode。
快速开始
房主(开房间的人)
- 按
Ctrl+Shift+P,执行 Mahjong: Create LAN Room。
- 在弹出的输入框里填写房间密码,不需要密码就直接留空回车。
- 房间创建成功会提示局域网地址和端口,把它告诉其他三个人。牌桌会自动打开。
其他玩家(加入房间)
- 执行
Mahjong: Join LAN Room。
- 依次填写房主的 IP 地址、端口、自己的昵称,密码没有就留空。
- 加入成功后牌桌自动打开。
所有人点击"准备"后,房主点击"开始"即可开局。
也可以在牌桌里直接填写表单来创建或加入房间,不会再弹出输入框。
其他电脑必须使用房主提示的局域网 IP,不能填 127.0.0.1。
使用说明
命令
按 Ctrl+Shift+P 打开命令面板,输入 Mahjong 可以看到全部命令。
| 命令 |
作用 |
Mahjong: Create LAN Room |
创建局域网房间并作为房主 |
Mahjong: Join LAN Room |
加入其他人的房间 |
Mahjong: Open Table |
打开牌桌视图 |
Mahjong: Toggle Boss Mode |
在牌桌和资源管理器之间切换 |
快捷键 Alt+M:切换到显示项目文件的资源管理器(老板模式),再按一次切回牌桌。切换不会退出房间,也不会清除当前牌局。
房间设置
首局开始前,房主可以点击"房间设置"调整:
- 总局数:1 / 4 / 8 / 16 局,默认 4 局。
- 买马:默认关闭,开启后每局抽 2 匹。
- 红中赖子:默认关闭。
第一局开始后设置会锁定,比赛全部结束后才能为下一场重新设置。
音效与背景音乐
在 VS Code 设置里搜索 mahjong,可以分别开关两项,也可以直接在牌桌底栏操作。
| 设置项 |
默认值 |
说明 |
mahjong.sfx.enabled |
false |
牌桌音效,出牌报牌及各操作语音 |
mahjong.bgm.enabled |
false |
背景音乐,可在底栏切换曲目 |
牌桌位置
牌桌默认显示在 VS Code 底部面板,和"终端""端口""问题"等视图并列。
- 拖动牌桌视图标题,或在标题菜单里选择"移动视图",可以把它移到左侧或右侧侧栏。
- VS Code 不支持把扩展 Webview 嵌入内置视图的内部区域。
- 如果牌桌没出现,执行
Mahjong: Open Table;升级版本后仍看不到则执行 Developer: Reload Window。
计分规则
当前默认值,主要针对常见广东麻将玩法设计:
- 最低 1 番,封顶 8 番。
- 自摸额外加 1 番。
- 杠分独立结算:明杠 1 分、暗杠 2 分、加杠 1 分。
- 买马默认 2 匹,命中赢家每匹 1 分。
- 四家分数变动总和为零。
牌桌上的"规则"按钮可以打开完整番数表。
已知限制
- 不支持普通点炮和一炮多响,目前只能自摸和牌。
- 不支持抢杠胡。
- 牌面使用文字和字符表示,暂未提供图片牌面、动画和主题皮肤。渲染层已做抽象,后续可直接替换。
- 主要针对本地 Extension Host。Remote SSH、WSL、Dev Container 环境下房间服务会跑在远程机器上,不作为支持场景。
- 房主退出会直接结束房间,不做房主迁移。
联机故障排查
- 命令搜不到:确认 VSIX 装在了当前这个 VS Code,然后执行
Developer: Reload Window。
- 别人连不上:确认用的是房主提示的局域网 IPv4 地址而非
127.0.0.1,检查端口和密码;Windows 防火墙需要允许该 TCP 端口的入站连接。也可以改用手动输入 IP 的方式,不依赖 UDP 发现。
- 牌桌空白:执行
Mahjong: Open Table,并查看"输出"面板里的 MAHJONG 通道。
- 看不到自己的牌:确认昵称填写正确且已加入房间(不是只打开了牌桌)。
音频版权
背景音乐为 Kevin MacLeod(incompetech.com)的作品,采用 CC BY 4.0 授权:《Eastern Thought》《Wallpaper》《Carefree》《Daily Beetle》。
语音由 Edge TTS 生成,不是真人录音。若要商业发布,建议替换为自有录音。
许可
MIT