GLM-5.1 在「泡泡龙消除连连看」的评测结果
这是该 AI 模型在此测试用例上的详细评测结果。
基本信息
- 模型名称:GLM-5.1
- 用例名称:泡泡龙消除连连看
- 测试类型:网页生成
- 评测维度:游戏开发
系统提示词(System Prompt)
这是给 AI 模型的背景设定和角色指令:
你是一名资深 Web 前端开发专家,擅长使用原生 HTML5 Canvas 和 JavaScript 开发互动游戏。 回答要求: 1. 所有代码(HTML、CSS、JavaScript)必须写在单个 HTML 文件中,不依赖任何外部库或框架。 2. 使用 requestAnimationFrame 驱动游戏主循环,确保动画平滑不卡顿。 3. 代码结构清晰,变量与函数命名语义化,关键逻辑需有简短注释。 4. 优先保证核心游戏逻辑的正确性(发射、碰撞、消除),再考虑视觉美化。 5. 输出完整可直接在浏览器中运行的 HTML 文件,不得省略任何代码片段。
用户提示词(User Prompt)
这是用户给 AI 模型的具体任务要求:
请使用原生 HTML5 Canvas + JavaScript 在单个 HTML 文件中实现一个基础版泡泡龙消除游戏。 【游戏界面】 - Canvas 尺寸建议 400×600 px,背景为深色。 - 画布顶部预置 4~6 行彩色泡泡(至少 4 种颜色),泡泡以圆形表示,半径约 20px。 - 泡泡按行排列,奇偶行可水平错开半个泡泡宽度(简单网格即可,不强制六边形)。 【发射器】 - 画布底部中央放置一个三角形或箭头形状的发射器。 - 发射器跟随鼠标移动方向旋转,始终指向鼠标位置。 - 显示一条从发射器到鼠标方向的虚线瞄准辅助线(长度适中即可)。 - 点击鼠标左键发射当前泡泡;发射后自动准备下一个随机颜色的泡泡。 【飞行与碰撞】 - 泡泡沿鼠标点击方向匀速飞行。 - 碰到左右墙壁时反弹(水平速度取反)。 - 碰到顶部边界或已有泡泡时,停止并吸附到最近的网格位置。 【消除规则】 - 泡泡落定后,检测与其相邻(上下左右及斜向)的同色泡泡。 - 若同色连通泡泡数量 ≥ 3,则全部消除。 - 消除时给予简单的视觉反馈(如短暂闪烁或直接移除)。 【计分与结束】 - 每消除一个泡泡得 10 分,在画布上方显示当前分数。 - 当任意泡泡到达画布底部发射区时,显示「Game Over」并停止游戏。 - 提供「重新开始」按钮,点击后重置游戏。
任务要求
AI 模型需要满足以下要求:
- 游戏主循环使用 requestAnimationFrame 实现,泡泡飞行动画流畅无明显卡顿。
- 发射器能正确跟随鼠标方向旋转,并显示瞄准辅助线;点击后泡泡沿正确方向发射。
- 泡泡碰到左右墙壁能正确反弹,碰到顶部或已有泡泡时能吸附到合理的网格位置。
- 同色连通泡泡 ≥ 3 个时触发消除逻辑(使用 BFS 或 DFS 遍历连通区域),消除结果正确。
- 分数实时更新显示,游戏失败条件判定正确,「重新开始」功能可完整重置游戏状态。
- 代码结构清晰,核心逻辑(网格管理、碰撞检测、消除算法)各自独立,无明显 Bug。
评测结果
综合得分
该模型在此用例的得分为:83.0 分(满分 100 分),已通过
基础难度评测结果
- 得分:83.0 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
```html 泡泡龙消除游戏 body { margin: 0; padding: 0; background-color: #2c3e50; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; font-family: 'Arial', sans-serif; color: #fff; } #game-container { position: relative; box-shadow: 0 0 20px rgba(0,0,0,0.5); border-radius: 8px; overflow: hidden; } canvas { display: block; background-color: #1a1a2e; /* 深色背景 */ cursor: crosshair; } #ui-layer { position: absolute; top: 0; left: 0; width: 100%; pointer-events: none; /* 让鼠标事件穿透到canvas */ padding: 10px; box-sizing: border-box; display: flex; justify-content: space-between; align-items: center; } .ui-text { font-size: 20px; font-weight: bold; text-shadow: 2px 2px 4px rgba(0,0,0,0.8); color: #fff; } #game-over-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); display: none; /* 默认隐藏 */ flex-direction: column; align-items: center; justify-content: center; pointer-events: auto; } #game-over-screen h1 { margin: 0 0 10px 0; color: #e74c3c; font-size: 40px; } #game-over-screen p { font-size: 24px; margin-bottom: 20px; } button { padding: 12px 24px; font-size: 18px; background-color: #3498db; color: white; border: none; border-radius: 5px; cursor: pointer; box-shadow: 0 4px 6px rgba(0,0,0,0.3); transition: background-color 0.2s; } button:hover { background-color: #2980b9; } 分数: 0 下一个: Game Over 最终得分: 0 重新开始 const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); const scoreDisplay = document.getElementById('score-display'); const nextColorIndicator = document.getElementById('next-color-indicator'); const gameOverScreen = document.getElementById('game-over-screen'); const finalScoreSpan = document.getElementById('final-score'); const restartBtn = document.getElementById('restart-btn'); // 游戏常量 const W = canvas.width; const H = canvas.height; const R = 18; // 泡泡半径 const COLS = 10; const ROWS = 15; const SHOOTER_Y = H - 50; // 发射器Y坐标 const BUBBLE_SPEED...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】该实现完成了泡泡龙游戏的主要功能框架,包括网格初始化、BFS消除算法、悬空泡泡检测、墙壁反弹、发射器旋转和瞄准线等核心特性。代码结构清晰,工程质量较好。主要缺陷在于:消除无视觉反馈动画、snapToGrid吸附算法可能不够精准、重启时存在多循环叠加问题、角度限制逻辑有误差。整体而言是一个功能基本可用的泡泡龙游戏实现,达到了基础版本的要求,但在细节打磨和边界情况处理上还有提升空间。 【GEMINI】这是一个非常高质量的实现。模型不仅完全满足了所有基础需求(发射、碰撞、反弹、消除、计分、结束检测),还主动优化了游戏体验,例如增加了悬空检测逻辑和下一个泡泡提示。代码编写规范,逻辑严谨,是一个可以直接投入使用的成熟示例。 【KIMI】整体来说,这是一个非常优秀的泡泡龙消除游戏实现。核心游戏逻辑完整且正确,用户交互体验良好,代码结构清晰、质量高。在基础版的要求上,实现了所有关键功能,且有一定的扩展性。若消除反馈能再丰富一些,用户体验会更好。但瑕不掩瑜,这仍然是一份出色的作品。
进阶难度评测结果
- 得分:86.1 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
```html 泡泡龙消除游戏 body { margin: 0; padding: 0; background-color: #2c3e50; display: flex; justify-content: center; align-items: center; height: 100vh; font-family: 'Arial', sans-serif; overflow: hidden; } canvas { background-color: #1a252f; border-radius: 8px; box-shadow: 0 0 20px rgba(0,0,0,0.5); cursor: crosshair; } const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); // --- 常量定义 --- const COLS = 12; // 偶数行列数,奇数行列数为 COLS - 1 const R = 20; // 泡泡半径 const D = R * 2; // 泡泡直径 const DX = D; // 水平间距 const DY = Math.sqrt(3) * R; // 垂直间距 (等边三角形高) const OFFSET_X = R; // 奇数行水平偏移量 const CANVAS_WIDTH = COLS * D + R; // 画布宽度 const CANVAS_HEIGHT = 600; // 画布高度 const SHOOTER_Y = CANVAS_HEIGHT - 60; // 发射器Y坐标 const SPEED = 14; // 泡泡飞行速度 const INIT_ROWS = 7; // 初始泡泡行数 const MAX_ROWS = 20; // 网格最大行数 // 泡泡颜色库 const COLORS = ['#FF5252', '#4CAF50', '#2196F3', '#FFEB3B', '#9C27B0']; canvas.width = CANVAS_WIDTH; canvas.height = CANVAS_HEIGHT; // --- 游戏状态变量 --- let grid = []; // 二维数组存储泡泡颜色,null表示空 let score = 0; // 当前分数 let currentColor = ''; // 当前待发射泡泡颜色 let nextColor = ''; // 下一个待发射泡泡颜色 let flyingBubble = null; // 飞行中的泡泡对象 {x, y, vx, vy, color} let fallingBubbles = []; // 掉落动画中的泡泡数组 let angle = -Math.PI / 2; // 发射角度(默认向上) let gameState = 'playing'; // 游戏状态:playing, gameover let restartBtn = null; // 重新开始按钮区域 // --- 初始化 --- function init() { grid = []; score = 0; flyingBubble = null; fallingBubbles = []; gameState = 'playing'; restartBtn = null; // 初始化网格 for (let r = 0; r 像素坐标 (泡泡中心) function gridToPixel(r, c) { let x = c * DX + R + (r % 2 === 1 ? OFFSET_X : 0); let y = r * DY + R; return { x, y }; } // 像素坐标 -> 网格坐标 (寻找最近的空位) function pixelToGrid(px, py) { let bestR = -1, bestC = -1, bestDist = Infinity; // 估算可能落入的行范围,避免全局遍历 let approxR = Math.round((py - R) / DY); for (let r = Math.max(0, approxR - 1); r = 0 && nr = 0 && nc 0) { let curr = queue.shift(); let neighbors = getNeighbors(curr.r, curr.c); for (let n of neighbors) { let key =...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】这是一个高质量的泡泡龙游戏实现。代码完整可独立运行,无外部依赖,严格遵循原生 JS + Canvas 开发要求。六边形蜂窝网格的坐标系实现准确,奇偶行错位逻辑和邻居获取算法完全正确。消除逻辑和悬空检测均使用标准图遍历算法(BFS),逻辑严谨无漏洞。瞄准预览线能正确预测多次反弹,动画使用 requestAnimationFrame 驱动流畅无卡顿。UI 设计完整美观,交互体验友好,计分系统和游戏状态管理规范。代码结构清晰,关键逻辑有注释说明,可维护性强。整体达到了进阶版泡泡龙游戏的所有核心要求,是一个完成度很高的作品。 【GEMINI】这是一份高质量的泡泡龙游戏实现。代码不仅满足了所有功能要求,还在逻辑严密性和用户体验上做了不少优化。其六边形邻居算法和悬空检测算法是此类游戏的标准教科书式实现,代码注释清晰,结构优雅,且没有任何外部依赖,完全符合评测标准。 【KIMI】该实现完成了泡泡龙游戏的基础框架,核心功能如六边形网格、BFS消除、悬空检测、发射机制均有体现,代码结构相对清晰。但存在多个影响游戏体验的关键缺陷:邻居偏移量定义错误可能导致消除逻辑异常、发射角度限制过严严重降低可玩性、碰撞吸附算法不够健壮、瞄准预览功能不完整。整体属于'能运行但体验欠佳'的水平,需要修复核心逻辑bug并优化交互细节才能达到生产可用标准。
困难难度评测结果
- 得分:84.1 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
```html 高级泡泡龙 :root { --bg: #1a1a2e; --fg: #eaeaea; --accent: #e94560; --card: rgba(22, 33, 62, 0.9); --border: #0f3460; --muted: #8a8a9a; } * { margin: 0; padding: 0; box-sizing: border-box; user-select: none; } body { background: var(--bg); color: var(--fg); font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; overflow: hidden; } #game-container { position: relative; width: 100%; max-width: 480px; height: 100%; max-height: 800px; } canvas { display: block; width: 100%; height: 100%; border-radius: 8px; touch-action: none; } .overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(10, 10, 20, 0.85); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 10; backdrop-filter: blur(4px); transition: opacity 0.3s; } .hidden { display: none !important; } h1 { font-size: 2.5rem; color: var(--accent); margin-bottom: 1rem; text-shadow: 0 0 10px rgba(233, 69, 96, 0.5); } h2 { font-size: 1.8rem; color: var(--fg); margin-bottom: 0.5rem; } p { color: var(--muted); margin-bottom: 1.5rem; text-align: center; padding: 0 1rem; } .btn { background: var(--accent); color: #fff; border: none; padding: 12px 32px; font-size: 1.1rem; border-radius: 25px; cursor: pointer; margin: 8px; transition: transform 0.1s, background 0.2s; box-shadow: 0 4px 15px rgba(233, 69, 96, 0.4); } .btn:active { transform: scale(0.95); } .btn-secondary { background: transparent; border: 1px solid var(--accent); box-shadow: none; color: var(--accent); } .btn-mute { position: absolute; top: 10px; right: 10px; background: rgba(255,255,255,0.1); border: none; color: #fff; width: 40px; height: 40px; border-radius: 50%; font-size: 1.2rem; cursor: pointer; z-index: 20; } #hud { position: absolute; top: 10px; left: 10px; z-index: 5; pointer-events: none; } .hud-item { font-size: 1rem; font-weight: bold; text-shadow: 1px 1px 2px #000;...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】该实现完成了高级泡泡龙游戏的所有核心功能要求,六边形网格坐标系、BFS 消除算法、特殊泡泡逻辑、关卡系统、粒子特效、音效系统、移动端触控和排行榜功能均已实现且基本正确。代码结构清晰,模块化程度高,使用 ES6 Class 分离各子系统,渲染基于 requestAnimationFrame 保证帧率稳定。用户体验良好,瞄准预览线含反弹路径预测,粒子特效丰富,触控支持完整。主要扣分点在于:炸弹连锁逻辑未完整实现、碰撞检测未做空间优化可能影响性能、部分边界情况处理不够严谨。整体而言这是一个功能完整、代码质量较高的单文件 HTML5 游戏实现,达到了 Hard 级别的要求。 【GEMINI】这是一份高质量的 AI 生成代码。它不仅满足了所有硬性技术指标(六边形网格、BFS 算法、Web Audio、移动端适配),还在用户体验细节上表现出色,如反弹路径预测和丰富的粒子系统。代码组织严谨,模块化程度高,是一个非常成熟的泡泡龙游戏原型。 【KIMI】该实现作为泡泡龙游戏的基础版本可运行,核心玩法框架具备,但在关键算法严谨性、代码注释规范、视觉反馈丰富度方面与Hard级别要求存在差距。彩虹泡和炸弹泡的逻辑存在明显缺陷(伪实现或参数传递错误),六边形网格吸附算法边界处理不够健壮,粒子特效方向错误(拖尾向上飞),且代码注释严重不足。适合作为中级难度实现,但未达到Hard级别要求的'精确'和'完整'标准。
相关链接
您可以通过以下链接查看更多相关内容: