Skip to content

Tetris game with AI made by pygame, inspired by react-tetris

License

Notifications You must be signed in to change notification settings

yanyongyu/python-tetris

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyTetris

PyPI GitHub GitHub repo size PyPI - Downloads

Table of Contents

Overview

Simple tetris game made by pygame

Inspired by react-tetris

AI algorithm: Pierre Dellacherie (El-Tetris)

Screenshots

Overview

Overview

Overview

Overview

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 piece
  • SPACE : Drop down the piece
  • P : Pause the game
  • S : Mute control
  • R : 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:

⬜⬜⬜⬜⬜🟦⬜⬜⬜⬜
⬜⬜⬛⬛🟦🟦⬛⬛⬜⬜
⬛⬛⬛⬛🟦⬛⬛⬛⬛⬛
⬛⬜⬜⬛⬛⬛⬛⬛⬛⬛

Height: 4 or 3

Eroded Piece Cells Metric

The number of rows eliminated × The number of the squares the piece contributed

Example:

⬜⬜⬜⬜⬜🟦⬜⬜⬜⬜
⬜⬜⬛⬛🟦🟦⬛⬛⬜⬜
⬛⬛⬛⬛🟦⬛⬛⬛⬛⬛
⬛⬜⬜⬛⬛⬛⬛⬛⬛⬛

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:

❎⬜⬜⬛⬛⬜⬜⬛⬛⬜⬜❎

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:







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:





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:

⬜⬜⬛
⬛⬜⬛
⬛⬛⬛
⬛⬜⬛
⬛⬜⬛

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

About

Tetris game with AI made by pygame, inspired by react-tetris

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages