我正在制作一个小游戏,当事件发生时,矩形会在随机的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()
调用重新生成随机数的函数是否适用于任何人?我知道它会重新生成它们,因为我已经将它打印回变量,但由于某种原因,我的目的不在那里。
注意:这只是我的代码片段,它只是想知道我想要做什么。
谢谢!
答案 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
>>>
看起来你需要掌握基础知识。我建议先在pygame中尝试之前先做这件事。
编辑:
如果在函数之外定义变量,它们也不会影响您在函数中定义的任何变量。
>>> x = 5
>>> def rais():
x = 10
>>> x
5
>>> rais()
>>> x
5
>>>
注意rais
什么都没做?
如果我们将rais
中的行更改为x = x + 1
,那么python将返回一个错误,即x未定义。
如果你想要变量进入函数,你需要将它们作为参数传递,但是再一次,它们不会影响函数之外的任何东西,除非你返回并捕获它们。再次,您可以将它们声明为全局变量,这也将起作用。