[](https://pypi.org/project/n_is_python/)
# N-is: A Generalized Tetris Game
N-is is a terminal-based puzzle game that generalizes the classic Tetris concept to work with polyominos and polykings of any size from 1 to 6 blocks. Play traditional Tetris (4 blocks) or experiment with Tris (3 blocks), Dis (2 blocks), Pentis (5 blocks), or even Hexis (6 blocks)!
Example game of tetris with polykings.
## Features
- **Flexible Block Size**: Choose your game style with different block counts:
- **1**: "Monois" (single blocks)
- **2**: "Dis" (domino shapes)
- **3**: "Tris" (triomino shapes)
- **4**: "Tetris" (classic tetromino shapes)
- **5**: "Pentis" (pentomino shapes - more challenging)
- **6**: "Hexis" (hexomino shapes - extremely challenging, nearly unplayable)
Heptis will probably never be made because even hexis is not very fun, and heptis just simply has no reason to exist.
- **Interactive Menu System**: Run without arguments to access a user-friendly curses-based menu for selecting game options
- **Extended Mode**: Enable with `-e` flag to add non-standard polyominos (polykings) that can connect at vertices
- **Mix Mode**: Enable with `-m` flag to include polyominos of lower order (e.g., in Tetris mode, also get Tris, Dis and monois pieces)
- **Advanced Gameplay Features**:
- **Hold System**: Hold pieces for later use with 'c' key
- **Ghost Piece**: See where your piece will land
- **Hard Drop**: Instantly drop pieces with Enter key
- **Combo System**: Chain line clears for bonus points
- **Customizable Appearance**:
- Choose block and background colors with `-c` and `-bc` flags
- Change colors during gameplay with j/k and u/i
- **Progressive Difficulty**:
- Fall speed increases with each level by around 14.5%
- Scoring system with level and combo multipliers
- **Background Music**: Multiple music options available in the interactive menu
## Installation & Usage
### Prerequisites
- Python 3.x
- Standard Python libraries: `curses`, `random`, `argparse`, `math`
- Terminal with adequate size
- `polyshapes.py` file in the same directory
- [optional] `pygame` and `numpy` libraries and `/music` folder to support audio
### Running the Game
#### Installing using pip:
```bash
pip install n_is_python
```
This will automatically install dependencies, the game can be run with:
```bash
n_is
```
or
```bash
n-is
```
#### Installing numpy and pygame:
Simply use pip:
```bash
pip install pygame numpy
```
#### Interactive Mode
Simply run the game without arguments to access the interactive menu:
```bash
python n-is.py
```
Navigate the menu with:
- **Arrow keys**: Navigate options
- **Enter**: Select option
- **Number keys (1-6)**: Quick select
- **Q**: Quit menu
#### Command Line Mode
For direct game launch:
```bash
python n-is.py [OPTIONS]
```
**Arguments:**
- `N` (optional): Number of blocks (1-6). If omitted, interactive menu appears
- `-e`: Enable extended mode (polykings/pseudo-polyominos)
- `-m`: Enable mix mode (include lower-order polyominos)
- `-c COLOR`: Block color (`r`, `g`, `b`, `y`, `m`, `c`, `w` or 0-255)
- `-bc NUMBER`: Background color (0-255)
- `-h`: Show help message
**Examples:**
```bash
python n-is.py # Interactive menu
python n-is.py 4 # Classic Tetris
python n-is.py 3 -e # Tris with polykings
python n-is.py 5 -c g -bc 0 # Green Pentis on black background
python n-is.py 4 -m # Tetris with Tris and Dis pieces included
```
## Game Controls
### Movement & Rotation
- **Left/Right Arrow**: Move piece horizontally
- **Down Arrow**: Soft drop (faster fall + 1 point per cell)
- **Up Arrow**: Rotate piece clockwise
- **Enter**: Hard drop (instant drop + 2 points per cell)
### Game Features
- **C**: Hold current piece (swap with held piece)
- **P**: Pause game (press any key to resume)
- **Q**: Quit game
### Audio Controls
- **M**: Toggle all sound and music on/off
- **Page Up/Page Down**: Adjust music volume
### Visual Customization (During Game)
- **U/I**: Change main block color (previous/next)
- **J/K**: Change background color (previous/next)
## Game Mechanics
### Scoring System
- **Line Clears**: Points based on number of lines cleared simultaneously
- 1 line: 60 × (level + 1)
- 2 lines: 120 × (level + 1)
- 3 lines: 360 × (level + 1)
- 4 lines: 1200 × (level + 1)
- 5 lines: 4096 × (level + 1)
- 6 lines: 16384 × (level + 1)
- **Combo Bonus**: Additional points for consecutive line clears
- **Drop Bonus**: 1 point per cell for soft drop, 2 points per cell for hard drop
### Level Progression
- Fall speed increases by ~14.5% each level
- Minimum fall speed prevents game from becoming unplayable
## Music Attribution
The game includes background music from the following sources:
- **Clair de lune (Claude Debussy) Suite bergamasque** by [Laurens Goedhart](https://en.wikipedia.org/wiki/File:Clair_de_lune_(Claude_Debussy)_Suite_bergamasque.ogg) is licensed under [Creative Commons Attribution 3.0](https://creativecommons.org/licenses/by/3.0/)
- **Tetris Theme (Korobeiniki) arrangements** by [GregorQuendel](https://pixabay.com/users/gregorquendel-19912121/) are licensed under the [Pixabay License](https://pixabay.com/service/license-summary/):
- Piano arrangement
- Music box arrangement
- String arrangement
## Compatibility
| Operating System | Status | Notes |
|------------------|--------|-------|
| Linux | ✅ Fully Supported | Tested on Fedora 42 |
| Windows 11 | ❌️ wont work on windows because of lack of support with curses library|
| macOS | ❓ Expected to work | Unix-compatible, but untested |
## Troubleshooting
**Error: "Your terminal may not be supported, or it probably is too small"**
- Solution: Increase your terminal window size, or make font smaller
- For higher N values, larger terminals may be required
**Colors not displaying correctly:**
- Try different color values (0-255)
- Some terminals may have limited color support