Pygame碰撞检测(矩形)

2024-06-02 08:50:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚被介绍给Python,在检测两个矩形之间的碰撞时遇到了一些麻烦。当他们碰撞另一个长方形时,我想弹掉另一个

以下是我目前为止的代码:

import pygame
import sys
from pygame.locals import *
pygame.init()
ww = 400
wh = 300
w = pygame.display.set_mode((ww,wh))
pygame.display.set_caption('OFK')
s = pygame.display.get_surface()
green = pygame.Color(152,251,152)
blue = pygame.Color(135,206,250)
white = pygame.Color(255,255,240)
clock = pygame.time.Clock()
background_file = 'ice-in-water.jpg'
background_image = pygame.image.load(background_file).convert()
rx = ww/2
ry = wh/2
rw = 30
rh = 20
px = ww/2
py = wh - 40
pw = 60
ph = 10
vdirection = -1
hdirection = 1
while True:
  clock.tick(60)
  for event in pygame.event.get():
    if event.type == QUIT:
      pygame.quit()
      quit()
    if event.type == KEYDOWN:
      #print (event.key,event.unicode)
      if event.key == 275:
        px = px + 30
        if px > ww - pw:
          px = ww - pw
      if event.key == 276:
        px = px - 30
        if px < 0:
          px = 0
  s.fill(green)
  pygame.draw.rect(s,blue,(rx,ry,rw,rh),0)
  pygame.draw.rect(s,white,(px,py,pw,ph),0)
  #w.blit(background_image,(-80,0))
  pygame.display.update()
  #mx,my = pygame.mouse.get_pos()
  #print ("x: ", mx, "y: ", my)
  #print ("ry: ", ry, "wh: ", wh)

  rx = rx + 1.5 * hdirection
  if rx > ww - rw:
    hdirection = -hdirection
  if rx < 0:
    hdirection = -hdirection

  ry = ry + 1.5 * vdirection
  if ry > ww:
    rx = ww/2
    ry = wh/2
    vdirection = -vdirection
  if ry < 0:
    vdirection = -vdirection

我试过找一些教程来教你怎么做,但我不能很好地理解。如果你能帮我一点忙,我将不胜感激。在


Tags: importeventgetifdisplayrxpygamebackground