gpt4 book ai didi

python - Sprite 不显示 pygame

转载 作者:行者123 更新时间:2023-12-04 08:13:24 26 4
gpt4 key购买 nike

我对 pygame 完全陌生.我正在尝试重现一只活泼的鸟以试验这个库。
我的问题是这个。我在 Bird 类中有方法。
但是当我使用 moveBird 方法时, Sprite 是可见的,但当我使用 BirdDown 方法时不可见,我不知道为什么。我一开始以为是因为它没有更新循环内的 Sprite 所以我尝试 blit在里面,但仍然什么都没有。一些解释将不胜感激谢谢。

import pygame
from pygame.locals import *

WIDTH = 640
HEIGHT = 480

class Bird:
def __init__(self, y, window):
self.sprite = pygame.image.load('bird.png').convert()
self.velocity = 1
self.position = y
self.window = window

def getPosition(self):
return self.position

def getSpeed(self):
return self.speed

def moveBird(self):
self.position += self.velocity

def birdUpdate(self):
self.window.blit(self.sprite, (0, self.position))

def BirdDown(self):
while self.position != HEIGHT:
self.birdUpdate()
self.position += self.velocity
这是项目的主要内容
import pygame
from pygame.locals import *
import sys
from bird import Bird, WIDTH, HEIGHT

pygame.init()

screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Flappy Bird Clone")
te = Bird(0, screen)

def redraw():
te.moveBird()
#te.BirdDown()
te.birdUpdate()
pygame.display.update()

while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
redraw()

最佳答案

为什么BirdDown中存在循环方法?你能指望什么?
您必须使用应用程序循环。从 Bird.birdDown 中删除循环:

class Bird:
# [...]

def birdDown(self):
self.position += self.velocity
调用 te.birdDown()在应用程序循环中:
def redraw():
screen.fill(0)
te.birdUpdate()
pygame.display.update()

while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()

if event.type == pygame.KEYDOWN:
if event.key == pygme.K_SPACE:
te.moveBird()

te.birdDown()
redraw()

关于python - Sprite 不显示 pygame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65834824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com