Я начал изучать создание игр с python / pygame, и, как будто бы легко сделать рабочую игру быстро в pygame, нет реального руководства о том, как разумно организовать код.
На странице учебных пособий по Pygame я нашел 3 способа сделать это.
1- Не использовать классы, для небольших проектов
2- MVC-структура типа ruby-on-railsно без структуры rails, которая приводит к чему-то слишком сложному и непонятному (даже с программированием на языке OO и знанием rails)
3-C ++ - подобной структуре, следующей:)
import pygame
from pygame.locals import *
class MyGame:
def __init__(self):
self._running = True
self._surf_display = None
self.size = self.width, self.height = 150, 150
def on_init(self):
pygame.init()
self._display_surf = pygame.display.set_mode(self.size)
pygame.display.set_caption('MyGame')
#some more actions
pygame.display.flip()
self._running = True
def on_event(self, event):
if event.type == pygame.QUIT:
self._running = False
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
self._running = False
elif event.type == MOUSEBUTTONDOWN:
if event.button == 1:
print event.pos
def on_loop(self):
pass
def on_render(self):
pass
def on_cleanup(self):
pygame.quit()
def on_execute(self):
if self.on_init() == False:
self._running = False
while( self._running ):
for event in pygame.event.get():
self.on_event(event)
self.on_loop()
self.on_render()
self.on_cleanup()
if __name__ == "__main__" :
mygame = MyGame()
mygame.on_execute()
Я привык делать SDL-игры на C ++, и я использую эту точную структуру, но мне интересно, подходит ли она для малых и больших проектов или есть ли более чистый путь в пигмеях.
Например, я обнаружил, что игра организована следующим образом:
imports
def functionx
def functiony
class MyGameObject:
class AnotherObject:
class Game: #pygame init, event handler, win, lose...etc
while True: #event loop
display update
Она также выглядит очень хорошо организованной и простой в использовании.
Какую структуру я должен использовать последовательно во всех му проектов, чтобы иметь чистый код, пригодный для использования в маленьких и больших играх?