为了使球拍保持在场地上,请在游戏循环中添加一个复选标记,以在球拍到达边缘时阻止球拍移动。
.......if pong.rect.x < 10: pong.rect.x, pong.rect.y = 375, 250 pong.dx = 1 paddle2.points += 1# keep paddles in correct range # add this sectionif paddle1.rect.y < 0 : paddle1.rect.y = 0if paddle3.rect.y < 0 : paddle3.rect.y = 0if paddle2.rect.y < 200 : paddle2.rect.y = 200if paddle4.rect.y < 200 : paddle4.rect.y = 200if paddle1.rect.y > 200 - 75 : paddle1.rect.y = 200 - 75if paddle3.rect.y > 200 - 75 : paddle3.rect.y = 200 - 75if paddle2.rect.y > 500 - 75 : paddle2.rect.y = 500 - 75if paddle4.rect.y > 500 - 75 : paddle4.rect.y = 500 - 75#if the ball and paddle collide, bounce off itif paddle1.rect.colliderect(pong.rect): pong.dx = 1if paddle2.rect.colliderect(pong.rect): pong.dx = -1.....解决方法
我在此乒乓球游戏中做了一个边框,屏幕上的桨可以越过它。我之前在另一段代码中已经做到了,但是现在一切都不同了。我有一个主要的想法如何做,您可能需要一个if语句,但是我没有所有的东西。
您可以删除“ pygame.load.image()”,因为您需要在文件夹中包含带有代码的图像,因此可以将其删除。会更好,因为您可以在python上尝试一下
#import modulesimport pygame pygame.init()#setting the variables for the windowWIDTH = 750HEIGHT = 500#making the windowwin = pygame.display.set_mode((WIDTH,HEIGHT))pygame.display.set_caption('Pong Game')#setting the most important variablesdest = (0,0)dest2 = (200,200)dest3 = (200,50)white = (255,255,255)black = (0,0) green = (0,0)red = (255,0)yellow = (255,222)#load the imagesimage = pygame.image.load('birdupbg.png')image2 = pygame.image.load('birdup.png')#making the paddle classclass Paddle(pygame.sprite.Sprite): def __init__(self):pygame.sprite.Sprite.__init__(self)self.image = pygame.Surface([10,75])self.image.fill(yellow)self.rect = self.image.get_rect()self.points = 0#making the ball classclass Ball(pygame.sprite.Sprite): def __init__(self):pygame.sprite.Sprite.__init__(self)self.image = pygame.Surface([10,10])self.image.fill(red)self.rect = self.image.get_rect()self.speed = 15 self.dx = 1self.dy = 1self.dx2 = 1self.dy2 = 1#making the paddlespaddle1 = Paddle()paddle1.rect.x = 25paddle1.rect.y = 100paddle2 = Paddle()paddle2.rect.x = 715paddle2.rect.y = 225paddle3 = Paddle()paddle3.rect.x = 715paddle3.rect.y = 100paddle4 = Paddle()paddle4.rect.x = 25paddle4.rect.y = 225#paddle speedpaddle_speed = 50pong = Ball()pong.rect.x = 375pong.rect.y = 250ball = Ball()all_sprites = pygame.sprite.Group()all_sprites.add(paddle1,paddle2,paddle3,paddle4,pong)#drawing the score and the word 'pong' def redraw(): win.fill(black) win.blit(image,dest) pygame.draw.line(win,(255,255),[0,200],[900,10) font = pygame.font.SysFont('impact',40) text = font.render('PONG',False,white) textRect = text.get_rect() textRect.center = (750//2,25) win.blit(text,textRect) p1_score = font.render(str(paddle1.points),white) p1Rect = p1_score.get_rect() p1Rect.center = (50,50) win.blit(p1_score,p1Rect) p2_score = font.render(str(paddle2.points),white) p2Rect = p2_score.get_rect() p1Rect.center = (700,50) win.blit(p2_score,p1Rect) all_sprites.draw(win) pygame.display.update()#what happens when the window runsrun = Truewhile run: pygame.time.delay(100) for event in pygame.event.get():if event.type == pygame.QUIT: run = False #if a certain key is pressed,move something key = pygame.key.get_pressed() if key[pygame.K_w]:paddle1.rect.y += -paddle_speed if key[pygame.K_s]:paddle1.rect.y += paddle_speed if key[pygame.K_UP]:paddle2.rect.y += -paddle_speed if key[pygame.K_DOWN]:paddle2.rect.y += paddle_speed if key[pygame.K_i]:paddle3.rect.y += -paddle_speed if key[pygame.K_j]:paddle3.rect.y += paddle_speed if key[pygame.K_1]:paddle4.rect.y += -paddle_speed if key[pygame.K_2]:paddle4.rect.y += paddle_speed pong.rect.x += pong.speed * pong.dx pong.rect.y += pong.speed * pong.dy #scoring system if pong.rect.y > 480:pong.dy = -1 if pong.rect.x > 735:pong.rect.x,pong.rect.y = 375,250pong.dx = -1paddle1.points += 1if pong.rect.y < -1: pong.dy = 1 if pong.rect.x < 10:pong.rect.x,250pong.dx = 1paddle2.points += 1 #if the ball and paddle collide,bounce off it if paddle1.rect.colliderect(pong.rect):pong.dx = 1 if paddle2.rect.colliderect(pong.rect):pong.dx = -1 if paddle1.rect.colliderect(pong.rect):pong.dx = 1 if paddle3.rect.colliderect(pong.rect):pong.dx = -1 if paddle4.rect.colliderect(pong.rect):pong.dx = 1 #Call the redraw function redraw() #update the window and quit it pygame.display.flip()pygame.quit()