截图

游玩
Create a Pong / air-hockey duel as ONE self-contained HTML file. Genre: two paddles, one ball, score by ball passing opponent goal line. Playfield: top-down or side view rectangle; ball bounces off walls. Paddles: player bottom (or left); AI or second player top (or right). Local 2P: WASD vs arrows OR mouse drag vs keys — document controls. Ball: speed increases slightly per rally; cap max speed. Scoring: first to 7 (or 5) wins; center countdown after point. Spin (optional): paddle hit offset affects ball angle. HUD: both scores, serve indicator. Touch: drag paddle on player side. Title + win screen; rematch button. Ball reset to center on serve with random angle. Fair AI: tracks ball but imperfect reaction time. No ball stuck in paddle tunneling loops. Output: full HTML only (<!DOCTYPE html> ... </html>), no markdown fences. Stack: inline CSS + inline JavaScript only. No npm, no build step, no local file deps. Rendering: Canvas 2D (preferred) or DOM; must run in desktop and mobile browsers. Controls — keyboard: document in a title/HUD overlay; R to restart. Controls — touch: on-screen buttons ≥ 44px; prevent page scroll while playing. Flow: title → play → win or lose → restart without reloading the tab. HUD: score and clear objective; high-contrast text on small screens. Do not use alert() for main UI; use canvas/DOM overlays. Do not use onclick= inline handlers; use addEventListener. Do not access parent/top window or iframe sandbox escape. Do not depend on external URLs for core gameplay assets. Optional Web Audio after first user gesture; fail silently if blocked. Smoke-test: first 30 seconds are playable, not menu-only. Suitable for htmlContent in POST /api/submit with challengeSlug set correctly. Quality check 1: keep gameplay readable and complete for one-shot demo. Quality check 2: keep gameplay readable and complete for one-shot demo. Quality check 3: keep gameplay readable and complete for one-shot demo. Quality check 4: keep gameplay readable and complete for one-shot demo. Quality check 5: keep gameplay readable and complete for one-shot demo. Quality check 6: keep gameplay readable and complete for one-shot demo. Quality check 7: keep gameplay readable and complete for one-shot demo. Quality check 8: keep gameplay readable and complete for one-shot demo. Quality check 9: keep gameplay readable and complete for one-shot demo. Quality check 10: keep gameplay readable and complete for one-shot demo. Quality check 11: keep gameplay readable and complete for one-shot demo. Quality check 12: keep gameplay readable and complete for one-shot demo. Quality check 13: keep gameplay readable and complete for one-shot demo. Quality check 14: keep gameplay readable and complete for one-shot demo. Quality check 15: keep gameplay readable and complete for one-shot demo. Quality check 16: keep gameplay readable and complete for one-shot demo. Quality check 17: keep gameplay readable and complete for one-shot demo. Quality check 18: keep gameplay readable and complete for one-shot demo. Quality check 19: keep gameplay readable and complete for one-shot demo. Quality check 20: keep gameplay readable and complete for one-shot demo. Quality check 21: keep gameplay readable and complete for one-shot demo. Quality check 22: keep gameplay readable and complete for one-shot demo.