5.5 KiB
5.5 KiB
-=:dAs:=- Tetris
Класичний тетріс на Python + pygame з налаштовуваними фігурами, кольорами та керуванням
💡 Призначення
Десктопна гра тетріс, у якій набір фігур, їхні кольори, рахунок для появи кожної фігури, ширина поля, розмір блока, кольори та клавіші описані у JSON-файлах – тож гру можна розширювати новими фігурами, не змінюючи код.
📃 Можливості
- Ігровий процес – падіння фігур, обертання, очищення ліній, рахунок і лічильник ліній, попередній перегляд наступної фігури
- Прогресивні фігури – 23 фігури, нові відкриваються зі зростанням рахунку
- Налаштування – клавіші, кольори, ширина поля, розмір блока та режим швидкості в JSON
- Пауза, перезапуск і діалог підтвердження виходу (мишею або клавішами Y/N)
⭐ Переваги
- Фігури як дані – нова фігура – це кілька рядків JSON: назва, колір, мінімальний рахунок і список поворотів.
- Безпечні значення за замовчуванням – якщо локальних конфігів немає, автоматично використовуються закомічені
*_000.json. - Запуск з будь-якої теки – конфіги шукаються поруч зі скриптом або зібраним виконуваним файлом, а не в поточній теці.
- Зрозумілі помилки конфігурації – зламаний JSON чи відсутній ключ зупиняють гру з повідомленням, де названо файл і ключ.
📱 Скріншоти
![]() |
![]() |
| Ігрове поле | Логотип |
📌 Використання
Ігровий процес
Стандартні правила тетрісу на полі висотою 20 рядків
←/→– рух,↑– поворот,↓– опустити на рядокP– пауза,R– перезапуск,Esc– вихід (з підтвердженням)- Очки за одночасно очищені лінії: 1 – 100, 2 – 300, 3 – 500, 4 – 800
- Наступна фігура завжди відрізняється від поточної
Прогресивні фігури
Що вищий рахунок, то різноманітніші фігури
- 8 базових фігур (
configs/blocks.json): квадрат, лінія, лінія-3 та L – одразу; J – з 900, S – з 1000, Z і T – з 2500 очок - 15 додаткових фігур (
configs/blocks_ADD.json, необов'язковий): точка, U, кут, X, P, F та інші – від 3500 до 30000 очок - Після 5000, 10000 і 15000 очок змінюється швидкість падіння
Налаштування
Усі налаштування – в теці configs/
config.json– клавіші (назви клавіш pygame, напр.K_LEFT), текст підказки з керуванням, кольори,store_width(ширина поля в блоках),block_size(пікселі),high_score_inc_speedhigh_score_inc_speed:false– гра пришвидшується зі зростанням рахунку,true– сповільнюєтьсяblocks.json/blocks_ADD.json– фігури:name,color[r, g, b],min_score,shapes(список поворотів за годинниковою стрілкою, матриці з 0/1); хоча б одна фігура повинна матиmin_score0- Якщо локального файлу немає, використовується відповідний
*_000.json
🚀 Запуск
Вимоги: Python 3.12, pygame 2.6.
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python das_tetris_gui.py # запустити гру
.venv/bin/python -m unittest discover -s tests -v # запустити тести
.venv/bin/pip install pyinstaller
.venv/bin/pyinstaller --onefile das_tetris_gui.py # зібрати єдиний виконуваний файл у dist/
Виконуваний файл читає конфіги з теки configs/, розташованої поруч із ним.

