Форум сайта python.su
Привет!
Я сейчас занимаюсь написанием игровой программы. Это копия игры lines.
(На игровом поле появляются шарики которые нужно поставить по 5 в ряд и т.д.) Дело не в этом.
Я не могу понять принцип написания такого вида программ.
Конкретно:
у меня есть несколько спрайтов(класс Ball). Они объединены в группу. Предположим я кликнул по одному спрайту(шарику).
Я хочу, чтобы он начал немного подпрыгивать. Что я делаю?
Я просматриваю всю группу спрайтов(шариков), определяю спрайт по которому я кликнул и его атрибуту
(например, self.activ) присваиваю значение True.
При этом у меня постоянно “выполняется” цикл while (50раз/сек), который рисует фон, спрайты и (главное) выполняет для всех спрайтов группы метод update().
Мне приходится в методе update класса Ball вставить условный оператор (if self.activ, который рассчитывает сдвиг координат спрайта(шарика)
Это у меня всё работает. Но возникает вопрос: я, вообще, правильно понял принцип программирования подобных программ. Мне казалось, что принцип программирование ООП в том, что я должен вызвать нужный мне метод(тот который отвечает за подпрыгивание) и забыть о нём(пусть сам выполняется).
А в моей программе получается, что всё выполняет метод update!!!
С этим можно смериться пока действия спрайта(шарика) простые. А дальше спрайту нужно будет подпрыгивать и двигаться при этом!
У меня вопрос:
я правильно или не правильно использую возможности pygame?
как нужно правильно использовать возможности pygame?
Офлайн
panama555В идеале так оно и есть, другое дело как написать программу чтобы оно именно так и работало .Насчет pygame тяжело сказать я не спец именно в пайгейме, но ИМХО вам стоит посмотреть в на MVC паттерн.
я, вообще, правильно понял принцип программирования подобных программ. Мне казалось, что принцип программирование ООП в том, что я должен вызвать нужный мне метод(тот который отвечает за подпрыгивание) и забыть о нём(пусть сам выполняется).
[code python][/code]
Отредактировано PEHDOM (Янв. 12, 2020 14:27:40)
Офлайн
а не подскжете в каком случее в ооп выбирать наследование, реализацию, композицию, агрегатирование
а то чет как то непонятно че почему и если уж на то пошло как выбирают тот или иной шаблон
Отредактировано AD0DE412 (Янв. 12, 2020 20:19:17)
Офлайн
panama555Так это можно написать в парадигме структурного программирования, а можно написать в парадигме объектно-ориентированного программирования.
Я не могу понять принцип написания такого вида программ.
Отредактировано py.user.next (Янв. 13, 2020 02:35:49)
Офлайн
panama555 есть такая игра Frets On Fire http://fretsonfire.sourceforge.net/ . Сама по себе имитирует коммерческую игру Guitar Hero. Игра полностью написана на Python с использованием библиотеки Pygame. Считаеться хорошим примером как делать игры на пайгейме благодаря открытости и простоте кода. Посмотрите как там все сделано.
[code python][/code]
Офлайн