我是 pygame 的新手,试图创建一只飞扬的小鸟。 到目前为止,我已经编写了以下代码。 https://gist.github.com/Devansha2007/fa0e5554547e6b1395e3bf3783a4c53d
import pygame
import random
pygame.init()
surface = pygame.display.set_mode((320, 568))
bg = pygame.image.load('bg.png')
bird = pygame.image.load('player.png')
pole_width = 70
pole_gap = 100
pole_x = 320
top_pole_height = random.randint(100, 400)
pole_color = (220, 85, 57)
bird_x = 0
bird_y = 0
score = 0
clock = pygame.time.Clock()
while True:
pygame.event.get()
keys = pygame.key.get_pressed()
if keys[pygame.K_DOWN]:
bird_y = bird_y + 6
elif keys[pygame.K_UP]:
bird_y = bird_y - 6
surface.blit(bg, (0, 0))
surface.blit(bird, (bird_x, bird_y))
pygame.draw.rect(surface, pole_color, pygame.Rect(pole_x, 0, pole_width, top_pole_height))
# pole_x = pole_x - 500
pygame.display.flip()
pygame.display.update()
clock.tick(60)
答案 0 :(得分:0)
矩形超出边界,因为 pole_x = pole_x - 500
和初始 x 坐标。删除 pole_x = pole_x - 500
并更改初始 x 坐标:
pole_x = 320 - pole_width
while True:
pygame.event.get()
keys = pygame.key.get_pressed()
if keys[pygame.K_DOWN]:
bird_y = bird_y + 6
elif keys[pygame.K_UP]:
bird_y = bird_y - 3
surface.blit(bg, (0, 0))
surface.blit(bird, (bird_x, bird_y))
# pole_x = pole_x - 500 <-- remove or change this
pygame.draw.rect(surface, pole_color, pygame.Rect(pole_x, 0, pole_width, top_pole_height))
pygame.display.flip()
pygame.display.update()
clock.tick(60)
如果要缓慢平滑地移动矩形,请更改移动:
pole_x = pole_x - 500
pole_x -= 1
应用循环:
while True:
pygame.event.get()
keys = pygame.key.get_pressed()
if keys[pygame.K_DOWN]:
bird_y = bird_y + 6
elif keys[pygame.K_UP]:
bird_y = bird_y - 3
surface.blit(bg, (0, 0))
surface.blit(bird, (bird_x, bird_y))
pole_x -= 1
pygame.draw.rect(surface, pole_color, pygame.Rect(pole_x, 0, pole_width, top_pole_height))
pygame.display.flip()
pygame.display.update()
clock.tick(60)`