0

我正在制作一个小游戏,当事件发生时,矩形会在随机的 x 和 y 点产生,我在实现函数时遇到了一些麻烦。这是一些基本代码:

xran = random.randint(5, 485)
yran = random.randint(5, 485)
xran1 = random.randint(5, 450)
yran1 = random.randint(5, 400)

def allRand():
     #This REGENERATES those randoms making it 'spawn' in a new location.
     xran = random.randint(0, 485)
     yran = random.randint(0, 485)
     xran1 = random.randint(5, 450)
     yran1 = random.randint(5, 400)

char = pygame.draw.rect(screen, black, (x,y,15,15), 0)
food = pygame.draw.rect(screen, green, (xran,yran,10,10), 0)
badGuy = pygame.draw.rect(screen, red, (xran1,yran1,50,100), 0)


if char.colliderect(food):
    score += 1
    print "Your score is:",score
    allRand()

调用一个重新生成随机数的函数对你们中的任何人都有效吗?我知道它会重新生成它们,因为我已经让它打印回变量,但由于某种原因,我的矩形并没有在那里做。

注意:这只是我的代码片段,它只是为了让我了解我想要做什么。

谢谢!

4

3 回答 3

1

您的 allRand() 方法没有任何代码。您必须在该函数中缩进所需的行。

这有点工作,因为你仍然在你的 def 下调用这些语句。但这不是因为您正在调用该函数。

于 2013-07-23T22:39:11.533 回答
1

添加到 Lee Daniel Crocker 的回答中,当您在函数中创建变量时,它们仅存在于该函数中。如果您希望它们存在于外部,您可以按照他的建议将它们设为全局变量,您可以返回它们并捕获它们:

>>> def square(number):
    squared = number*number
    return squared

>>> square(3)
9
>>> ninesquared = square(3)
>>> ninesquared
9
>>> 

阅读更多

看来您需要掌握基础知识。我建议在 pygame 中尝试之前先这样做。

编辑:

如果您在函数之外定义变量,它们也不会影响您在函数中定义的任何变量。

>>> x = 5
>>> def rais():
    x = 10


>>> x
5
>>> rais()
>>> x
5
>>> 

注意怎么rais什么都没做?如果我们将其中的行更改为,raispythonx = x + 1将返回一个错误,即 x 未定义。

如果你想让你的变量进入函数,你需要将它们作为参数传递,但是再一次,除非你返回并捕获它们,否则它们不会影响函数之外的任何东西。再一次,您可以将它们声明为全局变量,这也可以。

于 2013-07-24T07:18:57.063 回答
1

您需要在函数内部声明xran等。否则,它只是在函数范围内创建新变量,为它们分配随机值,然后在函数返回时将它们丢弃。globalallRand()

于 2013-07-24T05:25:31.233 回答