# Spacetris — COOPERATE Mode (Two-Player Co-Op) ## VS Code Copilot AI Agent Prompt > Implement a new **COOPERATE** play mode for Spacetris. > This is a **two-player cooperative mode** with a shared board and synchronized line clears. --- ## 1. Mode Overview ### Mode Name - **COOPERATE** ### Core Concept - Two players play **together**, not versus. - One shared game board with **double width**. - Each player is responsible for **their own half** of the board. - A line clears **only when BOTH halves of the same row are full**. --- ## 2. Grid Layout - Grid width: **20 columns** - Grid height: **standard height** (same as Endless/Challenge) - Column ownership: - Player 1 → columns `0–9` (left half) - Player 2 → columns `10–19` (right half) ### Visual Requirements - Draw a **vertical divider line** between columns 9 and 10. - Divider should be subtle but always visible. --- ## 3. Line Clear Rule (Critical) A row clears **only if**: - Player 1 half of the row is completely filled - AND Player 2 half of the row is completely filled If only one side is filled: - The row **does NOT clear** - Provide visual feedback: - Glow or pulse on the completed half - Optional hint on the incomplete half --- ## 4. Player Mechanics ### Piece Streams - Each player has their **own active piece** - Each player has their **own NEXT queue** - Both queues use the **same RNG seed** for fairness ### Controls - Player 1 controls only the left half - Player 2 controls only the right half - Players cannot move or rotate pieces into the other player’s half --- ## 5. Gravity & Timing - Gravity applies globally (same speed for both) - Lock delay is handled **per player** - One player locking does NOT block the other player --- ## 6. Failure Conditions Recommended: - Game over occurs only when **both players top out** Alternative (optional): - If either player tops out → shared loss --- ## 7. Scoring System - Score is **shared** - Line clears grant: - Base score - Cooperative bonus if both halves complete simultaneously - Combo bonus for consecutive cooperative clears No competitive scoring between players. --- ## 8. UI / HUD Requirements - Two NEXT panels (one per player) - Shared score display - Shared level display - Visual feedback for: - Half-filled rows - Successful cooperative clears Optional: - SYNC meter for advanced cooperative mechanics (future) --- ## 9. Data Model Suggestions ```cpp enum class PlayerSide { Left, Right }; struct PlayerState { PlayerSide side; ActivePiece piece; bool isAlive; }; struct Cell { bool occupied; PlayerSide owner; }; ```` --- ## 10. Line Clear Algorithm (Guidance) When checking for full rows: 1. For each row: * Check columns `0–9` for full (Player 1) * Check columns `10–19` for full (Player 2) 2. Only if **both are full**, mark row for clearing 3. Clear row normally and apply gravity to both halves 4. Update shared score and combos --- ## 11. Constraints * COOPERATE is a separate play mode * Do NOT reuse versus or garbage mechanics * Focus on clarity, fairness, and readability * Keep implementation modular (easy to expand later) --- ## 12. Acceptance Criteria * Two players can play simultaneously on one board * Each player fills only their half * Lines clear only when both halves are filled * Visual feedback clearly shows cooperative dependency * Mode integrates cleanly into the main menu --- ## 13. Optional Future Hooks (Do Not Implement Now) * Assist blocks * Shared power-ups * Cross-half interactions * Online co-op --- ## Short Summary for the Agent Implement a two-player COOPERATE mode with a 20-column board split into two halves. Each player fills their half independently. A line clears only when both halves of the same row are full. Score, level, and progress are shared. Add clear visual feedback and a divider between player halves.