Anthropic: Claude Sonnet 4.6 在「Flappy Bird」的评测结果

这是该 AI 模型在此测试用例上的详细评测结果。

基本信息

  • 模型名称:Anthropic: Claude Sonnet 4.6
  • 用例名称:Flappy Bird
  • 测试类型:网页生成
  • 评测维度:游戏开发

系统提示词(System Prompt)

这是给 AI 模型的背景设定和角色指令:

你是一名资深 Web 前端开发专家,擅长使用 HTML5 Canvas 开发 2D 游戏。 回答要求: 1. 所有代码(HTML、CSS、JavaScript)必须封装在单个 HTML 文件中,可直接在浏览器运行,不依赖任何外部资源。 2. 所有图形(小鸟、管道、背景、地面)必须使用 Canvas 2D API 纯代码绘制,禁止引用外部图片或音频文件。 3. 游戏逻辑须包含完整的物理模拟(重力加速度、跳跃速度)、碰撞检测(矩形/圆形与管道边界)和状态机(等待/游戏中/结束)。 4. 代码结构清晰,变量命名语义化,核心逻辑(物理、渲染、碰撞)分函数组织,便于阅读。 5. 直接输出完整 HTML 代码,不附加任何解释文字。

用户提示词(User Prompt)

这是用户给 AI 模型的具体任务要求:

# Flappy Bird 游戏(基础版) 请生成一个完整的、可独立运行的 Flappy Bird 游戏,所有代码写在单个 HTML 文件中。 ## 游戏机制 1. 使用 HTML5 Canvas 作为唯一渲染画布(建议尺寸 480×640)。 2. 游戏分三个状态:**等待开始**(显示提示信息)→ **游戏中** → **游戏结束**。 3. **控制方式**:按下空格键或点击/触摸屏幕,小鸟获得一个向上的初速度(跳跃)。 4. **重力系统**:小鸟每帧受固定重力加速度影响持续下落,速度有上限(终端速度)。 5. **管道生成**:管道从右侧以固定速度向左移动,随机生成缺口高度,上下各一根,中间留固定宽度缺口(建议 150px);管道间距固定(建议 220px)。 6. **得分**:小鸟成功穿越管道中线时得 1 分。 7. **碰撞检测**:小鸟碰到上管道、下管道、画布顶部或底部地面时,游戏结束。 8. **游戏结束界面**:显示「Game Over」、本局得分,以及「点击重新开始」提示;点击或按空格后重置游戏。 ## 视觉要求 1. **背景**:蓝色天空渐变(上深下浅),绘制 2-3 朵白色椭圆云朵并缓慢向左滚动。 2. **地面**:底部绘制绿色/棕色地面条带,地面纹理(竖线或格子)随游戏速度向左滚动。 3. **小鸟**: - 使用椭圆形身体 + 圆形眼睛 + 三角形喙绘制,颜色鲜明(如黄色)。 - 实现**振翅动画**:小鸟身体上方绘制一个翅膀,翅膀角度随时间在上下两个角度之间周期性切换(每 8-10 帧切换一次),模拟扇动效果。 - 小鸟根据当前垂直速度旋转(上升时微微抬头,下落时低头)。 4. **管道**:使用绿色填充,管道顶端绘制一个略宽的「帽檐」矩形,管道使用从亮绿到深绿的线性渐变。 5. **分数**:游戏进行中在画布顶部居中显示当前分数(白色大字,带黑色描边)。 ## 技术要求 - 使用 `requestAnimationFrame` 驱动游戏循环。 - 碰撞检测使用矩形 AABB 方法(可对小鸟使用略小的碰撞盒以提升体验)。 - 管道离开画布左侧后从对象池中移除或复用,避免内存泄漏。 请直接输出完整的 HTML 代码。

任务要求

AI 模型需要满足以下要求:

  1. 游戏三态完整(等待→游戏中→结束),空格键与点击均可控制跳跃及重启,重力与跳跃物理参数合理,游戏可正常闭环运行。
  2. 碰撞检测准确:小鸟与上下管道、顶部、底部地面的碰撞均能触发游戏结束,穿越管道中线时正确计分且不重复计分。
  3. 小鸟具备振翅动画(翅膀周期性上下切换)和速度旋转效果;管道为绿色渐变并带顶端帽檐;背景含滚动云朵和滚动地面。
  4. 分数在游戏中实时显示,游戏结束界面清晰展示「Game Over」与最终得分,代码结构清晰、逻辑分函数组织。

评测结果

综合得分

该模型在此用例的得分为:92.7 分(满分 100 分),已通过

基础难度评测结果

  • 得分:92.7 分
  • 通过状态:已通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

```html Flappy Bird * { margin: 0; padding: 0; box-sizing: border-box; } body { background: #1a1a2e; display: flex; justify-content: center; align-items: center; height: 100vh; overflow: hidden; } canvas { display: block; border: 2px solid #333; box-shadow: 0 0 30px rgba(0,0,0,0.8); } (function() { "use strict"; // ─── Canvas 初始化 ─────────────────────────────────────────────────────────── const canvas = document.getElementById("gameCanvas"); const ctx = canvas.getContext("2d"); const W = canvas.width = 480; const H = canvas.height = 640; // ─── 游戏常量 ──────────────────────────────────────────────────────────────── const GRAVITY = 0.45; const JUMP_VELOCITY = -8.5; const TERMINAL_VEL = 12; const PIPE_SPEED = 2.8; const PIPE_WIDTH = 70; const PIPE_GAP = 155; const PIPE_INTERVAL = 220; // 管道水平间距(px) const GROUND_HEIGHT = 80; const BIRD_X = 120; const BIRD_RADIUS = 18; const HIT_SHRINK = 4; // 碰撞盒缩小量 // ─── 游戏状态枚举 ──────────────────────────────────────────────────────────── const STATE = { WAITING: "waiting", PLAYING: "playing", OVER: "over" }; // ─── 云朵数据 ──────────────────────────────────────────────────────────────── const clouds = [ { x: 80, y: 80, w: 90, h: 38, speed: 0.4 }, { x: 260, y: 50, w: 110, h: 42, speed: 0.3 }, { x: 400, y: 110, w: 80, h: 32, speed: 0.5 }, ]; // ─── 地面滚动偏移 ──────────────────────────────────────────────────────────── let groundOffset = 0; // ─── 游戏对象 ──────────────────────────────────────────────────────────────── let bird, pipes, score, state, frameCount, bestScore; // ─── 初始化 / 重置 ─────────────────────────────────────────────────────────── function init() { bird = { x: BIRD_X, y: H / 2 - 60, vy: 0, angle: 0, wingFrame: 0, wingDir: 1, wingAngle: -0.3, }; pipes = []; score = 0; frameCount = 0; state = STATE.WAITING; if (bestScore === undefined) bestScore = 0; // 预生成第一根管道(稍远一些) spawnPipe(W + 60); } // ─── 生成管道 ──────────────────────────────────────────────────────────────── function spawnPipe(startX) { const minTop = 60; const maxTop = H -...

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】这是一个高质量的Flappy Bird实现,完整覆盖了所有功能要求。游戏机制完整,物理参数合理,视觉效果丰富(渐变、动画、滚动效果),UX设计完善(三态界面、最高分记录、闪烁提示),代码结构清晰、模块化良好。小鸟的振翅动画、速度旋转、管道渐变帽檐、云朵滚动等细节均有实现。整体达到了较高的完成度,可直接在浏览器中运行,是一个接近生产级别的单文件游戏实现。 【GEMINI】这是一个近乎完美的 Flappy Bird 实现。开发者不仅严格遵守了所有技术与视觉要求,还在细节上做了大量打磨,如碰撞盒的微调、精美的 Canvas 绘图细节(渐变、阴影、圆角)、以及完整的状态机切换逻辑。代码组织专业,可读性极高,是一个教科书级别的 HTML5 游戏开发示例。 【KIMI】整体而言,这段代码实现了Flappy Bird游戏的基本功能,包括游戏逻辑、物理模拟、视觉渲染和用户体验等方面都做得比较好。代码结构清晰,变量命名合理,逻辑分函数组织,易于阅读和维护。作为一个基础版的Flappy Bird游戏,这段代码已经达到了很高的完成度和质量。

进阶难度评测结果

  • 得分:84.9 分
  • 通过状态:已通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

```html Flappy Bird 进阶版 * { margin: 0; padding: 0; box-sizing: border-box; } body { background: #1a1a2e; display: flex; justify-content: center; align-items: center; min-height: 100vh; overflow: hidden; touch-action: none; } #gameCanvas { display: block; cursor: pointer; } // ============================================================ // 初始化 Canvas // ============================================================ const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); const BASE_W = 400, BASE_H = 600; canvas.width = BASE_W; canvas.height = BASE_H; function resizeCanvas() { const scaleX = window.innerWidth / BASE_W; const scaleY = window.innerHeight / BASE_H; const scale = Math.min(scaleX, scaleY); canvas.style.width = BASE_W * scale + 'px'; canvas.style.height = BASE_H * scale + 'px'; } resizeCanvas(); window.addEventListener('resize', resizeCanvas); // ============================================================ // 音频系统 // ============================================================ let audioCtx = null; function getAudioCtx() { if (!audioCtx) audioCtx = new (window.AudioContext || window.webkitAudioContext)(); return audioCtx; } function playFlap() { const ac = getAudioCtx(); const buf = ac.createBuffer(1, ac.sampleRate * 0.08, ac.sampleRate); const d = buf.getChannelData(0); for (let i = 0; i { const osc = ac.createOscillator(); const g = ac.createGain(); osc.type = 'sine'; osc.frequency.value = freq; g.gain.setValueAtTime(0.3, ac.currentTime + i * 0.07); g.gain.exponentialRampToValueAtTime(0.001, ac.currentTime + i * 0.07 + 0.15); osc.connect(g); g.connect(ac.destination); osc.start(ac.currentTime + i * 0.07); osc.stop(ac.currentTime + i * 0.07 + 0.15); }); } function playHit() { const ac = getAudioCtx(); const buf = ac.createBuffer(1, ac.sampleRate * 0.3, ac.sampleRate); const d = buf.getChannelData(0); for (let i = 0; i { const osc = ac.createOscillator(); const g = ac.createGain(); osc.type = 'sine'; osc.frequency.value =...

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】该实现是一个功能相当完整的Flappy Bird进阶版,核心游戏机制、日夜切换、金币道具系统、音效系统均已实现,代码结构清晰,注释分区明确。主要不足包括:部分道具图标使用了emoji而非纯Canvas绘制(违反「所有视觉元素通过Canvas API绘制」约束);时间相关逻辑基于帧计数而非deltaTime(违反技术约束);背景音乐调度精度有限。总体而言,这是一个高质量的单文件游戏实现,在主流浏览器中应能稳定运行,视觉和音效表现良好,功能覆盖度高。 【GEMINI】这是一份极高水准的实现,完全满足并超越了所有进阶功能要求。开发者在单文件约束下,不仅实现了复杂的状态机和道具系统,还利用 Web Audio API 构建了完整的音频系统,视觉上的日夜平滑过渡和 UI 反馈非常精致,代码组织专业且易于维护。 【KIMI】整体而言,代码实现了Flappy Bird游戏的核心功能和大部分进阶功能,包括物理引擎、昼夜交替、金币道具系统等。Canvas绘图和Web Audio API音效也达到了一定水平。但代码在难度递增、日夜过渡动画、代码注释和性能优化等方面还有改进空间。

困难难度评测结果

  • 得分:87.9 分
  • 通过状态:已通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

我将创建一个完整的高级 Flappy Bird 游戏,包含所有要求的功能。 ```html 高级 Flappy Bird - AI版 * { margin: 0; padding: 0; box-sizing: border-box; } body { background: #000; display: flex; justify-content: center; align-items: center; height: 100vh; overflow: hidden; } canvas { display: block; image-rendering: pixelated; } // ============================================================ // 全局配置与常量 // ============================================================ const W = 480, H = 640; const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); canvas.width = W; canvas.height = H; // 响应式缩放 function resize() { const s = Math.min(window.innerWidth / W, window.innerHeight / H); canvas.style.width = s * W + 'px'; canvas.style.height = s * H + 'px'; } resize(); window.addEventListener('resize', resize); // ============================================================ // 音频系统 // ============================================================ const AudioSystem = (() => { let ctx_a = null; let bgNodes = {}; let bgPlaying = false; let bgBPM = 120; let bgInterval = null; let melodyStep = 0; const melodyNotes = [523, 587, 659, 698, 784, 880, 988, 1047]; const tensionNotes = [220, 233, 246, 261]; function init() { if (ctx_a) return; ctx_a = new (window.AudioContext || window.webkitAudioContext)(); } function playTone(freq, type, duration, vol, startTime, detune = 0) { if (!ctx_a) return; const osc = ctx_a.createOscillator(); const gain = ctx_a.createGain(); osc.connect(gain); gain.connect(ctx_a.destination); osc.type = type; osc.frequency.setValueAtTime(freq, startTime); osc.detune.setValueAtTime(detune, startTime); gain.gain.setValueAtTime(vol, startTime); gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration); osc.start(startTime); osc.stop(startTime + duration + 0.01); } function flap() { if (!ctx_a) return; const t = ctx_a.currentTime; // 短促噪声 + 音调 const buf = ctx_a.createBuffer(1, ctx_a.sampleRate * 0.1, ctx_a.sampleRate); const data = buf.getChannelData(0);...

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】这是一个功能相当完整的高级Flappy Bird实现,在单个HTML文件中实现了AI自动玩、粒子特效、动态音频、遗传算法等复杂功能。代码架构清晰,模块划分合理。AI决策逻辑正确,可视化完整(瞄准线+预测轨迹+决策状态)。粒子系统三类效果均已实现,视觉效果丰富。音频系统覆盖所有要求的音效类型,BPM动态变化有效。主要不足在于:日夜切换逻辑有重复触发问题、磁铁道具效果不够真实、背景音乐层次较简单、遗传算法模式下分数管理有潜在问题。整体而言是一个高质量的实现,达到了任务要求的绝大部分功能点。 【GEMINI】这是一个顶级的 AI 生成结果。它不仅完全满足了所有复杂的功能要求,还在 AI 深度(同时提供规则 AI 与遗传算法)、视觉表现力(精细的 Canvas 渲染与插值动画)以及音频动态响应上表现出了极高的专业水准。代码组织井然有序,是一个可以直接运行且具备极高完成度的作品。 【KIMI】整体而言,提供的代码实现了Flappy Bird游戏的核心功能和高级特性,包括AI决策、粒子系统、动态音频等。代码结构清晰,功能完整,性能良好,只是在代码的模块化和注释方面还有提升空间。

相关链接

您可以通过以下链接查看更多相关内容:

加载中...