pygameの落書きジャンプ

良い...
pygameライブラリーでの私の経験を教えて見せたいと思います。pygameライブラリーは、おそらくPythonでグラフィカルアプリケーション(ほとんどはアーケードゲーム)を実装するための優れたライブラリーです。 たとえば、(部分的に)Doodle Jumpゲームが実装されました。

免責事項




導入する代わりに


Python Pythonはドキュメントの点で優れています。 彼女は、彼女が理解できる、彼女は優れた例がないわけではありません。 Pygameも例外ではないので、このライブラリの実装の詳細については説明しないことをお勧めしますが、そのツールを使用して画像をロードし、xおよびyの周りを単純に移動できることに注意してください。 これ以上。

建築


OOPの最高の伝統でアプリケーションアーキテクチャを開発しようとします。 次のクラス図があります。

MVCモデルの支持者はすでに泣いています ロジックと表現はクラスの本体に組み込まれます。
3つの場所があります。

プラットフォーム、ボタン、メインキャラクターなど、すべてのゲームオブジェクトが継承される基本的なSpriteオブジェクト。 スキームによれば、すべてが明確です。

キーポイント


イベント

def event(self, event): if event.type == QUIT: sys.exit() elif event.type == KEYUP: if event.key == K_ESCAPE: # do something if event.type == MOUSEMOTION: for btn in self.buttons: if btn.rect.collidepoint(pygame.mouse.get_pos()): #pass btn.changeState(1) 

イベントメカニズムを使用すると、キーストロークとマウス操作が透過的に傍受されます。

画像

 self.img_l = pygame.image.load('img/doodle_l.png').convert() self.image = self.img_l self.image.set_colorkey(self.image.get_at((0,0)), RLEACCEL) self.rect = self.image.get_rect() self.rect.center = (self.x,self.y) 

スプライトの画像をロードします。

衝突

 self.doodle.getLegsRect().colliderect(spr.getSurfaceRect()) 

coliderectメソッドは、スプライトに隣接する長方形が交差する場合にtrueを返します。

いくつかのスクリーンショット





藤堂




あとがきの代わりに


pygameの知識は完全であると見なすことができます。doderはジャンプして生活を楽しんでいますが、同時にプロセッサの負荷は50〜70%になる傾向があり、これは話題ではありません。 それは何ですか、 govnokodの貧弱なアプリケーションアーキテクチャまたは言語機能-あなたが決めます。 ご清聴ありがとうございました。
githubのソース。

Source: https://habr.com/ru/post/J130726/


All Articles