Pygame 不绘制矩形

问题描述

我是 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,pole_width,top_pole_height))
    # pole_x = pole_x - 500
    pygame.display.flip()
    pygame.display.update()
    clock.tick(60)

解决方法

矩形超出边界,因为 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,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,bird_y))
    pole_x -= 1
    pygame.draw.rect(surface,top_pole_height))
    pygame.display.flip()
    pygame.display.update()
    clock.tick(60)`