Python I';我一直在尝试用PyGame制作一个游戏,但碰撞检测器不工作

Python I';我一直在尝试用PyGame制作一个游戏,但碰撞检测器不工作,python,pygame,Python,Pygame,我一直在尝试学习PyGame的基础知识,所以我一直在尝试制作一个非常基础的游戏。游戏应该由一个红方块组成,如果它撞到从天上掉下来的一个蓝色方块,它就会四处移动并失败。一切正常,除了碰撞检测器,它没有检测到任何东西。有人能帮我吗?代码如下: 将pygame导入为pg 导入系统 将随机导入为rd 第init页() winWidth=850 winHeight=600 红色=(255,0,0) 蓝色=(0,0255) 速度=10 玩家位置=[int(winWidth/2-25),winHeight-1

我一直在尝试学习PyGame的基础知识,所以我一直在尝试制作一个非常基础的游戏。游戏应该由一个红方块组成,如果它撞到从天上掉下来的一个蓝色方块,它就会四处移动并失败。一切正常,除了碰撞检测器,它没有检测到任何东西。有人能帮我吗?代码如下:

将pygame导入为pg
导入系统
将随机导入为rd
第init页()
winWidth=850
winHeight=600
红色=(255,0,0)
蓝色=(0,0255)
速度=10
玩家位置=[int(winWidth/2-25),winHeight-100]
enemyList=[]
时钟=pg.time.clock()
win=pg.display.set_模式((winWidth,winHeight))
pg.display.set_标题(“游戏”)
#创建敌人的位置并将其返回
def create敌军():
敌人=[rd.randrange(0,winWidth-50,50),0]
还敌
#在接收到的位置吸引敌人
敌方(敌方位置):
pg.draw.rect(胜利,蓝色,(敌方位置[0],敌方位置[1],50,50))
#如果敌人在屏幕内,它将向下移动。
#否则,它将从列表中删除。
def更新状态(敌方位置):
如果0=玩家位置[1]+50>=敌人[1]+50:
返回真值
elif敌方[0]==玩家位置[0]和敌方[1]>=玩家位置[1]>=敌方[1]+50:
返回真值
返回错误
尽管如此:
#始终在屏幕上显示10个敌人
而len(enemyList)<11:
enemyList.append(create敌方())
#移动玩家
对于pg.event.get()中的事件:
如果event.type==pg.QUIT:
sys.exit()
如果event.type==pg.KEYDOWN:
如果event.key==pg.K_左:
播放器位置[0]-=50
elif event.key==pg.K_RIGHT:
玩家位置[0]+=50
对于enemyList中的敌人位置:
更新日期(敌方位置)
对于enemyList中的敌人:
如果碰撞检测器(敌人):
sys.exit()
赢。填充((0,0,0))
pg.draw.rect(胜利,红色,(球员位置[0],球员位置[1],50,50))
对于enemyList中的敌人位置:
付款人(敌人)
时钟滴答(30)
pg.display.update()

重新检查碰撞检测条件。这是可行的,但需要微调

if enemy[0] == player_pos[0] and enemy[1] <= player_pos[1] + 50 <= enemy[1] + 50:
    return True
elif enemy[0] == player_pos[0] and enemy[1] <= player_pos[1] <= enemy[1] + 50:
    return True
return False
如果敌人[0]==玩家位置[0]和敌人[1]我建议使用对象并检查与矩形的碰撞:

#检测碰撞
def碰撞检测器(敌人):
playerRect=pg.Rect(*玩家位置,50,50)
enemyRect=pg.Rect(*敌人,50,50)
返回playerRect.colliderect(enemyRect)

欢迎来到SO。如果这就是你想要的,请接受我的回答。有乐趣的编程。干杯