1
def main():
    screen = pygame.display.set_mode((675, 480))
    pygame.display.set_caption("Space Invaders")

    background = pygame.Surface(screen.get_size())
    background.fill((0, 0, 0))

    allSprites = pygame.sprite.Group()

    for j in range(0, 5):
        for i in range(0, 10):
            invader1 = Invader1(screen, (0, 0))
            invader1.x += 75
            invader1.add(allSprites)
        invader1.y += 75

プロジェクト用にスペース インベーダー ゲームを作成しようとしていますが、for ループに少し問題があります。敵のインスタンスを 10 個作成し、それぞれを入力する必要はありません。for ループが答えであることはわかっています。初期化する方法がわかりません。最初の敵を (0, 0) から開始し、各敵を x 軸で 75 スペース移動し、10 個の敵が作成されたら、y 軸で 75 スペース下に移動してプロセスを繰り返します。誰も私がこれを達成する方法を知っていますか? 前もって感謝します

4

4 に答える 4

6

パラメータで範囲を使用しstepます。

In [4]: range(0, 75 * 5, 75)
Out[4]: [0, 75, 150, 225, 300]

 

allSprites = pygame.sprite.Group()
for y in range(0, 75 * 5, 75):
    for x in range(0, 75 * 10, 75):
        Invader1(screen, (x, y)).add(allSprites)
于 2013-03-15T19:20:09.477 に答える
0

ネストされたリスト内包表記を使用すると、Pavel の回答をすべて 1 行で取得できます

invaders =  [ Invader1(screen, (x, y)) for x in range(0, 750, 75) for y in range(0, 325, 75) ]
于 2013-03-15T19:34:14.843 に答える
0
invader_list = []
for y in range(n):
    for x in range(10):
        invader_list.append(Invader(x * w, y * h))

1) オブジェクトを格納するリストを作成する

2)n回(行数)繰り返すforループを作る

3) ネストされた for ループを 10 回繰り返します (列の数)

4) 2 つの for ループ内で、x*w と y*h を使用して Invader オブジェクトを作成します。

于 2013-03-27T11:50:18.383 に答える
0

コードを次のように変更します。

def main():
screen = pygame.display.set_mode((675, 480))
pygame.display.set_caption("Space Invaders")

background = pygame.Surface(screen.get_size())
background.fill((0, 0, 0))

allSprites = pygame.sprite.Group()

for j in range(0, 5):
    for i in range(0, 10):
        invader1 = Invader1(screen, (75*i,75*j ))
        invader1.add(allSprites)
于 2013-03-18T01:18:02.700 に答える