【发布时间】:2017-05-07 17:01:47
【问题描述】:
我正在 pygame 中开发一款游戏,敌舰将从屏幕外开始,然后沿 Y 轴垂直移动到玩家。
但是,我在访问敌人的位置时遇到了一些麻烦,因为它都是相对于一个范围的。我不太清楚如何解释它,但这是我对 Enemy Class 的看法:
class EnemyActive(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
enemy_img_list = ['enemyshipone.png', 'enemyshiptwo.png',
'enemyshipthree.png','enemyshipfour.png']
enemy_img = random.choice(enemy_img_list)
self.image = pygame.image.load(enemy_img)
self.rect = self.image.get_rect()
self.rect.x = random.randrange(0,400)
self.rect.y = random.randrange(-200,-10)
self.speed = random.randrange(1,3)
def update(self):
self.rect.y += self.speed
def getCoord(self):
return (self.rect.x, self.rect.y)
所以,当我尝试使用另一个函数访问位置时,该函数接受 (x,y) 坐标:
particle_list = particles.create_particles(particle_list,enemy.getCoord())
它返回一个错误说明:
数字 = 范围(-5, -1) + 范围(1, 5)
TypeError:+ 的不支持的操作数类型:“范围”和“范围”
我不会撒谎说我完全理解这个错误,但我确实看到了其推理背后的逻辑。我怎样才能真正让我的“getCoord”函数发送适当的坐标?
【问题讨论】:
-
如果您使用的是 Python 3,请参见此处:stackoverflow.com/questions/13318083/…
-
您能否发布整个堆栈跟踪,这样我们就不必猜测会发生什么?
-
您的代码是否实现了该行?你想让它做什么?在 python 2 中,
range返回一个列表,它们将毫无错误地连接起来。在 python 3 上,你可以numbers = list(range(-5, -1)) + list(range(1, 5)).
标签: python random pygame range