-1

私はpygameアプリ開発が初めてです。私のゲームでは、長方形のオブジェクトが pygame ウィンドウで正方形に回転します。しかし、私が望むのは、長方形のオブジェクトをもう 1 つ追加して、同じことを行うことです。私のコード

import pygame
from itertools import cycle
pygame.init() 
screen = pygame.display.set_mode((300, 300)) 
s_r = screen.get_rect()
player = pygame.Rect((100, 100, 50, 50))
timer = pygame.time.Clock()
speed = 5
up, down, left, right = (0, -speed), (0, speed), (-speed, 0), (speed, 0)

dirs = cycle([up, right, down, left])

dir = next(dirs)

while True:

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        raise

# move player
player.move_ip(dir)
# if it's outside the screen
if not s_r.contains(player):
    # put it back inside
    player.clamp_ip(s_r)
    # and switch to next direction
    dir = next(dirs)

screen.fill(pygame.color.Color('Black'))
pygame.draw.rect(screen, pygame.color.Color('Grey'), player)

pygame.display.flip()
timer.tick(25)

2番目の画像のように新しいプレーヤーオブジェクトを追加すると、pygame.draw.rect(screen, pygame.color.Color('Grey'), player2)形成されますが回転しません。

4

1 に答える 1

0

2 番目のプレーヤーの位置を更新するのを忘れたと思います (少なくとも私はそう思います)。

次のコードは、コードを簡単に更新したものです。通常、2 人以上のプレーヤーを保持する場合はリストを使用しますが、これは問題なく動作するはずです。

import pygame
from itertools import cycle
pygame.init() 
screen = pygame.display.set_mode((300, 300)) 
s_r = screen.get_rect()
player = pygame.Rect((100, 100, 50, 50))
player2 = pygame.Rect((200, 100, 50, 50))
timer = pygame.time.Clock()
speed = 5
up, down, left, right = (0, -speed), (0, speed), (-speed, 0), (speed, 0)

dirs1 = cycle([up, right, down, left])
dirs2 = cycle([up, right, down, left])

dir1 = next(dirs1)
dir2 = next(dirs2)

while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            raise

    # move player    
    player.move_ip(dir1)
    player2.move_ip(dir2)
    # if it's outside the screen
    if not s_r.contains(player):
    # put it back inside
        player.clamp_ip(s_r)
        # and switch to next direction
        dir1 = next(dirs1)

    if not s_r.contains(player2):
        # put it back inside
        player2.clamp_ip(s_r)
        # and switch to next direction
        dir2 = next(dirs2)

    screen.fill(pygame.color.Color('Black'))
    pygame.draw.rect(screen, pygame.color.Color('Grey'), player)
    pygame.draw.rect(screen, pygame.color.Color('Grey'), player2)
    pygame.display.flip()
    timer.tick(25)
于 2014-07-01T16:52:29.557 に答える