随机数函数Python

时间:2013-07-23 22:34:16

标签: function random pygame

我正在制作一个小游戏,当事件发生时,矩形会在随机的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()

调用重新生成随机数的函数是否适用于任何人?我知道它会重新生成它们,因为我已经将它打印回变量,但由于某种原因,我的目的不在那里。

注意:这只是我的代码片段,它只是想知道我想要做什么。

谢谢!

3 个答案:

答案 0 :(得分:1)

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

它有点工作,因为你仍然会在你的def之下调用那些语句。但这不是因为你正在调用这个函数。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

Read more

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

编辑:

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

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


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

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

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