Skip to content

maksim04021/Tetris

Repository files navigation

PyTetris

Идея проекта

Идея: создать небольшую интересную версию классического Тетриса, используя библиотеку Pygame. Игрок управляет падающими блоками, и пытается составить сплошные горизонтальные линии. Очки начисляются за каждую завершенную линию, после чего линия исчезает, освобождая место для новых блоков.

Котик Андрей и Фролов Максим

Техническое задание

  1. Название проекта: "PyTetris"

  2. Цель проекта: Создать играбельную версию классической игры Тетрис с использованием библиотеки Pygame.

  3. Целевая аудитория: Люди, знакомые с классической игрой Тетрис, и новички, желающие попробовать свои силы в этой головоломке.

  4. Функциональные требования:

    4.1. Игровое поле:

    • Игровое поле должно представлять собой сетку 10x20 клеток (стандартный размер).
    • Каждая клетка может быть пустой или занятой частью тетрамино.
    • На поле отображаются падающие тетрамино и уже зафиксированные блоки.
    • Границы поля четко обозначены.

    4.2. Тетрамино (фигуры):

    • Необходимо реализовать 7 типов тетрамино (I, J, L, O, S, T, Z).
    • Тетрамино должны состоять из 4 блоков и иметь возможность вращаться на 90 градусов по часовой стрелке.
    • Каждому типу тетрамино присваивается свой цвет.
    • Тетрамино должны появляться в верхней части игрового поля.

    4.3. Управление:

    • Игрок управляет падающим тетрамино с помощью следующих клавиш:
      • Стрелка влево: сдвиг тетрамино влево.
      • Стрелка вправо: сдвиг тетрамино вправо.
      • Стрелка вниз: ускорение падения тетрамино.
      • Стрелка вверх/клавиша "пробел": вращение тетрамино по часовой стрелке.

    4.4. Падение тетрамино:

    • Тетрамино должны автоматически падать вниз с определенной скоростью.
    • Скорость падения может увеличиваться со временем или с ростом уровня.
    • При достижении дна или столкновении с другими блоками тетрамино фиксируется на месте.

    4.5. Заполнение линий:

    • Если горизонтальная линия полностью заполнена блоками, она должна быть удалена.
    • Все блоки, находящиеся выше удаленной линии, должны сдвинуться вниз на одну клетку.

    4.6. Начисление очков:

    • За каждую удаленную линию начисляются очки.
    • Количество начисляемых очков может увеличиваться за одновременное удаление нескольких линий.

    4.7. Уровень:

    • Игра должна иметь несколько уровней сложности.
    • С каждым уровнем скорость падения тетрамино должна увеличиваться.

    4.8. Конец игры:

    • Игра должна заканчиваться, когда новая тетрамино не может появиться на поле из-за того, что верхняя часть заполнена блоками.
    • После завершения игры должен отображаться экран с итоговым счетом и опцией начать игру заново.

    4.9. Интерфейс пользователя (UI):

    • Отображение текущего счета.
    • Отображение следующего падающего тетрамино (preview).
    • Отображение текущего уровня.
    • Четкий, лаконичный и интуитивно понятный интерфейс.

    4.10 Звук * Звук падения тетрамино * Звук удаления линии * Музыка на фоне

  5. Нефункциональные требования:

    • Производительность: Игра должна работать плавно, без заметных задержек.
    • Удобство использования: Интерфейс должен быть интуитивно понятен и удобен для пользователя.
    • Простота кода: Код должен быть хорошо структурированным и легким для понимания и модификации.
    • Кроссплатформенность: Код должен быть совместимым с различными операционными системами (Windows, MacOS, Linux).
    • Надежность: Игра должна быть стабильной и не вызывать ошибок во время игры.
  6. Используемые технологии:

    • Язык программирования: Python 3.x
    • Библиотека: Pygame
    • Дополнительные библиотеки: (могут потребоваться, например, для работы со звуком)
  7. Этапы разработки:

    1. Настройка Pygame: Создание окна, инициализация необходимых модулей.
    2. Реализация игрового поля: Создание сетки и отрисовка ее на экране.
    3. Реализация тетрамино: Создание классов для каждого типа тетрамино, их отрисовка и вращение.
    4. Реализация управления: Обработка ввода с клавиатуры и перемещение тетрамино.
  8. Реализация падения: Автоматическое падение и фиксация тетрамино.

  9. Удаление линий: Реализация проверки и удаления заполненных линий.

  10. Начисление очков и уровней: Реализация логики начисления очков и усложнения игры.

  11. Реализация конца игры: Реализация окончания игры и отображения итогового счета.

  12. Реализация UI: Отображение необходимой информации.

  13. Реализация Звука Добавление звукового сопровождения

  14. Тестирование: Проверка на ошибки и корректировка.

Прогресс

Добавлен первый патч

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages