Найти - Пользователи
Полная версия: как правильно писать программу в Pygame?
Начало » Python для новичков » как правильно писать программу в Pygame?
1
panama555
Привет!
Я сейчас занимаюсь написанием игровой программы. Это копия игры lines.
(На игровом поле появляются шарики которые нужно поставить по 5 в ряд и т.д.) Дело не в этом.
Я не могу понять принцип написания такого вида программ.
Конкретно:
у меня есть несколько спрайтов(класс Ball). Они объединены в группу. Предположим я кликнул по одному спрайту(шарику).
Я хочу, чтобы он начал немного подпрыгивать. Что я делаю?
Я просматриваю всю группу спрайтов(шариков), определяю спрайт по которому я кликнул и его атрибуту
(например, self.activ) присваиваю значение True.
При этом у меня постоянно “выполняется” цикл while (50раз/сек), который рисует фон, спрайты и (главное) выполняет для всех спрайтов группы метод update().
Мне приходится в методе update класса Ball вставить условный оператор (if self.activ, который рассчитывает сдвиг координат спрайта(шарика)
Это у меня всё работает. Но возникает вопрос: я, вообще, правильно понял принцип программирования подобных программ. Мне казалось, что принцип программирование ООП в том, что я должен вызвать нужный мне метод(тот который отвечает за подпрыгивание) и забыть о нём(пусть сам выполняется).
А в моей программе получается, что всё выполняет метод update!!!
С этим можно смериться пока действия спрайта(шарика) простые. А дальше спрайту нужно будет подпрыгивать и двигаться при этом!
У меня вопрос:
я правильно или не правильно использую возможности pygame?
как нужно правильно использовать возможности pygame?
PEHDOM
panama555
я, вообще, правильно понял принцип программирования подобных программ. Мне казалось, что принцип программирование ООП в том, что я должен вызвать нужный мне метод(тот который отвечает за подпрыгивание) и забыть о нём(пусть сам выполняется).
В идеале так оно и есть, другое дело как написать программу чтобы оно именно так и работало .Насчет pygame тяжело сказать я не спец именно в пайгейме, но ИМХО вам стоит посмотреть в на MVC паттерн.
вот MVC паттерн на примере сапера http://itnotesblog.ru/note.php?id=10, это конечно не лайнес, но думаю вам будет интересно.
AD0DE412
а не подскжете в каком случее в ооп выбирать наследование, реализацию, композицию, агрегатирование
а то чет как то непонятно че почему и если уж на то пошло как выбирают тот или иной шаблон
py.user.next
panama555
Я не могу понять принцип написания такого вида программ.
Так это можно написать в парадигме структурного программирования, а можно написать в парадигме объектно-ориентированного программирования.

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

В парадигме объектно-ориентированного программирования у тебя всё должно состоять из объектов, передающих друг другу сообщения.
У тебя должен быть класс доски, с помощью которого ты делаешь объект доски; должен быть класс шарик, с помощью которого ты делаешь объект шарик. А потом объект доски посылает сообщение шарику нарисоваться, а шарик, нарисовавшись, посылает доске сообщение о готовности.
PEHDOM

panama555 есть такая игра Frets On Fire http://fretsonfire.sourceforge.net/ . Сама по себе имитирует коммерческую игру Guitar Hero. Игра полностью написана на Python с использованием библиотеки Pygame. Считаеться хорошим примером как делать игры на пайгейме благодаря открытости и простоте кода. Посмотрите как там все сделано.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB