陈尚涵 发表于 2020-4-6 15:04:05

pygame的碰撞检测的问题!快来呀!求助!

我最近再练习用pygame,可是不知道碰撞检测该怎么写。我就将X匹配和Y匹配(24行),可是每次我把板图片放在小球图片的下面,总是不行。但是移动就能接到。这是为什么 呢?如果能改进匹配XY的代码,那就太谢谢了。或者换一种方法匹配也是可以的。代码(有一个小球和一个板,自己找素材,分别命名为test1.png, test2.png):
import pygame
import sys
pygame.init()
window_size = 600, 400
window_color = 255, 255, 255, 255
window_caption = pygame.display.set_caption("Paddle Game")
window = pygame.display.set_mode(window_size)
paddle = pygame.image.load("test1.png")
ball = pygame.image.load("test2.png")
clock = pygame.time.Clock()
PlayerScore = 0
ComputerScore = 0
PaddlePos = 150, 300
BallPos = 260, 50
while True:
    print(PlayerScore, ComputerScore)
    clock.tick(500)
    BallPos = BallPos, BallPos+1
    if PaddlePos < 300:
      PaddlePos = pygame.mouse.get_pos(), PaddlePos
    else:
      while PaddlePos > 299:
            PaddlePos = PaddlePos-1, PaddlePos
    if BallPos > 220 and BallPos < PaddlePos+30 and BallPos > PaddlePos-30:
      PlayerScore += 1
      BallPos = 260, 50
    if BallPos > 500:
      ComputerScore += 1
      BallPos = 260, 50
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
            sys.exit()
    window.fill(window_color)
    window.blit(paddle, PaddlePos)
    window.blit(ball, BallPos)
    pygame.display.update()

陈尚涵 发表于 2020-4-6 15:14:36

没人吗{:10_266:}{:10_266:}

激光鱼 发表于 2020-4-6 16:24:33

本帖最后由 激光鱼 于 2020-4-6 16:25 编辑

我提供一种思路给你,开发游戏我还是建议用面向对象的方法。
首先,pygame有自己的碰撞检测方法,可自己百度
如果将你的球和板看做对象的话,并已近创建对应的精灵组了,那么可以使用pygame自带碰撞检测,并设置参数使两个精灵组都不被破坏,让他们接触时发出一个事件,pygame也有自带事件检索方法,程序设置一个if语句检测事件,一旦事件发生,意味着球和板碰到了,你可以在下面进行下一步动作
页: [1]
查看完整版本: pygame的碰撞检测的问题!快来呀!求助!