Files

5.5 KiB
Raw Permalink Blame History

-=:dAs:=- Tetris

Класичний тетріс на Python + pygame з налаштовуваними фігурами, кольорами та керуванням

Python pygame PyInstaller

🇬🇧 English version

💡 Призначення

Десктопна гра тетріс, у якій набір фігур, їхні кольори, рахунок для появи кожної фігури, ширина поля, розмір блока, кольори та клавіші описані у 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_speed
  • high_score_inc_speed: false – гра пришвидшується зі зростанням рахунку, true – сповільнюється
  • blocks.json / blocks_ADD.json – фігури: name, color [r, g, b], min_score, shapes (список поворотів за годинниковою стрілкою, матриці з 0/1); хоча б одна фігура повинна мати min_score 0
  • Якщо локального файлу немає, використовується відповідний *_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/, розташованої поруч із ним.

Made by -=:dAs:=-