tetris game with ai made by pygame
Project description
PyTetris
Table of Contents
Overview
Simple tetris game made by pygame
Inspired by react-tetris
AI algorithm: Pierre Dellacherie (El-Tetris)
Screenshots
Play the Game
Install
pip3 install pytetris
Start
Run the following command in the environment which you installed the pytetris package or under the project folder:
python -m pytetris
or you can run the project in the project folder by
poetry run game
How to Play
In the home page, you can use ←→
or click the button to change to start level and use ↑↓
to change the start random line number.
↑
: Rotate the piece←→
: Move the piece left or right↓
: Speed up the pieceSPACE
: Drop down the pieceP
: Pause the gameS
: Mute controlR
: Reset the game (will loss current score)A
: Make AI on or off
Pierre Dellacherie
Pierre Dellacherie is a one-piece algorithm.
Six main features:
Landing Height
The height where the piece is put. Top or center of the piece is both ok.
Example:
:white_large_square::white_large_square::white_large_square::white_large_square::white_large_square::blue_square::white_large_square::white_large_square::white_large_square::white_large_square:
:white_large_square::white_large_square::black_large_square::black_large_square::blue_square::blue_square::black_large_square::black_large_square::white_large_square::white_large_square:
:black_large_square::black_large_square::black_large_square::black_large_square::blue_square::black_large_square::black_large_square::black_large_square::black_large_square::black_large_square:
:black_large_square::white_large_square::white_large_square::black_large_square::black_large_square::black_large_square::black_large_square::black_large_square::black_large_square::black_large_square:
Height: 4
or 3
Eroded Piece Cells Metric
The number of rows eliminated × The number of the squares the piece contributed
Example:
:white_large_square::white_large_square::white_large_square::white_large_square::white_large_square::blue_square::white_large_square::white_large_square::white_large_square::white_large_square:
:white_large_square::white_large_square::black_large_square::black_large_square::blue_square::blue_square::black_large_square::black_large_square::white_large_square::white_large_square:
:black_large_square::black_large_square::black_large_square::black_large_square::blue_square::black_large_square::black_large_square::black_large_square::black_large_square::black_large_square:
:black_large_square::white_large_square::white_large_square::black_large_square::black_large_square::black_large_square::black_large_square::black_large_square::black_large_square::black_large_square:
Eliminated lines: 1
Contribute: 1
Eroded Piece Cells Metric: 1 × 1 = 1
Board Row Transitions
The total number of row transitions. A row transition occurs when an empty cell is adjacent to a filled cell on the same row and vice versa.
Tips: Both sides of the wall is concerned as filled.
Example:
:negative_squared_cross_mark::white_large_square::white_large_square::black_large_square::black_large_square::white_large_square::white_large_square::black_large_square::black_large_square::white_large_square::white_large_square::negative_squared_cross_mark:
Single Row Transitions: 6
Board Column Transitions
The total number of column transitions. A column transition occurs when an empty cell is adjacent to a filled cell on the same column and vice versa.
Tips: Both sides of the wall is concerned as filled.
Example:
:negative_squared_cross_mark:
:white_large_square:
:black_large_square:
:black_large_square:
:white_large_square:
:black_large_square:
:negative_squared_cross_mark:
Single Column Transitions: 4
Board Buried Holes
The total number of column holes. A hole is an empty cell that has at least one filled cell above it in the same column.
Example:
:white_large_square:
:black_large_square:
:black_large_square:
:white_large_square:
:black_large_square:
Single Column Holes: 1
Board Wells
The total number of column wells. A well is a succession of empty cells such that their left cells and right cells are both filled.
Tips: As long as there are filled cells on both sides, the empty cell is concerned as well.
Example:
:white_large_square::white_large_square::black_large_square:
:black_large_square::white_large_square::black_large_square:
:black_large_square::black_large_square::black_large_square:
:black_large_square::white_large_square::black_large_square:
:black_large_square::white_large_square::black_large_square:
Wells: (1) + (1+2) = 4
Total
The evaluation function is a linear sum of all the above features. Bigger value will be better.
Feature | Weight |
---|---|
Landing Height | -4.500158825082766 |
Eroded Piece Cells Metric | 3.4181268101392694 |
Board Row Transitions | -3.2178882868487753 |
Board Column Transitions | -3.2178882868487753 |
Board Buried Holes | -7.899265427351652 |
Board Wells | -3.3855972247263626 |
Priority
priority = 100 * moving_steps + rotation_times
We choose the action which priority is lower if there are two or more same evaluation actions.
Result Preview
Project Development Setup
Clone the repository then install dependencies.
poetry install --no-root
or you can install the dependencies using pip:
pip3 install pygame numpy
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pytetris-1.0.0.tar.gz
.
File metadata
- Download URL: pytetris-1.0.0.tar.gz
- Upload date:
- Size: 8.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.8.3 Linux/5.3.0-53-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1da3d6e28975466dca319b246e20ca7914c3058b69aa4a142d48bb950e3d2422 |
|
MD5 | bce25a63308155d32fa3d767ac8cf56d |
|
BLAKE2b-256 | b3c7fa72c1d4a1899fe4e7ac2b41a31d7d3436f4073fdee01fd8459fdab3d063 |
File details
Details for the file pytetris-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: pytetris-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.8.3 Linux/5.3.0-53-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23ed3ac06e32a64ee6ad5c4963ff05452f3f99a5f8a7b2ea1aeb344a1f16849f |
|
MD5 | 7a5be72b487cadbb106fb2d427996e9b |
|
BLAKE2b-256 | 74392a83c19e2d47421c76172a7ae47d395ced890e25a8d6625fc07f431a79bc |