Clone 当前仓库
出于安全考虑,全站已禁用HTTPS协议对仓库进行操作、下载仓库压缩包,请开发者按要求配置SSH密钥后使用SSH协议对仓库进行操作。
2025-02-01 13:16:18 +08:00
2025-02-01 13:09:28 +08:00
2025-02-01 13:09:28 +08:00
2025-02-01 13:09:28 +08:00
2025-02-01 13:16:18 +08:00

8人标准局狼人杀在线游戏

简介

基于 Node.js、MySQL 和 Vue.js 开发的在线狼人杀游戏系统。支持8人标准局包含预言家、女巫、猎人等角色实现了完整的游戏流程和实时通信。

游戏截图

图1 图2 图3 图4 图5 图6

技术栈

后端

  • Node.js + Express
  • WebSocket
  • MySQL
  • JWT认证

前端

  • Vue.js
  • WebSocket客户端
  • CSS Grid布局

功能特点

1. 游戏规则

  • 8人标准局
  • 角色配置:
    • 狼人 × 3
    • 预言家 × 1
    • 女巫 × 1
    • 猎人 × 1
    • 平民 × 2

2. 游戏流程

参考代码:

function startGame(room) {
  if (room.status !== 'locked') {
    console.warn('房间未锁定,无法开始游戏');
    return;
  }

  // 初始化 gameData
  gameData.isGameStarted = true;
  gameData.createTime = new Date();
  gameData.chats = [];
  gameData.rolesMap = {};
  gameData.sheriffCandidates = [];
  gameData.sheriffVotes = {};
  gameData.isSheriffElected = false;
  gameData.dayCount = 1;
  gameData.isNight = false;
  gameData.wolfVotes = {};
  gameData.seerChoice = null;
  gameData.witchSaveAvailable = true;
  gameData.witchKillAvailable = true;
  gameData.witchSaveTarget = null;
  gameData.witchKillTarget = null;
  gameData.hunterKillTarget = null;
  gameData.dayVotes = {};
  gameData.reSheriffVoteNeeded = false;
  gameData.reSheriffCandidates = [];

  // 1. 分配角色
  assignRoles(room);

  // 2. 广播 5秒 准备时间后进入警长竞选
  broadcastMessage('系统', {
    type: 'game_start',
    message: '游戏开始5秒后进入警长竞选...',
  });

  broadcastCountdown(5, '警长竞选准备', () => {
    // === 新增让前端有一丝缓冲3秒再进下一个环节 ===
    setTimeout(() => {
      // 进入警长竞选
      enterSheriffElection(room);
    }, 3000);
  });
}
  1. 警长竞选阶段
  2. 夜晚阶段
    • 狼人杀人
    • 预言家验人
    • 女巫救人/毒人
  3. 白天阶段
    • 遗言环节
    • 自由讨论
    • 投票放逐
  4. 猎人技能(死亡时可带走一名玩家)

3. 实时通信

  • 基于WebSocket的实时消息系统
  • 支持游戏状态同步
  • 支持实时聊天

4. 用户系统

  • 用户注册/登录
  • JWT身份验证
  • 游戏历史记录
  • 胜率统计

安装部署

1. 环境要求

  • Node.js >= 12
  • MySQL >= 5.7
  • 现代浏览器支持WebSocket

2. 后端部署

cd server
npm install
# 配置数据库连接
vim db.js
# 启动服务
node server.js

3. 前端部署

cd front
npm install
npm run serve  # 开发环境
npm run build  # 生产环境

项目结构

后端核心文件

  • server.js: 主服务器入口
  • game.js: 游戏核心逻辑
  • websocket.js: WebSocket服务
  • room.js: 房间状态管理
  • auth.js: 用户认证
  • db.js: 数据库连接

前端核心组件

  • GameBoard.vue: 游戏主界面
  • WaitingRoom.vue: 等待大厅
  • App.vue: 应用入口

API接口

游戏相关

  1. 警长竞选: /game/sheriff_join
  2. 狼人杀人: /game/wolf_choose
  3. 预言家查验: /game/seer_look
  4. 女巫救/毒: /game/witch_save, /game/witch_kill
  5. 猎人技能: /game/hunter_kill
  6. 投票放逐: /game/vote

房间管理

  1. 加入房间: /room/join
  2. 退出房间: /room/leave
  3. 获取房间状态: /room/status

注意事项

  1. 游戏进行中断线处理
  2. 角色技能使用限制
  3. 游戏结束条件判定
  4. 数据库事务处理

开发计划

  • 增加更多游戏模式
  • 添加语音聊天功能
  • 优化游戏界面
  • 添加排行榜系统
  • 实现观战功能

贡献指南

欢迎提交Issue和Pull Request来帮助改进项目。

许可证

MIT License

Description
基于Node.js、MySQL和Vue.js开发的8人标准局狼人杀游戏,使用WebSocket通信
Readme 294 KiB
Languages
Vue 50.9%
JavaScript 48.6%
HTML 0.5%