Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何查看是否发生碰撞_Python_Python 3.x_Pygame - Fatal编程技术网

Python 如何查看是否发生碰撞

Python 如何查看是否发生碰撞,python,python-3.x,pygame,Python,Python 3.x,Pygame,我想看看我的车是不是和一辆卡车相撞。我的车在路上,我不想让它熄火。所以我想让计算机检测汽车是否在路上,有点像colliderect()函数,但恰恰相反。这是我的密码:我的错误愚蠢的奎斯汀 import pygame from pygame.locals import * pygame.init() #define variables width, height = 940, 780 screen = pygame.display.set_mode((width, height)) gr

我想看看我的车是不是和一辆卡车相撞。我的车在路上,我不想让它熄火。所以我想让计算机检测汽车是否在路上,有点像colliderect()函数,但恰恰相反。这是我的密码:我的错误愚蠢的奎斯汀

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, 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, color, (640,90), 40, 0)


    screen.blit(player, playerpos)



    car_rect = player.get_rect(left=playerpos[0], top=playerpos[1])






    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
            if event.key==K_LEFT:
                keys[1]=True
            if event.key==K_DOWN:
                keys[2]=True
            if event.key==K_UP:
                keys[3]=True
            if event.key==K_SPACE:
                keys[4]=True



        if event.type == pygame.KEYUP:
            if event.key==pygame.K_RIGHT:
                keys[0]=False
            if event.key==pygame.K_LEFT:
                keys[1]=False
            if event.key==pygame.K_DOWN:
                keys[2]=False
            if event.key==pygame.K_UP:
                keys[3]=False
            if event.key==pygame.K_SPACE:
                keys[4]=False

    if traffic_light.colliderect(car_rect):
        if color == red:
            keys[0]=False
    if car_rect == 100:
        keys[2]=False


    if keys[0]==True:
        playerpos[0]+=2
    if keys[1]==True:
        playerpos[0]-=2
    if keys[2]==True:
        playerpos[1]+=2
    if keys[3]==True:
        playerpos[1]-=2


    if keys[4]==True:
        if color==red:
            color = green
        else:
            color = red
    pygame.display.update()

感谢您在以前的帮助

您可以使用
not
语句执行与
colliderect
相反的操作:

if not thing1.colliderect(thing2):
    ....

嗯。。。如果不是colliderect(第一件事,第二件事),为什么不
?请显示
colliderect()方法的代码。为什么你已经拥有了所有的空白线?