私はpython/pygameでゲームを作ったことを学び始めました。そして、pygameですぐに働くゲームを作るのは簡単ですが、コードを賢明に整理する方法に関する実際のチュートリアルはありません。pygame code organization
pygameチュートリアルのページでは、3つの方法があります。
の1-クラスのない使用は、構造のそれでもオブジェクト指向プログラミングを過度に複雑で曖昧なもの(その結果、知識をレールレールフレームワークのない小規模なプロジェクトのための
2 - MVCルビーオンレール種類)
、3- C++ - 構造のように、次のように:(クリーンで直感的な多分あまりいないのpython-など)
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()
私はC++でSDLのゲームを作るために使用されていると私は正確にこれを使用します?私はそれが両方のsmaのために使用できるかどうか疑問に思っています大規模なプロジェクトや、パイゲームでよりクリーンな方法がある場合は、また、非常によく組織され、従うことは簡単に見えます
imports
def functionx
def functiony
class MyGameObject:
class AnotherObject:
class Game: #pygame init, event handler, win, lose...etc
while True: #event loop
display update
:
は、例えば、私はこのように整理ゲームを見つけました。
小型で大型のゲームでクリーンなコードを使用できるように、私のすべてのプロジェクトで一貫して使用する構造はどれですか?
MVCは、GUIがある限り、何らかの形で存在しています。あなたの 'C++構造体'は本当にMVCのコントローラ部分です。いつでもon_fooメソッドを使ってイベントを待っているあなたはおそらく何らかの形のMVCを使用しています。 http://martinfowler.com/eaaDev/uiArchs.html –
私はpygameを使って簡単なゲームを書くことを試みています。あなたのアプローチは非常に面白いですが、 'on_loop()'で何をする必要があるのか、 'on_render()'メソッド?私が 'on_render'で理解しているように、私たちはいくつかの図面を作っていますよね? 'on_loop()'では、いくつかのロジックを実行します。それが正しいか? – DaZzz