- Add a single-player mode with an AI opponent using minimax with alpha-beta pruning
- Multiple difficulty levels (Easy: random moves, Medium: shallow search, Hard: deep search with heuristics)
- The BaghChal game tree is well-studied and tractable for AI - good evaluation heuristics exist for both sides
- Implement a move history stack to allow undo/redo
- Show a move log panel (e.g., "Sheep placed at C3", "Kitty D1 captured Sheep at C2")
- Allow replaying a finished game move by move
- Rule: After all 20 sheeps are placed, no move may return the board to a configuration that has already occurred during the game
- Effect: Such moves are ILLEGAL (excluded from valid moves), not losing moves
- Applies to: Both sheeps and kittens equally
- Phase: Only during MOVEMENT phase (not during PLACEMENT phase)
- Implementation approach: Track a
Set<string>of board state hashes. IngetValidMovesForPiece(), filter out moves that would produce a previously-seen hash. AddboardHistory: Set<string>toGameState. - Note: This is the only official BaghChal rule not currently implemented. There is no official "N moves without capture = draw" rule in standard BaghChal.
- Optional "no repeat" rule toggle in settings (since some casual players may not want this)
- Interactive step-by-step tutorial teaching the rules
- Highlight suggested moves for beginners
- Explain why a move is good (e.g., "This blocks a kitty's escape route")
- Animate piece movement (slide from old position to new)
- Capture animation (sheep fades/shrinks when captured, kitty slides through)
- Board shake or flash on capture
- Victory celebration animation (confetti, bouncing winner emoji)
- Tap sound when placing/selecting pieces
- Slide sound when moving
- Dramatic capture sound
- Win/lose jingles
- Multiple board skins (wooden, stone, meadow, night mode)
- Custom piece themes (different animal pairs, abstract shapes)
- Dark mode support
- Light haptic on piece selection
- Medium haptic on move execution
- Strong haptic on capture
- Replace the current View-based line drawing with
react-native-svg - Cleaner diagonal lines, better scaling across screen sizes
- Smoother rendering on low-end devices
- Consider
useReducerinstead ofuseStatefor game state (more explicit action types) - Or use Zustand for cleaner state management if the app grows
- Unit tests for the game engine (jest)
- Test all 56 adjacency edges
- Test capture from every position
- Test win condition edge cases
- Test phase transition at exactly 20 sheep
- Integration tests for the UI (React Native Testing Library)
- Snapshot tests for screen components
- Memoize
BoardLinescomponent (it never changes) - Memoize individual intersection components based on their state
- Use
React.memoon Board to prevent re-renders when only modal state changes
- Add
accessibilityLabelto all interactive elements ("Sheep at row 2 column 3, selected") accessibilityRole="button"on intersections- Screen reader announcements for game events ("Kitty captured a sheep!")
- High-contrast mode for colorblind players
- Online multiplayer via WebSockets or Firebase
- Room codes for private matches
- Matchmaking queue
- Track win/loss record for each side
- Average game length
- "Achievements" system (e.g., "Win as Sheeps without losing any", "Capture 5 sheeps in under 10 moves")
- Leaderboard for online play
- Configurable board size (7x7 for a longer game)
- Adjustable sheep/kitty counts
- Speed mode with move timer
- Handicap options (e.g., kittens start with only 3)
- Share game replays
- Challenge friends via deep links
- In-game chat for online matches
- Design a proper app icon (not the default Expo one)
- Create splash screen with the game logo
- Add app store screenshots and description
- Set up EAS Build for iOS/Android builds
- Optimize for web with responsive layout
- Keyboard controls (arrow keys to navigate, Enter to select)
- Mouse hover effects showing valid moves
- Support multiple languages (Nepali would be fitting given BaghChal's origins)
- RTL layout support