Files
DasTetris/README_ua.md
T

70 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## -=:dAs:=- Tetris
### _Класичний тетріс на Python + pygame з налаштовуваними фігурами, кольорами та керуванням_
[![Python](https://img.shields.io/badge/Python-3.12-green)](#) [![pygame](https://img.shields.io/badge/pygame-2.6.1-orange)](#) [![PyInstaller](https://img.shields.io/badge/PyInstaller-6.16-blue)](#)
🇬🇧 [English version](README.md)
### 💡 Призначення
Десктопна гра тетріс, у якій набір фігур, їхні кольори, рахунок для появи кожної фігури, ширина поля, розмір блока, кольори та клавіші описані у JSON-файлах – тож гру можна розширювати новими фігурами, не змінюючи код.
### 📃 Можливості
- [Ігровий процес](#Gameplay) – падіння фігур, обертання, очищення ліній, рахунок і лічильник ліній, попередній перегляд наступної фігури
- [Прогресивні фігури](#ProgressivePieces) – 23 фігури, нові відкриваються зі зростанням рахунку
- [Налаштування](#Configuration) – клавіші, кольори, ширина поля, розмір блока та режим швидкості в JSON
- Пауза, перезапуск і діалог підтвердження виходу (мишею або клавішами Y/N)
### ⭐ Переваги
- **Фігури як дані** – нова фігура – це кілька рядків JSON: назва, колір, мінімальний рахунок і список поворотів.
- **Безпечні значення за замовчуванням** – якщо локальних конфігів немає, автоматично використовуються закомічені `*_000.json`.
- **Запуск з будь-якої теки** – конфіги шукаються поруч зі скриптом або зібраним виконуваним файлом, а не в поточній теці.
- **Зрозумілі помилки конфігурації** – зламаний JSON чи відсутній ключ зупиняють гру з повідомленням, де названо файл і ключ.
### 📱 Скріншоти
<table>
<tr>
<td align="center"><img src="images/screenshot_game.png" width="300" alt="Гра" /></td>
<td align="center"><img src="images/logo_02_256x256.png" width="200" alt="Логотип" /></td>
</tr>
<tr>
<td align="center"><i>Ігрове поле</i></td>
<td align="center"><i>Логотип</i></td>
</tr>
</table>
### 📌 Використання
#### Ігровий процес<a id='Gameplay' />
**_Стандартні правила тетрісу на полі висотою 20 рядків_**
- `←` / `→` – рух, `↑` – поворот, `↓` – опустити на рядок
- `P` – пауза, `R` – перезапуск, `Esc` – вихід (з підтвердженням)
- Очки за одночасно очищені лінії: 1 – 100, 2 – 300, 3 – 500, 4 – 800
- Наступна фігура завжди відрізняється від поточної
#### Прогресивні фігури<a id='ProgressivePieces' />
**_Що вищий рахунок, то різноманітніші фігури_**
- 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 очок змінюється швидкість падіння
#### Налаштування<a id='Configuration' />
**_Усі налаштування – в теці `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.
```shell
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:=-_