Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 侏儒精灵消失了_Python_Python 2.7_Pygame_Sprite - Fatal编程技术网

Python 侏儒精灵消失了

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,因此=

在我之前的一次旅行中,我遇到了雪碧的麻烦。所以我决定在画它们之前先用清晰的方法。这似乎奏效了,但当精灵们到达屏幕底部时,也就是他们应该回到顶部的时候,他们就消失了。9人中只剩下2人

在他们到达底部之前。



到达底部并重置为顶部后。


主文件 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: