Python 侏儒精灵消失了
在我之前的一次旅行中,我遇到了雪碧的麻烦。所以我决定在画它们之前先用清晰的方法。这似乎奏效了,但当精灵们到达屏幕底部时,也就是他们应该回到顶部的时候,他们就消失了。9人中只剩下2人 在他们到达底部之前。Python 侏儒精灵消失了,python,python-2.7,pygame,sprite,Python,Python 2.7,Pygame,Sprite,在我之前的一次旅行中,我遇到了雪碧的麻烦。所以我决定在画它们之前先用清晰的方法。这似乎奏效了,但当精灵们到达屏幕底部时,也就是他们应该回到顶部的时候,他们就消失了。9人中只剩下2人 在他们到达底部之前。 到达底部并重置为顶部后。 主文件 raindrop.py(类) 问题是一些雨滴将超过高度,因为速度是[1,8]范围内的随机数,所以速度的倍数可能无法被2*高度整除。例如speedy=7,rect.y从-HEIGHT=-300变为-293,-286,…,295,然后变为大于300的302,因此=
到达底部并重置为顶部后。
主文件 raindrop.py(类) 问题是一些雨滴将超过
高度
,因为速度
是[1,8]范围内的随机数,所以速度
的倍数可能无法被2*高度
整除。例如speedy=7
,rect.y
从-HEIGHT=-300变为-293,-286,…,295,然后变为大于300的302,因此=
检查将永远不会为真,雨滴将永远下降
对>=
进行简单更改即可解决问题:
if self.rect.y >= HEIGHT:
不要包含所有代码;而是创建一个。这将使问题变得更容易阅读、理解、测试/验证,对其他人更有利,也将使试图解决问题的人更容易。下次会考虑这个问题
import pygame
from pygame.locals import *
from os import path
from random import randint
from rain import HEIGHT
img_dir = path.join(path.dirname(__file__), 'img')
class Raindrop(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.width = randint(32, 64)
self.height = self.width + 33
self.image = pygame.image.load(path.join(img_dir, "raindrop.png")).convert_alpha()
self.image = pygame.transform.scale(self.image, (self.width, self.height))
self.speedy = 5 #randint(1, 8)
self.rect = self.image.get_rect()
self.rect.x = randint(0, 290)
self.rect.y = -self.height
def update(self):
self.rect.y += self.speedy
if self.rect.y == HEIGHT:
self.rect.y = -self.height
self.rect.x = randint(0, 290)
if self.rect.y == HEIGHT:
if self.rect.y >= HEIGHT: