好吧,伙计们,所以我正在制作Pong游戏(遵循Sentdex的教程,我修改了很多)。如果它击中我的球拍底部,我希望球能够下降。我只是这个btw的新手
Pong Ball
class Pong(object):
def __init__(self, screensize):
#coolcolor = random.randint(0, 255),random.randint(0, 255),random.randint(0, 255)
self.color = ((WHITE))
self.screensize = screensize
self.centerx = int(screensize[0]*0.5)
self.centery = int(screensize[1]*0.5)
self.radius = 8
self.rect = pygame.Rect(self.centerx-self.radius,
self.centery-self.radius,
self.radius*2, self.radius*2)
direc = [1, -1]
direc = random.choice(direc)
ndirec = [1, -1]
ndirec = random.choice(ndirec)
self.direction = [direc,ndirec]
self.speedx = 3
self.speedy = 4
#CODE TASK: change speed as game progresses to make it harder mwahaha
self.hit_edge_left = False
self.hit_edge_right = False
def update(self, player_paddle, ai_paddle):
self.centerx += self.direction[0]*self.speedx
self.centery += self.direction[1]*self.speedy
self.rect.center = (self.centerx, self.centery)
coolcolor = random.randint(0, 255),random.randint(0, 255),random.randint(0, 255)
#Make new random for each -1
if self.rect.top <= 0:
self.direction[1] = 1
elif self.rect.bottom >= self.screensize[1]-1:
self.direction[1] = -1
if self.rect.right >= self.screensize[0]-1:
self.hit_edge_right = True
elif self.rect.left <= 0:
self.hit_edge_left = True
if self.rect.colliderect(player_paddle.rect):
self.direction[0] = random.randrange(-3, -1)
if self.rect.colliderect(ai_paddle.rect):
self.direction[0] = random.randrange(2, 4)
def render(self, screen):
pygame.draw.circle(screen, self.color, self.rect.center, self.radius, 0)
pygame.draw.circle(screen, (0,0,0), self.rect.center, self.radius, 1)
Player Paddle
class PlayerPaddle(object):
def __init__(self, screensize):
self.screensize = screensize
self.centerx = screensize[0]-5
self.centery = int(screensize[1]*0.5)
self.height = 100
self.width = 10
self.rect = pygame.Rect(0, self.centery-int(self.height*0.5), self.width, self.height)
self.color = ((WHITE))
#CODE TASK: Adjust size of Player paddle as match progresses to make it more difficult
self.speed = 5
self.direction = 0
def update(self):
self.centery += self.direction*self.speed
self.rect.center = (self.centerx, self.centery)
if self.rect.top < 0:
self.rect.top = 0
if self.rect.bottom > self.screensize[1]-1:
self.rect.bottom = self.screensize[1]-1
def render(self, screen):
pygame.draw.rect(screen, self.color, self.rect, 0)
pygame.draw.rect(screen, (0,0,0), self.rect, 1)
答案 0 :(得分:1)
您可以使用colliderect检查碰撞
所以对你来说代码就好了。
您可以将此方法添加到球
def did_collide(self,other):
self.rect.colliderect(other.rect)
类似地,您还可以查看其他collide
方法。