过年间,我用秒哒开发了一款王者荣耀5v5匹配模拟器

0 阅读6分钟

开头先直接上链接

app-9nk0bntbpdkx.appmiaoda.com/

过年期间除了和家人团聚,其余的时间都是和家里的朋友们“上号”。

但是家里的朋友太多了,5个人完全不够。于是,我们就提议,不如打内战吧。

可打内战就会有一个问题,谁都想要和段位高的一伙。这样如何分配就成了问题

那作为程序员肯定不能容忍这种情况发生吧,那不如就搞一个匹配模拟器吧。

但是,大过年的我总不能手搓一个吧。我第一个想到的就是用AI智能体,百度的“秒哒”就是一个很好的选择。

接下来,直接展示我不断迭代后的需求文档。

王者荣耀5v5内战匹配系统需求文档

1. 应用概述

1.1 应用名称

浪荡的最公平匹配模拟器

1.2 应用描述

一个专为王者荣耀5v5内战设计的在线匹配系统,支持房主创建房间、人员名单管理、组队绑定、分路匹配、匹配记录管理等功能。系统提供清晰的命令行交互界面,确保每次匹配结果完全随机(遵守绑定规则),并可记录和查询历史对局信息。

2. 核心功能

2.1 房间管理功能

  • 房主创建房间:生成唯一房间号
  • 用户加入房间:输入房间号后方可进入房间
  • 房主权限:仅房主可执行匹配操作
  • 房间内可见性:只有进入房间的用户才能看见和输入信息

2.2 人员管理功能

  • 添加人员:支持输入人员姓名添加到参与名单
  • 删除人员:支持删除名单中的指定人员
  • 修改人员:支持修改名单中人员的信息
  • 查询名单:展示当前所有参与人员列表
  • 支持对参与玩家进行增、删、改、查操作
  • 参与人数无限制,超过10人时多余人员自动划入观战区

2.3 组队绑定机制

  • 支持玩家自主选择绑定,每组最多绑定3人
  • 绑定规则:绑定的玩家在下次匹配时必须被分配到同一支队伍(红队/蓝队二选一)
  • 支持添加绑定
  • 支持查看当前绑定关系
  • 支持删除指定绑定

2.4 分路匹配功能

  • 预设分路:上路、打野、中路、下路、辅助,每位玩家可设置/修改自己的分路
  • 分路配色规则(终端输出时区分颜色):
    • 上路:红色
    • 打野:黄色/金色
    • 中路:蓝色
    • 下路:绿色
    • 辅助:紫色
  • 两种匹配模式可选:
    • ① 带分路匹配(核心规则):
      • 优先保证每支队伍的分路完整性,同一分路有多名玩家时随机分配
      • 绑定玩家需优先保证同队,再按分路规则调整
      • 输出结果时,显示玩家+对应颜色的分路(如:李白(🟡打野))
    • ② 纯随机匹配:
      • 不考虑分路,仅随机分配队伍(遵守绑定规则)
      • 输出结果时隐藏分路信息,仅显示玩家名称(如:李白)
  • 匹配失败时,输出具体异常原因(如:匹配失败:打野分路仅1人,无法满足两队分路需求)

2.5 动态人数匹配逻辑

  • 废弃固定5v5验证逻辑,替换为动态人数分配:
    1. 动态确定上场人数:
      let playingCount = Math.min(players.length, 10);
      if (players.length === 9) {
      playingCount = 9; // 9人时4+5分配
      }
    2. 计算队伍大小:
      const teamSize = Math.floor(selectedPlayers.length / 2);
      const hasExtraPlayer = selectedPlayers.length % 2 === 1;
    3. 动态检查队伍容量:
      const maxTeamSize = targetTeam === redTeam && hasExtraPlayer ? teamSize + 1 : teamSize;
    4. 验证结果:
      if (redTeam.length + blueTeam.length !== selectedPlayers.length) {
      // 分配失败,重新尝试匹配
      }
  • 支持8-12人全场景动态分配:
    • 8人:4v4(剩余0人观战)
    • 9人:4v5(剩余0人观战)
    • 10人:5v5(剩余0人观战)
    • 11人:5v5(剩余1人观战)
    • 12人:5v5(剩余2人观战)
  • 人数分配失败时,输出具体异常原因(如:匹配失败:队伍人数总和与上场人数不符)

2.6 匹配记录管理

  • 每次匹配完成后,可自定义为该次对局记录命名(如:2026-02-16 晚间内战)
  • 手动录入该次对局的胜负结果(红队胜/蓝队胜)
  • 记录完整内容:对局名称、红队成员(带分路/纯名称,按匹配模式)、蓝队成员(同上)、观战区成员、绑定关系、胜负结果
  • 记录操作(增/删)失败时,输出具体异常原因(如:删除失败:该记录不存在)
  • 支持查看所有历史记录
  • 支持删除单条指定记录
  • 支持清空全部记录

2.7 交互功能

  • 提供清晰的命令行菜单交互
  • 操作流程符合用户直觉
  • 输入输出需友好,结果展示清晰
  • 采用清晰的命令行菜单交互,操作流程符合用户直觉

3. 功能说明

3.1 房间管理

  • 房主创建房间并生成房间号
  • 用户通过房间号加入房间后才能查看和输入信息
  • 只有房主具有匹配权限
  • 房间内信息共享

3.2 人员管理

  • 支持增删改查操作
  • 参与人数无限制,超过10人时多余人员自动划入观战区

3.3 绑定规则

  • 支持玩家自主绑定,每组最多3人
  • 绑定的玩家在下次匹配时必须在同一支队伍
  • 支持绑定管理操作

3.4 匹配规则

  • 支持带分路匹配和纯随机匹配两种模式
  • 动态确定上场人数和队伍分配
  • 保证匹配结果完全随机(遵守绑定规则)
  • 匹配失败时输出具体原因

3.5 结果展示

  • 带分路匹配时显示玩家+分路颜色
  • 纯随机匹配时仅显示玩家名称
  • 区分显示红队成员、蓝队成员、观战区成员
  • 展示清晰,便于查看

3.6 记录管理

  • 支持对局命名和胜负录入
  • 记录完整对局信息(按匹配模式决定是否包含分路)
  • 支持历史记录查询、删除、清空
  • 操作失败时输出具体异常原因

4. 代码要求

  • 代码模块化设计(按功能拆分函数)
  • 添加详细注释
  • 完善的异常处理(如输入非数字、操作不存在的玩家/记录等)
  • 代码可直接运行,无需额外依赖
  • 数据临时存储在内存中(单次运行有效)

最后,经过工作半年来的磨练,我对技术有了新的理解。我认为技术不单单可以用来换一份工作,更可以为我们的生活添姿加彩。如今,更是迎来了AI时代,有了AI的加持,我们不再需要手搓一整个项目,只用不断优化的prompt就可以让AI来完成我们的需求。所以我在尝试用学到的技术,不断地一点点改变我的生活,通过这样来提升自己。