単純なプラットフォームゲームに基本的な衝突検出を追加しようとしています。私はクラスPlayerを持っていて、プレイヤーがプラットフォーム(「Collision」)に衝突したときに衝突します。 Platformクラスを使用してすべてのプラットフォームを作成し、それらのメソッドをリストに追加して、衝突するかどうかを確認するための方法(プラットフォーム)を参照します。なぜこのエラーが発生するのですか? rectオブジェクトではない場合、私のリストには何が入っていますか?関連するコードセグメントを投稿しましたが、必要に応じて全体を投稿します。Pygame:TypeError:引数はrectstyleオブジェクトのシーケンスでなければなりません
ありがとうございました。
class Platform():
def __init__(self, platformx, platformy):
self.x = platformx
self.y = platformy
def draw_platform(self):
pygame.draw.rect(screen, RED, (self.x, self.y, 40, 20))
class Player():
def __init__(self):
self.image = pygame.image.load('C:\\Users\\admin\\Desktop\\Player1.png').convert_alpha()
self.rect = self.image.get_rect()
def display_player(self):
return self.image
def is_collided_with(self):
return self.rect.collidelistall(platforms)
pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode(DISPLAY, FLAGS, DEPTH)
pygame.display.set_caption('Rum Islands')
generate = Player()
man = generate.display_player()
platforms = []
loop = True
while loop:
for event in pygame.event.get():
if event.type == QUIT \
or (event.type == KEYDOWN and event.key == K_ESCAPE):
loop = False
if generate.is_collided_with(): #check for collision
print("True")
screen.fill(WHITE)
platform_x = 0
platform_y = 0
for row in level:
for col in row:
if col == "P":
col = Platform(platform_x, platform_y)
col.draw_platform()
platforms.append(col)
platform_x += 15
platform_y += 20
platform_x = 0
はあなたがリストにあるものを見るために 'print()'を使います。 BTW:(メッセージの一部だけでなく、タイトルに)問題のfillエラーメッセージ(トレースバック)を常に入れてください。他の有用な情報があります。どのラインが問題になるか。 – furas