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

我正在尝试在 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 函数,它将墙放置在我预感问题所在但我似乎无法弄清楚的地方。任何建议都有帮助:)

相关文章:

apache-spark - 如何在 pyspark 数据帧读取方法中包含分区列

python - 如何在python中调整直方图上的字体大小

reactjs - Expo React-Native 调试器 - 错误 : Unable to r

android - 切换 AdMob 帐户以更改国家/地区的步骤

java - Java 库导出的相对路径

c - 在控制台中移动光标和打印字符不适用于 sleep

javascript - amazon-cognito-identity-js - 忘记了无效用户的

flutter - 飞镖 :tml and dart:js not found error flut

node.js - puppeteer overridePermissions 剪贴板读取不适用于

ios - 快速用户界面 | onDrag - 自定义(dragItem)预览图像外观