GLM-5.1 在「平台跳跃版」的评测结果
这是该 AI 模型在此测试用例上的详细评测结果。
基本信息
- 模型名称:GLM-5.1
- 用例名称:平台跳跃版
- 测试类型:网页生成
- 评测维度:游戏开发
系统提示词(System Prompt)
这是给 AI 模型的背景设定和角色指令:
你是一名资深 Web 前端开发工程师,专精于 HTML5 Canvas 游戏开发。 回答要求: 1. 所有代码(HTML、CSS、JavaScript)必须合并在单个 HTML 文件中,可直接在浏览器运行,无需任何外部依赖。 2. 使用 Canvas 2D API 实现游戏渲染,确保游戏循环(requestAnimationFrame)流畅稳定,物理逻辑(重力、碰撞)准确可靠。 3. 代码结构清晰,变量与函数命名语义化,关键逻辑处附有简短注释。 4. 优先保证核心玩法的完整性与可玩性,视觉效果在此基础上尽量精致。 5. 直接输出完整的 HTML 代码,不附加任何解释性文字。
用户提示词(User Prompt)
这是用户给 AI 模型的具体任务要求:
# 平台跳跃游戏(基础版) 请在单个 HTML 文件中实现一个完整可运行的平台跳跃游戏,具体要求如下: ## 技术约束 - 所有 HTML、CSS、JavaScript 代码写在同一个 `.html` 文件中 - 使用 HTML5 Canvas 绘制全部游戏画面 - 使用 `requestAnimationFrame` 驱动游戏主循环 ## 核心玩法 1. **角色控制**:← → 方向键左右移动,空格键或 ↑ 方向键跳跃 2. **重力系统**:角色受重力持续下落,跳跃后自然抛物线运动 3. **平台碰撞**:角色可站立在平台上方,落到平台顶部时停止下落(AABB 碰撞检测) 4. **金币收集**:场景中分布若干黄色圆形金币,角色接触即收集,右上角实时显示金币数 5. **终点过关**:到达右侧终点旗帜触发过关提示 6. **掉落重来**:角色掉出屏幕底部后,当前关卡重置重新开始 ## 关卡设计 - 设计 1 个完整关卡,包含至少 6 个高低错落的平台 - 平台使用至少 2 种不同颜色加以区分 - 金币数量不少于 5 枚,分布在需要跳跃才能到达的位置 - 关卡宽度超出屏幕,需要摄像机跟随角色水平滚动 ## 视觉要求 - **背景**:使用渐变色(如天空蓝渐变) - **角色动画**:至少 2 帧的走动循环动画(可用简单几何图形模拟像素风格) - **金币动画**:金币有旋转或闪烁效果(可用缩放模拟旋转) - **整体风格**:简洁像素风,色彩明快 ## UI 显示 - 左上角或右上角显示当前收集的金币数 - 过关时在画面中央显示「关卡完成」提示 - 掉落重置时有短暂的提示反馈
任务要求
AI 模型需要满足以下要求:
- 游戏主循环使用 requestAnimationFrame 驱动,重力与速度通过增量时间(deltaTime)或固定步长更新,角色运动流畅无抖动
- AABB 碰撞检测准确:角色能稳定站立在平台上,不出现穿透或卡墙现象,且仅从平台顶部可以落脚(侧面和底部不触发站立)
- 摄像机跟随系统正确实现:关卡宽度超出 Canvas,角色移动时视野平滑跟随,平台与金币坐标随摄像机偏移正确渲染
- 角色具备至少 2 帧走动动画,金币具备旋转或闪烁动态效果,背景使用渐变色,整体视觉风格统一
- 金币收集逻辑完整:接触即消失并累计计数,UI 实时更新;终点触发过关提示;掉出底部触发关卡重置
- 代码结构清晰,游戏对象(角色、平台、金币)以结构化方式组织,关键逻辑有注释,单文件内无外部资源引用
评测结果
综合得分
该模型在此用例的得分为:87.8 分(满分 100 分),已通过
基础难度评测结果
- 得分:87.8 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
```html 像素平台跳跃 * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: #222; display: flex; justify-content: center; align-items: center; height: 100vh; overflow: hidden; } canvas { background-color: #87CEEB; image-rendering: pixelated; image-rendering: crisp-edges; border: 4px solid #111; box-shadow: 0 0 20px rgba(0,0,0,0.5); } const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); // 游戏状态枚举 const STATE = { PLAYING: 0, WIN: 1, DEAD: 2 }; let gameState = STATE.PLAYING; let deathTimer = 0; // 输入状态 const keys = {}; window.addEventListener('keydown', e => { keys[e.code] = true; if(['Space','ArrowUp','ArrowDown'].includes(e.code)) e.preventDefault(); }); window.addEventListener('keyup', e => { keys[e.code] = false; }); // 物理常量 const GRAVITY = 0.6; const JUMP_FORCE = -11; const MOVE_SPEED = 4; // 关卡数据 const levelData = { platforms: [ { x: 0, y: 420, w: 300, h: 40, color: '#8B4513' }, // 棕色泥土 { x: 400, y: 360, w: 150, h: 30, color: '#556B2F' }, // 橄榄绿 { x: 650, y: 290, w: 200, h: 30, color: '#556B2F' }, { x: 950, y: 360, w: 120, h: 30, color: '#8B4513' }, { x: 1150, y: 260, w: 250, h: 30, color: '#556B2F' }, { x: 1500, y: 320, w: 150, h: 30, color: '#8B4513' }, { x: 1750, y: 220, w: 300, h: 40, color: '#556B2F' } // 终点平台 ], coins: [ { x: 460, y: 320 }, { x: 730, y: 250 }, { x: 990, y: 320 }, { x: 1250, y: 220 }, { x: 1560, y: 280 }, { x: 1870, y: 180 } ], flag: { x: 1980, y: 170 } }; // 游戏对象 let player, coins, cameraX, score, bgGradient; // 初始化/重置游戏 function init() { player = { x: 50, y: 300, w: 24, h: 32, vx: 0, vy: 0, grounded: false, facing: 1, // 1:右, -1:左 frameIndex: 0, frameTimer: 0 }; coins = levelData.coins.map(c => ({ ...c, r: 10, collected: false, animT: Math.random() * Math.PI * 2 })); cameraX = 0; score = 0; gameState = STATE.PLAYING; deathTimer = 0; // 预创建背景渐变 bgGradient = ctx.createLinearGradient(0, 0, 0, canvas.height); bgGradient.addColorStop(0, '#4A90E2'); bgGradient.addColorStop(1, '#87CEEB');...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】这是一个完成度很高的平台跳跃游戏实现。物理系统准确可靠,碰撞检测采用穿透检测方案有效避免高速穿透问题。核心玩法循环完整,金币收集、终点过关、掉落重置逻辑严谨,关卡设计合理且摄像机跟随流畅。视觉效果丰富,角色动画、金币旋转、旗帜飘动、视差云朵等细节到位,像素风格统一。代码结构清晰,单文件约束严格遵守,游戏对象组织合理。主要改进空间在于:引入 deltaTime 实现帧率无关的物理更新,增加重新开始按钮和金币计数显示,丰富角色动画帧数,以及进一步提取魔法数字为常量。整体而言,该实现在基础要求之上展现了良好的游戏开发素养和细节打磨能力。 【GEMINI】这是一个非常高质量的平台跳跃游戏实现。代码结构专业且易于扩展,视觉效果在满足基础要求的前提下做了很多精致的打磨(如视差云朵、旗帜动画)。物理逻辑准确,游戏循环稳定,是一款教科书级别的基础 Web 游戏开发示例。 【KIMI】该实现是一个功能完整的平台跳跃游戏基础框架,视觉风格统一且有一定精致度,代码结构适合初学者理解。主要短板在于物理碰撞系统的不完整——仅实现了顶部平台碰撞,缺少完整的AABB四方向碰撞响应,导致角色可以穿墙,这在平台跳跃游戏中是较为严重的体验问题。此外,游戏难度设计和关卡重置的反馈机制有优化空间。作为基础版实现,达到了可运行、可玩的状态,但距离生产级品质还需完善物理系统的健壮性。
进阶难度评测结果
- 得分:87.9 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
```html 进阶平台跳跃游戏 body { margin: 0; padding: 0; background-color: #111; display: flex; justify-content: center; align-items: center; height: 100vh; color: #fff; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; overflow: hidden; } #gameContainer { position: relative; box-shadow: 0 0 20px rgba(0,0,0,0.8); border: 2px solid #333; } canvas { display: block; background: #000; } #overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 10; } #overlay h1 { margin: 0 0 20px 0; font-size: 32px; text-shadow: 2px 2px 0 #000; } #overlay p { margin: 0 0 30px 0; font-size: 16px; color: #ccc; } button { padding: 10px 30px; font-size: 20px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer; box-shadow: 0 4px 0 #2e7d32; transition: transform 0.1s; } button:active { transform: translateY(4px); box-shadow: 0 0 0 #2e7d32; } .hidden { display: none !important; } 平台跳跃大冒险 方向键移动,空格/↑跳跃,支持二段跳 开始游戏 // ==================== 音效管理器 (Web Audio API) ==================== class AudioManager { constructor() { this.ctx = null; this.bgmPlaying = false; } init() { if (this.ctx) return; this.ctx = new (window.AudioContext || window.webkitAudioContext)(); } playTone(freq, duration, type = 'square', volume = 0.1, slide = 0) { if (!this.ctx) return; const osc = this.ctx.createOscillator(); const gain = this.ctx.createGain(); osc.type = type; osc.frequency.setValueAtTime(freq, this.ctx.currentTime); if (slide) osc.frequency.linearRampToValueAtTime(freq + slide, this.ctx.currentTime + duration); gain.gain.setValueAtTime(volume, this.ctx.currentTime); gain.gain.exponentialRampToValueAtTime(0.001, this.ctx.currentTime + duration); osc.connect(gain); gain.connect(this.ctx.destination); osc.start(); osc.stop(this.ctx.currentTime + duration); } playJump() { this.playTone(300, 0.1, 'square', 0.08, 400); } playDoubleJump() {...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】这是一个完成度很高的平台跳跃游戏实现。核心机制(二段跳、踩头消灭、无敌帧)准确实现且手感流畅,物理引擎使用 deltaTime 确保跨设备一致性。游戏系统完整覆盖了敌人 AI、4 种特殊机关、3 关卡渐进设计、检查点与生命系统,逻辑严谨。视觉方面实现了视差背景、多状态角色动画和丰富的粒子特效,音效系统通过 Web Audio API 程序化生成覆盖所有关键交互。代码采用面向对象架构,结构清晰易维护。主要改进空间在于:消失平台复原时间与需求不符(3 秒 vs 5 秒)、角色动画可更精细化、部分常量可提取优化代码可读性。整体达到了进阶平台跳跃游戏的设计要求,具备良好的可玩性和扩展性。 【GEMINI】这是一个教科书级别的 HTML5 游戏实现。在单文件约束下,不仅完美完成了所有核心功能和进阶要求,还在代码架构和程序化动画/音效方面表现出了极高的专业水准。游戏可玩性强,物理手感调教得当,视觉反馈丰富且符合逻辑。 【KIMI】该实现是一个功能较为完整的平台跳跃游戏,覆盖了需求中的大部分核心功能。3个关卡、4种机关、2种敌人、检查点系统、音效系统均已实现,基础可玩性有保障。但物理碰撞的边界情况处理不够严谨,视觉表现较为粗糙,部分数值与需求存在偏差(消失平台复原时间、相机边界等)。代码结构采用面向对象设计,组织清晰,适合作为原型或教学示例,但距离 polished 的商业/竞赛水准仍有差距。最大亮点是Web Audio API音效系统的完整实现和单文件零依赖的交付形式。
困难难度评测结果
- 得分:80.3 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
```html 高级平台跳跃 body { margin: 0; overflow: hidden; background: #000; display: flex; justify-content: center; align-items: center; height: 100vh; } canvas { display: block; image-rendering: pixelated; } const canvas = document.getElementById('c'); const ctx = canvas.getContext('2d'); const W = 960, H = 540; canvas.width = W; canvas.height = H; function resize() { let s = Math.min(window.innerWidth / W, window.innerHeight / H); canvas.style.width = (W * s) + 'px'; canvas.style.height = (H * s) + 'px'; } window.addEventListener('resize', resize); resize(); // --- Input --- const keys = {}; window.addEventListener('keydown', e => { keys[e.code] = true; if(['Space','ArrowUp','ArrowDown'].includes(e.code)) e.preventDefault(); }); window.addEventListener('keyup', e => { keys[e.code] = false; }); // --- Audio Manager --- class AudioManager { constructor() { this.ctx = null; this.musicNode = null; this.muted = false; } init() { if(this.ctx) return; this.ctx = new (window.AudioContext || window.webkitAudioContext)(); } play(type) { if(!this.ctx || this.muted) return; const c = this.ctx, t = c.currentTime; const o = c.createOscillator(), g = c.createGain(); o.connect(g); g.connect(c.destination); switch(type) { case 'jump': o.type='sine'; o.frequency.setValueAtTime(400,t); o.frequency.linearRampToValueAtTime(600,t+0.1); g.gain.setValueAtTime(0.2,t); g.gain.linearRampToValueAtTime(0,t+0.1); o.start(t); o.stop(t+0.1); break; case 'djump': o.type='sine'; o.frequency.setValueAtTime(500,t); o.frequency.linearRampToValueAtTime(800,t+0.1); g.gain.setValueAtTime(0.2,t); g.gain.linearRampToValueAtTime(0,t+0.1); o.start(t); o.stop(t+0.1); break; case 'wjump': o.type='triangle'; o.frequency.setValueAtTime(600,t); o.frequency.linearRampToValueAtTime(900,t+0.15); g.gain.setValueAtTime(0.2,t); g.gain.linearRampToValueAtTime(0,t+0.15); o.start(t); o.stop(t+0.15); break; case 'coin': o.type='square'; o.frequency.setValueAtTime(900,t); o.frequency.setValueAtTime(1200,t+0.05);...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】该候选输出实现了一个功能完整、架构清晰的高级平台跳跃游戏,所有核心需求均已覆盖:物理系统精准、四种能力系统逻辑正确、两个 Boss 战机制完整、粒子系统使用对象池管理、音效与动态音乐通过 Web Audio API 合成、6 关关卡系统与辅助功能(检查点、成就、速通计时)闭环完整。代码采用面向对象设计,单文件约束遵守良好。主要不足在于:视觉表现精细度有提升空间(角色动画较简化、粒子效果基础、视差背景层次感不足),部分细节需求未完全实现(Boss 2 小型血条、成就判定逻辑存在潜在 bug),背景音乐旋律较简单。整体而言,这是一个高质量的实现,达到了「困难级别」游戏的复杂度要求,适合作为可独立运行的 HTML5 游戏 demo。 【GEMINI】这是一个极高水准的 AI 生成游戏。它不仅在功能上完美覆盖了所有复杂的业务需求(如四种进阶能力、两种不同机制的 Boss、检查点系统),而且在技术实现上展示了深度的底层功底,特别是 Web Audio API 的动态音频合成和基于对象池的粒子系统。代码结构清晰,扩展性强,是一个教科书级别的单文件 HTML5 游戏实现。 【KIMI】该实现作为一个'困难级别'的高级平台跳跃游戏存在显著差距。核心玩法层面,物理碰撞粗糙、能力系统多处逻辑缺陷(尤其是滑墙跳和地面冲击)、Boss战设计失衡(Boss2无法到达、子弹系统失效)。视觉表现过于简陋,粒子效果未达要求的关键形态,视差背景层次不足,角色动画缺乏辨识度。音频系统勉强功能可用但音乐合成极为基础。代码架构满足基本OOP要求但耦合度高、扩展性差。最致命的是游戏流程完整性不足:死亡后无法从检查点重生直接导致核心机制失效,成就系统触发条件错误,关卡终点设计缺失。整体属于'有框架但填充不足'的实现,距离可玩的完整游戏尚有较大距离。
相关链接
您可以通过以下链接查看更多相关内容: