J'ai commencé à apprendre à faire des jeux avec python/pygame et comme s'il était facile de faire un jeu de travail rapidement dans pygame, il n'y a pas vraiment de tutoriel sur l'organisation du code.organisation du code pygame
Sur la page tutoriels pygame, j'ai trouvé 3 façons de le faire.
1- Aucune utilisation des classes, pour les petits projets
2- MVC ruby-on-rails type de structure, mais sans le cadre des rails qui se traduit par quelque chose de trop compliqué et obscur (même avec la programmation orientée objet et rails connaissances ?)
3- C++ - structure comme la manière suivante: (propre et intuitive, mais peut-être pas beaucoup python-like)
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()
Je suis habitué à faire des jeux SDL en C++ et j'utilise cette exacte structure mais je me demande si c'est utilisable pour les deux sma ll et grands projets ou s'il y a une manière plus propre dans pygame.
Par exemple, je trouve un jeu organisé comme celui-ci:
imports
def functionx
def functiony
class MyGameObject:
class AnotherObject:
class Game: #pygame init, event handler, win, lose...etc
while True: #event loop
display update
Il semble également très bien organisé et facile à suivre.
Quelle structure dois-je utiliser systématiquement dans tous mes projets afin d'avoir un code propre utilisable dans les petits et grands jeux?
Votre 'structure C++' est vraiment la partie contrôleur de MVC. Chaque fois que vous voulez un événement avec une méthode 'on_foo', vous utilisez probablement une forme de MVC. http://martinfowler.com/eaaDev/uiArchs.html –
J'essaie d'écrire un jeu simple en utilisant pygame et je trouve votre approche très intéressante, mais pourriez-vous nous expliquer ce que nous devons faire dans 'on_loop()' et 'on_render()' méthodes? Comme je le comprends dans 'on_render', nous faisons des dessins, n'est-ce pas? Et dans 'on_loop()', nous effectuons une certaine logique. Est-ce correct? – DaZzz