当前位置: 首页 > 知识库问答 >
问题:

有人知道为什么精灵不在我的pyGames程序中渲染吗?

呼延鸿畅
2023-03-14

目前,当我运行它时,代码没有给出任何错误。即使我只是尝试渲染一个0,0的管道,没有任何弹出。

我已经得到了地板和鸟渲染正确,和其他一切工作正常。只有管道不会渲染。

我在看一段在线视频https://www.youtube.com/watch?v=UZg49z76cLw

import pygame
import sys

#defining screen size and clock variable
pygame.init()
screen = pygame.display.set_mode((576,1024))
clock = pygame.time.Clock()

#bird physics
gravity = 0.25
bird_movement = 0



#importing all of the images, and doubling their size
bg_surface = pygame.image.load("Py games/assets/background-day.png").convert()
bg_surface = pygame.transform.scale2x(bg_surface)

floor_surface = pygame.image.load("Py games/assets/base.png").convert()
floor_surface = pygame.transform.scale2x(floor_surface)


pipe_surface = pygame.image.load("Py games/assets/pipe-green.png").convert()
pipe_surface = pygame.transform.scale2x(pipe_surface)
#making all clones of pipes have rectangles
pipe_list = []
#How often pipes are made
SPAWNPIPE = pygame.USEREVENT
pygame.time.set_timer(SPAWNPIPE,1200)


bird_surface = pygame.image.load("Py games/assets/bluebird-midflap.png").convert()
bird_surface = pygame.transform.scale2x(bird_surface)
#creating the rectangle around the bird
bird_rect = bird_surface.get_rect(center = (100,512))



#Used to animate floor
floor_x_pos = 0 

def draw_floor():
    screen.blit(floor_surface,(floor_x_pos,900))
    screen.blit(floor_surface,(floor_x_pos + 576,900))


#cloning of pipe
def create_pipe():
    new_pipe = pipe_surface.get_rect(midtop = (288,512))
    return new_pipe

def move_pipes(pipes):
    for pipe in pipes:
        pipe.centerx -= 5
    return pipes

def draw_pipes(pipes):
    for pipe in pipes:
        screen.blit(pipe_surface,pipe)


#main game loop, renders every frame of the game
while True:
    #Event Loop
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        #checks for keypresses
        if event.type == pygame.KEYDOWN:
            #checks if space is pressed
            if event.key == pygame.K_SPACE:
                bird_movement = 0
                bird_movement -= 12
        if event.type == SPAWNPIPE:
            pipe_list.append(create_pipe())
            
    screen.blit(pipe_surface,(0,0))        
            
    #pipes
    pipe_list = move_pipes(pipe_list)
    draw_pipes(pipe_list)

              

    #rendering the background
    screen.blit(bg_surface,(0,0))

    #rendering the bird and a rectangle around that detects colisions
    screen.blit(bird_surface,bird_rect)
    
    #gravity
    bird_movement += gravity
    bird_rect.centery += bird_movement


    #more floor animation
    floor_x_pos -= 1
    draw_floor()  
    if floor_x_pos <= -576:
        floor_x_pos = 0    


    #Causes display update and defines framerate
    pygame.display.update()
    clock.tick(120)

共有1个答案

戚晨
2023-03-14

背景覆盖了管道。绘制背景后,需要绘制管道:

while True:
    # [...]

    #pipes
    pipe_list = move_pipes(pipe_list)
    # draw_pipes(pipe_list)              <--- REMOVE

    #rendering the background
    screen.blit(bg_surface,(0,0))

    # draw pipes
    draw_pipes(pipe_list)              # <--- ADD

    # [...]
 类似资料:
  • 我正试图按照本教程学习pygame。我正试图繁殖敌人的物体,但我认为我犯了一个错误,因为没有显示任何东西。 据我所知,我必须创建一个敌人类,然后添加一个事件来添加敌人(ADDENEMY)。当该事件被调用时(由于计时器的作用,每250毫秒一次),它应该会显示一个向左移动的敌人,直到它到达显示的末尾。 我有一组敌人精灵和一组所有精灵,我使用screen.blit和for循环将所有精灵中的每个实体渲染到

  • 这是GitHub上的python项目,我正在为Magic 8 Ball模拟制作GUI。我似乎无法使用.pack()函数,或者我的窗口只是永远加载而没有实例化。 创建时 当我点击按钮时,文本会出现

  • Note 本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。 为了给我们当前这个黑漆漆的游戏世界带来一点生机,我们将会渲染一些精灵(Sprite)来填补这些空虚。精灵有很多种定义,但这里主要是指一个2D图片,它通常是和一些摆放相关的属性数据一起使用,比如位置、旋转角度以及二维的大小。简单来说,精灵就是那些可以在2D游戏中渲染

  • 问题内容: 为了使用webdriver.io测试我的React应用,我需要使用phantomjs启动它。 起初我以为问题出在webdriver.io,但我意识到当我尝试渲染时PhantomJS返回一个空白页。 为了进行一些测试,我编写了这个javascript文件: 我这样启动: 但是不管我做什么,总是空虚。 我目前使用React 0.14.7和phantomjs 2.1.1。有人对我为什么无法渲

  • 当我在基于pygame的游戏中使用精灵时,它们似乎不能正常工作——正如你在屏幕截图上看到的那样,它们的形状不正确,并且上部有一些奇怪的变形。 黑色方块顶部有变形;中间的精灵一定是箭头形状的东西。 加载图像时涉及的一段代码(从pygame的教程中复制粘贴): 我在MacOSX上的Python2.7.11和3.4.2上做了我的项目,发现了这个问题。但当我在Windows上的Python3.1上测试它时

  • > 控制器 } 服务 -板 > 原因:java。lang.IllegalArgumentException:给定的id不能为null!位于组织。springframework。util。明确肯定组织中的notNull(Assert.java:201)。springframework。数据jpa。存储库。支持简单Parepository。java上的deleteById(SimpleJpaRepos