1

Python でコードを並列化しようとしていますが、いくつか問題があります。これはコードの一部です:

survivor = Survivor(32*2, 32*4)   
if rank == 1:
    a = 'audio/zombie_theme.ogg'
    b = 'images/dungeon.jpg'
    c = 'images/dead.jpg'
    d = survivor.movement()
else:
    a = None
    b = None
    c = None
    d = None

a = comm.bcast(a, root=1)
b = comm.bcast(b, root=1)
c = comm.bcast(c, root=1)
d = comm.bcast(d, root=1)

if rank == 0:
    pygame.mixer.music.load(a)
    pygame.mixer.music.play(-1)
    pygame.display.set_caption('Zombie Game')
    screen = pygame.display.set_mode((display_width,display_height))
    Tile.pre_init(screen)
    clock = pygame.time.Clock()
    dungeon = pygame.image.load(b)

    keepPlaying = True
    while keepPlaying:

        screen.blit(dungeon, (0,0))
        Zombie.spawn(total_frames, FPS)
        Zombie.update(screen, survivor)
        d

最後の行で d を呼び出すとき、プロセス 1 で定義された Survivor.movement() を呼び出すべきではありませんか? ゲームを実行すると、メイン キャラクターが動きません。しかし、どこからでも d を削除し、survivor.movement() を最後の行に配置すると、期待どおりに動作します。誰でも私を助けることができますか?

4

1 に答える 1

2
d = survivor.movement

中括弧を削除します。d = Movement() と書くと、関数自体ではなく、実際に返される動きに d を割り当てます。

于 2015-07-15T18:27:10.617 に答える