Python 3.x Rect.colliderect无法检测特定的冲突
我正在尝试制作一个非常简单的游戏,以下是我的完整代码:Python 3.x Rect.colliderect无法检测特定的冲突,python-3.x,pygame,rect,Python 3.x,Pygame,Rect,我正在尝试制作一个非常简单的游戏,以下是我的完整代码: import pygame from pygame.locals import * pygame.init() #define variables width, height = 940, 780 screen = pygame.display.set_mode((width, height)) grey = 87, 87, 87 white = 255, 255, 255 player = pygame.image.load("Pics
import pygame
from pygame.locals import *
pygame.init()
#define variables
width, height = 940, 780
screen = pygame.display.set_mode((width, height))
grey = 87, 87, 87
white = 255, 255, 255
player = pygame.image.load("Pics\goodcar.jpeg")
keys = [False, False, False, False]
playerpos = [0,40]
green = 0,255,0
red = 255,0,0
color = red
x1 = 0
x2 = 40
y1 = 940
y2 = 100
#main program
while 1:
screen.fill(0)
road = pygame.draw.rect(screen, grey, (x1,x2,y1,y2), 0)
traffic_light = pygame.draw.circle(screen, white, (640,90), 40, 1)
screen.blit(player, playerpos)
car_rect = player.get_rect()
if traffic_light.colliderect(car_rect):
print("Its working")
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
exit(0)
if event.type == pygame.KEYDOWN:
if event.key==K_RIGHT:
keys[0]=True
elif event.key==K_LEFT:
keys[1]=True
elif event.key==K_DOWN:
keys[2]=True
elif event.key==K_UP:
keys[3]=True
if event.type == pygame.KEYUP:
if event.key==pygame.K_RIGHT:
keys[0]=False
elif event.key==pygame.K_LEFT:
keys[1]=False
elif event.key==pygame.K_DOWN:
keys[2]=False
elif event.key==pygame.K_UP:
keys[3]=False
if keys[0]==True:
playerpos[0]+=3
elif keys[1]==True:
playerpos[0]-=3
elif keys[2]==True:
playerpos[1]+=3
elif keys[3]==True:
playerpos[1]-=3
pygame.display.update()
在检查汽车是否与红绿灯相撞的部分,它什么也没做。
Iv'e尝试使用try语句,但仍然不起作用查看文档有什么作用: 返回覆盖整个曲面的新矩形。此矩形将始终从0开始,0具有宽度。高度和图像大小相同 所以矩形永远不会碰撞,因为汽车的矩形总是从0,0开始。一个简单的解决方法是在调用get_Rect时简单地设置car Rect顶部和左侧的起始位置 改变
car_rect = player.get_rect()
致:
另一种方法是使用Sprite类,它基本上结合了一个曲面和一个矩形
car_rect = player.get_rect(left=playerpos[0], top=playerpos[1])