gpt4 book ai didi

python - 我的碰撞函数中的 For 循环从未命中?

转载 作者:行者123 更新时间:2023-12-05 07:02:35 25 4
gpt4 key购买 nike

<分区>

我正在尝试在 pygame 中制作一个基于图 block 的游戏,但我无法完全使用我的碰撞函数。到目前为止,我知道当我点击 WASD 时,它会在实际移动 Sprite 之前检查它是否是一个有效的移动。

    def move(self, dx=0, dy=0):
print("TEST" + str(self.collide_with_walls(dx, dy)))
if not self.collide_with_walls(dx, dy):
self.x += dx
self.y += dy

这是调用我的碰撞函数的移动函数(我想我会包含它以防万一)

def collide_with_walls(self, dx=0, dy=0):
print("Here 1")
print(self.game.walls)
for wall in self.game.walls:
print("2")
if wall.x == self.x + dx and wall.y == self.y + dy:
print("Hit wall")
return True
print("No hit wall")
return False

这是我不断返回 false 的碰撞函数。重要的是要注意它永远不会打印“2”,所以它永远不会进入 for 循环,当我打印出“self.game.walls”时,它会打印“

class Wall(pg.sprite.Sprite):
def __init__(self, game, x, y):
self.groups = game.all_sprites, game.walls
pg.sprite.Sprite.__init__(self, self.groups)
self.game = game
self.image = pg.Surface((TILESIZE, TILESIZE))
self.image.fill(BLACK)
self.rect = self.image.get_rect()
self.x = x
self.y = y
self.rect.x = x * TILESIZE
self.rect.y = y * TILESIZE

这就是 Wall 函数,它将墙放置在我预感问题所在但我似乎无法弄清楚的地方。任何建议都有帮助:)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com