|
1 | 1 | # Super Chinese Checkers - Architecture Overview |
2 | 2 |
|
3 | 3 | ## Overview |
4 | | -The Super Chinese Checkers project is a digital implementation of the traditional Chinese Checkers board game. The architecture of the project is designed to handle game logic, user interface, and player interactions. |
| 4 | +The Super Chinese Checkers project is a digital implementation of a variation of the traditional Chinese Checkers board game. This version allows pieces to jump over other pieces at any distance, provided the landing spot is equidistant from the jumped piece. The architecture is designed to handle game logic, user interface, and player interactions on a rectangular 5x20 grid. |
5 | 5 |
|
6 | | -## Components |
| 6 | +## Implemented Components |
7 | 7 |
|
8 | 8 | ### 1. Game Logic |
9 | | -The game logic is implemented in `index.js` and includes the following components: |
| 9 | +The game logic in `index.js` includes: |
10 | 10 |
|
11 | 11 | - **Board Representation**: |
12 | | - - The board is represented as a 2D array where each cell can be empty or contain a piece. |
13 | | - - Each piece has a color and a position on the board. |
14 | | - - The board is initialized with pieces for two players, placed at opposite ends of the grid. |
| 12 | + - Implemented as a 5x20 grid of cells |
| 13 | + - Each cell can contain a player piece or be empty |
| 14 | + - Pieces are visually represented with red (Player 1) or blue (Player 2/AI) colored divs |
15 | 15 |
|
16 | 16 | - **Rules Engine**: |
17 | | - - The rules engine enforces the rules of Super Chinese Checkers. |
18 | | - - It checks for valid moves, including single-step moves and jumps over other pieces. |
19 | | - - It ensures that moves are within the boundaries of the board and follow the game's rules. |
20 | | - - The rules allow a piece to jump over another piece any number of empty spaces away, provided it can land the same number of empty spaces beyond it in a straight line. |
| 17 | + - Fully implements Super Chinese Checkers rules for valid moves: |
| 18 | + - Adjacent single-step moves |
| 19 | + - Jumping over pieces at any distance with the jumped piece at the midpoint |
| 20 | + - Multiple consecutive jumps tracked and displayed |
21 | 21 |
|
22 | 22 | - **Move Validation**: |
23 | | - - The move validation function checks if a move is valid based on the current state of the board. |
24 | | - - It verifies that the destination cell is empty and that the move follows the allowed patterns (single-step or jump). |
25 | | - - The function `isPathClear` checks if the path between the start and end cells is clear for movement, allowing for jumps over exactly one piece at the midpoint. |
| 23 | + - The `showValidMoves` function identifies and highlights all valid moves for a selected piece |
| 24 | + - `isPathClear` verifies that the path between cells is valid for jumping |
| 25 | + - Efficient pathfinding using a queue-based approach to find all possible moves |
26 | 26 |
|
27 | 27 | - **Game State Management**: |
28 | | - - The game state includes the current positions of all pieces, whose turn it is, and the status of the game (ongoing, won, drawn). |
29 | | - - Functions are provided to update the game state after each move and to check for win conditions. |
30 | | - - The `moveHistory` array keeps track of all moves made during the game, including the player, start and end positions, and timestamp. |
| 28 | + - Tracks current player's turn with visual indicators |
| 29 | + - Maintains move history with timestamp, start position, and end position |
| 30 | + - Supports AI vs. human and human vs. human game modes via toggle |
31 | 31 |
|
32 | 32 | ### 2. User Interface |
33 | | -- **Graphical Representation**: Renders the game board and pieces on the screen. |
34 | | -- **User Input Handling**: Captures and processes user inputs, such as selecting and moving pieces. |
35 | | -- **Animations and Effects**: Provides visual feedback for user actions, such as piece movements and captures. |
| 33 | +- **Graphical Representation**: |
| 34 | + - Grid-based board with responsive sizing |
| 35 | + - Colored pieces with visual feedback on selection |
| 36 | + - Highlighted cells for valid moves with jump count indicators |
36 | 37 |
|
37 | | -### 3. Player Interaction |
38 | | -- **Human Player**: Allows a human player to interact with the game through the user interface. |
39 | | -- **AI Player**: Implements artificial intelligence to play against the human player or other AI players. |
40 | | -- **Multiplayer Support**: Enables multiple human players to play against each other, either locally or over a network. |
| 38 | +- **User Input Handling**: |
| 39 | + - Click/touch to select pieces and make moves |
| 40 | + - Visual feedback for selected pieces and valid destinations |
| 41 | + - Mode toggle button for switching between AI and two-player modes |
| 42 | + |
| 43 | +- **Display Components**: |
| 44 | + - Turn indicator showing current player |
| 45 | + - Rules explanation display (hidden on mobile) |
| 46 | + - Game mode selector |
41 | 47 |
|
42 | | -### 4. Utilities |
43 | | -- **Configuration Management**: Handles game settings and preferences. |
44 | | -- **Logging and Debugging**: Provides tools for logging game events and debugging issues. |
45 | | -- **Persistence**: Saves and loads game states to allow players to resume games. |
| 48 | +### 3. Player Interaction |
| 49 | +- **Human Player**: Implemented with intuitive click/touch interaction |
| 50 | +- **AI Player**: Simple AI that prioritizes moves reducing column position (moving toward goal) |
| 51 | +- **Game Mode Toggle**: Switch between playing against AI or another human player |
46 | 52 |
|
47 | 53 | ## Data Flow |
48 | | -1. **User Input**: The user interacts with the game through the user interface. |
49 | | -2. **Input Processing**: The input is processed to determine the intended action. |
50 | | -3. **Move Validation**: The game logic validates the move according to the rules. |
51 | | -4. **Game State Update**: If the move is valid, the game state is updated. |
52 | | -5. **UI Update**: The user interface is updated to reflect the new game state. |
53 | | -6. **AI Processing**: If playing against an AI, the AI processes its move and the cycle repeats. |
54 | | - |
55 | | -## Conclusion |
56 | | -The architecture of the Super Chinese Checkers project is modular, with clear separation of concerns between game logic, user interface, and player interaction. This design allows for easy maintenance and potential future enhancements, such as adding new game modes or improving the AI. |
| 54 | +1. **User Input**: Player clicks/taps a piece of their color |
| 55 | +2. **Selection Processing**: System highlights the piece and calculates valid moves |
| 56 | +3. **Move Visualization**: Valid destinations are highlighted with indicators showing jump counts |
| 57 | +4. **Move Execution**: Player clicks a valid destination to complete their move |
| 58 | +5. **Game State Update**: Turn switches to the next player |
| 59 | +6. **AI Processing**: If AI mode is enabled and it's AI's turn, it automatically selects and makes a move |
| 60 | + |
| 61 | +## AI Implementation |
| 62 | +The AI uses a simple heuristic approach: |
| 63 | +- Evaluates all possible moves for each AI piece |
| 64 | +- Prioritizes moves that advance pieces toward the goal (reducing column position) |
| 65 | +- Executes moves with animated timing for better visibility |
| 66 | + |
| 67 | +## Responsive Design |
| 68 | +- Adapts to different screen sizes |
| 69 | +- Portrait orientation on mobile devices with rotated board |
| 70 | +- Simplified interface on smaller screens (hides rules) |
| 71 | + |
| 72 | +## Future Enhancements |
| 73 | +Potential improvements that could be implemented: |
| 74 | +1. Win condition detection and game completion flow |
| 75 | +2. More sophisticated AI with different difficulty levels |
| 76 | +3. Local storage for saving game state |
| 77 | +4. Customizable board sizes and colors |
| 78 | +5. More traditional hexagonal board representation |
0 commit comments