A complete Python implementation of Skyjo, a popular card game where players aim to minimize their points by revealing, replacing, and discarding cards on a 3×4 grid. This project includes the full game logic, player management, deck handling, and a GUI interface using Tkinter.
skyjo-Python-Implementation/source
│
├── main.py # Entry point of the program
├── game.py # Game logic (turns, deck, discard pile, final round)
├── player.py # Player class (grid, score, actions)
├── card.py # Card class (value, revealed/hidden state)
├── deck.py # Deck class (card distribution, draw, discard)
└── gui.py # Tkinter GUI for interactive gameplay
Full Skyjo game logic with:
- 3×4 player grid
- Card drawing from deck or discard pile
- Card replacement and discarding
- Triple-column elimination rule
- Round scoring
- Final round detection
Graphical User Interface:
- Display player grids
- Highlight current player
- Interactive card selection
- Real-time score updates
Supports 2 players (expandable to more)
Automatic deck reshuffling when empty
Easy-to-extend architecture for additional rules or players
Make sure you have Python 3.12.10 installed.
Clone the repository
git clone https://github.com/ElliotKoch/Skyjo-Python-Implementation-main.git cd Skyjo-Python-Implementation-mainCreate a virtual environment
python -m venv .venv # Windows .venv\Scripts\activate # Linux/Macsource .venv/bin/activate
Install dependencies
pip install -r requirements.txt
Run the game
python main.py
Deactivate the virtual environment (optional)
deactivate
Each player starts with a 3×4 grid of face-down cards.
Players take turns drawing a card from the deck or the discard pile.
The drawn card can replace a card in the grid or be discarded.
After discarding, the player can reveal a hidden card instead.
Revealing all cards triggers the final round:
- Other players get one more turn.
- Scores are tallied at the end.
Columns with 3 identical revealed cards are removed automatically.
The player with the lowest total score at the end of the round wins.
The project relies on the following Python packages (as per requirements.txt):
- Tkinter (built-in GUI library)
- asttokens, attrs, beautifulsoup4, bleach, docopt, executing, fastjsonschema, ipython, jedi, Jinja2, jsonschema, matplotlib-inline, nbclient, nbconvert, nbformat, packaging, pipreqs, prompt_toolkit, Pygments, requests, tornado, typing_extensions, and more.
See full
requirements.txtfor all dependencies.
Contributions are welcome! You can:
- Add more players or AI opponents
- Improve GUI visuals
- Add new game rules or modes
- Optimize game logic or card handling
This project is MIT licensed – feel free to use and modify it freely.
- The game is currently tested for 2 players.
- Ensure your terminal or IDE supports Tkinter GUI windows.
- Python 3.12.10 is recommended for full compatibility with
requirements.txt.