18

将来 C++ と SDL に移行したい場合、Python と pygame は SDL を学ぶ良い方法ですか?

4

9 に答える 9

15

Python+PyGame は、SDL を学習するための非常に優れたアイデアです。

私はそのようにやや人気のあるゲームを書きました。Python/PyGame は、他の言語への SDL バインディングよりもはるかに高度に見えます。また、C++ と比較した大きな利点の 1 つは、コードをコンパイルする必要がないことです。簡単なハッキングで、実行中のプログラムを変更して、フィードバックをライブで確認することもできます。GUI ベクトル グラフィックス プログラムを使用する場合と、テキスト エディターで SVG を記述する場合のように、非常に大きな違いがあります。残念ながら、これを表示するにはプログラムを少し調整する必要があるため、これをそのまま使用することはできません。

PyGame のその他の利点については、jrpg は Linux、Windows、および OSX 上で非常に小さな変更を加えるだけで動作しました。フルスクリーン モードの切り替えと、OS 間にいくつかの違いがあったため、ダブル バッファリングを微調整する必要がありましたが、再コンパイルは必要ありませんでした。問題が発生した場合は、適切なスタック トレースを取得して問題をライブでデバッグできますが、メモリの破損やセグメンテーション違反が発生すると、C++ では実際には不可能です。

SDL ゲームで C++ と Python を混在させることがどれほど簡単か、どれほど難しいか、私にはよくわかりません。PyGame は非常に単純ですが、SDL の非常にうまく作成されたラッパーであり、Python/C++ の混合は十分に簡単であるはずなので、それほど難しくないと思います。

于 2009-01-11T01:29:49.687 に答える
6

pygame は SDL インターフェイスをかなり抽象化しているため、引き継がれる利点はあまりないと思います。

于 2008-10-26T21:28:02.720 に答える
6

SDL ベースの環境でいくつかのテクニック、ゲーム ロジックなどを実装する方法を学ぶことができますが、C++/SDL に移行した後は SDL 関数を直接使用する必要があり、pyGame のヘルパー関数/オブジェクトは完全に役に立ちます。

于 2008-10-26T21:37:15.510 に答える
6

はい。Python が C++ よりもはるかに自然である場合は、最初に pygame を学習することをお勧めします。SDL と C を使用するように移行する場合は、翻訳プロセスを経る必要がありますが、多かれ少なかれ 1 対 1 のマッピングである必要があります。

于 2008-10-27T05:45:11.640 に答える
3

もちろん。sdl ゲームやツールを非常に短い時間で作成できます。

data/chimp.bmp を 468x60 画面に表示する次のコードから始めることができます。

import pygame, sys,os
from pygame.locals import * 

pygame.init() 

window = pygame.display.set_mode((468, 60)) 
pygame.display.set_caption('Monkey Fever') 
screen = pygame.display.get_surface() 

monkey_head_file_name = os.path.join("data","chimp.bmp")

monkey_surface = pygame.image.load(monkey_head_file_name)

screen.blit(monkey_surface, (0,0)) 
pygame.display.flip() 

def input(events): 
   for event in events: 
      if event.type == QUIT: 
         sys.exit(0) 
      else: 
         print event 

while True: 
   input(pygame.event.get())

SDL オブジェクトに慣れている場合は、C++ に簡単に移行できます (もう一度やりたい場合:p Pygame は高速で、それを使用して複雑なゲームを作成できます)。

于 2008-10-27T09:57:48.387 に答える
1

python はデザインの学習を妨げるものではありません。それは IMO を学ぶ上でかなり重要なことです。それでも、次善のコードをあまり書かないようにすることも学びます。python には巧妙で美しいハックもあります。

于 2008-11-09T01:07:21.460 に答える
1

OpenGL をターゲットにしている場合は、pygletを試すことができます。pygame よりもはるかによく考えられたライブラリです。

ただし、将来 C++ や SDL に移行する場合は、今すぐ移行してください。そうすれば、実際に SDL を学ぶことができます。しかし、そのような無責任なことをする前に、まずpygletにチェックインすることをお勧めします。ライブラリがどれほど悪くても、C++でアプリを適切に設計するためです。

于 2008-10-27T09:43:06.730 に答える
0

私は、Python (さらに言えば、マネージ言語またはインタープリター言語) が複雑なタスクを学ぶのに良い方法だとは考えていません。なぜなら、Python はシステムの働きからプログラマーをあまりにも切り離してしまうからです。私の友人が言ったように、「パイソンはあなたを愛し、あなたが幸せになることを望んでいます。」基礎をすでに知っていればそれで十分ですが、学習したい場合は、すべての作業を自動的に行う言語は必要ありません。

何が起こっているかはすぐにわかりますが、その理由はわかりません。そして、何かがひどくうまくいかない場合 (そして、重要なプロジェクトでは最終的にはそうなるでしょう)、何が起こっているのか、その理由はわからないままになります。

于 2008-10-31T22:28:28.163 に答える