Skip to content

Mihendy/PyGame-Clicker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#usr/bin/python3 ##так на линуксе пишут

🐧_Пояснительная записка к проекту_🐧

===============.Содержаниe.===============

1. Почему Кликер?


2. Общие сведения о интерфейсе

    2.1 Выбор кастомизации элементов интерфейса


3. Структура кода

  3.1 Классы элементов интерфейса

  3.2 Игровой цикл

  3.3 Документирование кода


4. Анимация


5. Хранение данных с помощью JSON


*6. Дополнения к программе
  1. Почему Кликер?

    Сначала, мы думали создать проект, игровой процесс которого не будет иметь конца. Такое решение было принято, потому что мы не располагали большим количеством времени, и не могли создавать игровой процесс уникальным, каждый этап игры меняя уровни или локацию развития событий. Потом мы осознали, что сроки совсем поджимают, и надо срочно создать проект, подходящий идеально под все критерии оценивания, и вызывающий при этом у пользователя интерес. Ввиду соответствия такого типа игр как кликер данным условиям, мы остановили свой выбор на нём, ведь действительно пользователь может постоянно играть в игру, не прилагая особых усилий (если этого не требует страсть к нажатиям😜), тем самым процесс должен получится достаточно занимательным и интересным для пользователя, а также реализация его будет относительно простой, и останется только качественно подойти к решению поставленной задачи.

  2. Общие сведения о интерфейсе

    Для реализации интерфейса кликера мы нашли несколько библиотек, но они оказались сложными для мгновенного освоения, а времени было в обрез, поэтому мы решили обойти их стороной и создать интерфейс "ручками", используя информацию из уже пройденных уроков из LMS по PyGame'у. Элементы интерфейса представлены в виде отдельных классов.

    2.1 Выбор кастомизации элементов интерфейса пользователем

     Так как пользователь может накапливать игровую валюту, нам необходимо было
     придумать, на что её можно тратить, так, чтобы у пользователя был соблазн её
     накапливать, и мы придумали — Визуальный облик элементов интерфейса. У нас
     пользователь может купить "скины" в магазине (чем выше цена, тем интереснее скин,
     ну или больше времени было потрачено разработчиком на его создание🐦).
    

    2.2 Адаптивный дизайн

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

    Код, как и всегда, написан в соответствии со стандартом pep8; Максимальная длина строки состовляет 101 символ (вроде проскачили).

    3.1 Классы элементов интерфейса

     Как уже говорилось ранее, элементы интерфейсов - это отдельные классы.
     Такая структура позволяет реализовать следующий подобный инструмент,
     использующийся в библиотеке PyQt5 - eventFilter.
         Мы реализовали некое подобие eventFilter'у, функцией "install_event_filter",
     которая находится в классе кнопки Button. Таким образом, все кнопки имеют единый
     стиль, но разный функционал.
         Отдельный класс имеют не только кнопки, всё, что находится на экране имеет
     свой класс, как бы очевидно это не звучало.
    

    3.2 Игровой цикл

     Вообще, нам показалось неплохой идеей раскидать код игрового цикла по функциям.
     На первый взгляд, это бы улучшило структуру кода, но, едва приступивши к внесению,
     таких правок, мы быстро поняли, что это сильно портит читаемость и понимание кода,
     а в проектах, особенно групповых, не так главна визуальная структура кода, как
     логическая.
     Функциональность игрового цикла при отрисовки кадров достаточно эффективна,
     так как, управляя различными флагами, можно легко задать программе поведение паузы
     например.
    

    3.3 Документирование кода

     Весь код полон комментариями, но не переполнен, что облегчает понимание кода.
     Комментарии мы писали везде, где это необходимо, так, что каждая функция и каждый
     класс описаны док-строкой, инициализация и обработка данных — серыми строчками с 
     обеих сторон, а принципы работы некоторых частей программы блоком серого текста.
    
    1. Анимация

      Этому моменту мы уделили львиную долю времени. И не из-за того, что реализовать движение виджетов интерфейса сложно, а из-за визуальной проблемы этой самой штуки. Мы несколько раз поочерёдно переписывали анимацию бокового меню, и, в итоге, довели дело до конца. С Анимированием объекта, по которому производится клик, особых проблем не возникло. Наблюдая увеличение кружочка-кликера при нажатии, у пользователя появляется соблазн нажимать на него быстрей, пока кружок не достигнет максимальных размеров, а это достаточно непросто, если вы не привыкли к подобному роду деятельности☝.

    2. Хранение данных с помощью JSON

      Ну и самое главное - хранение информации о пользователе. В первую очередь, мы создали SQL базу данных, в которую добавили несколько таблиц, и записали в них всю нужную информацию. Но, вскоре, нам показалось хорошей идея перемещения в два json файла, во-первых, для практики с ново-изученным материалом, во-вторых, для улучшения, опять же, структуры кода. О том, сколько кликов, монет, кликов в секунду добавляется (пассивная добыча кликов), хранится в файле clicker.json. Информация о предметах, на прилавках магазина, приобретённых пользователем товаров, хранится в файле shop.json.

*6. Дополнения к программе

Во-время создания проекта, наши сроки были весьма ограничены, и мы хотели бы дополнить
проект в будущем следующим образом:

- Добавления приятной фоновой музыки, для большего погружения;
- Значительное улучшение кастомизации, и увеличение предметов в магазине;
- Возможность запуска и полноценного использования программы с телефона.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages