2

私が今抱えている問題は、Pygame で多数のサウンド ファイルを独自のオブジェクトとしてロードすることです。次の構文でサウンドをロードします。

sound1 = pygame.mixer.Sound('file.wav')

7 つのファイルがあり、それらをロードして、sound1 ~ sound7 という名前を付けたいとします。そして、それらを個別にロードしたくありませんでした。欠陥があることを知らなかった場合は、次のようなことを試します。

for i in range(1, 8):
    new = 'sound' + str(i)
    new = pygame.mixer.Sound(str(new) + 'wav')

「new」を文字列ではなく独自の変数にする方法を教えてください。getattr について読んだことがありますが、わかりにくいです。関数とループを使用してコードを動的に作成する方法を知りたいのですが、これまでのところ、私のような初心者にとって役立つものは何も見つかりません。これを例として使用して、コード内にコードを作成し、文字列を使用可能な変数/オブジェクトに変換する方法を簡単に説明したい人はいますか?

ありがとうございました!

4

3 に答える 3

6
sounds = [] # list
for i in range(1, 8):
    sounds.append(pygame.mixer.Sound('sound' + str(i) + 'wav'))

または

sounds = {} # dictionary
for i in range(1, 8):
    sounds[i] = pygame.mixer.Sound('sound' + str(i) + 'wav')

最初は、リスト アプローチと同じように辞書アプローチを使用しているように見えます。

sounds = {} # dictionary
for i in range(1, 8):
    sounds['sound' + str(i)] = pygame.mixer.Sound('sound' + str(i) + 'wav')

そして、たとえば、sound["sound1"] などが機能するようになりました。

于 2013-03-15T00:51:50.840 に答える
1

Python には、for ループと while ループの 2 種類のループがあります。for ループは、何かを n 回繰り返すために使用されます。while ループは、何かが起こるまで繰り返すために使用されます。for ループは、ゲームが表示するフレームを処理することが多いため、ゲーム プログラミングに役立ちます。各フレームはループを 1 回実行します。for ループを格納する方法は、リストを使用することです。以下は、慣れ親しんだ基本的なループの例です。

he_count = [1, 2, 3, 4, 5]
fruits = ['apples', 'oranges', 'pears', 'apricots']
change = [1, 'pennies', 2, 'dimes', 3, 'quarters']

# this first kind of for-loop goes through a list
for number in the_count:
    print "This is count %d" % number

# same as above
for fruit in fruits:
    print "A fruit of type: %s" % fruit

# also we can go through mixed lists too
# notice we have to use %r since we don't know what's in it
for i in change:
    print "I got %r" % i

# we can also build lists, first start with an empty one
elements = []

# then use the range function to do 0 to 5 counts
for i in range(0, 6):
    print "Adding %d to the list." % i
    # append is a function that lists understand
    elements.append(i)

# now we can print them out too
for i in elements:
    print "Element was: %d" % i

Python でのループとゲーム プログラミングの詳細については、 programarcadegames.com /index.php?lang=en&chapter= loops をご覧ください。

于 2013-03-15T06:17:03.780 に答える
1

これには配列を使用できます。

sound = []
for i in range(1,8):
    sound.append (pygame.mixer.Sound("sound%d.wav" % i))
# Now use sound[0..6] to reference sound[1..7].wav

sound1.wavこれにより、ファイルがロードさsound8.wavれます。ファイルの名前が異なる場合は、範囲や文字列の書式を変更するだけです。

于 2013-03-15T00:52:04.937 に答える