Function 随机数函数
我正在做一个小游戏,当事件发生时,矩形会在一个随机的x和y点上生成,我在实现这些函数时遇到了一些问题。以下是一些基本代码:Function 随机数函数,function,random,pygame,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 'sp
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()
调用一个重新生成随机数的函数对你们中的任何人都有效吗?我知道它会重新生成它们,因为我已经让它打印回变量,但出于某种原因,我的RECT不会在那里执行
注意:这只是我的代码片段,只是想让大家了解我正在尝试做什么
谢谢 您的allRand()方法没有任何代码。必须在该函数中缩进所需的行
这有点有效,因为你仍然把那些语句称为def下面的语句。但这并不是因为您正在调用函数。您的allRand()方法没有任何代码。必须在该函数中缩进所需的行
这有点有效,因为你仍然把那些语句称为def下面的语句。但这并不是因为您正在调用函数。您需要在
allRand()函数中使用global
声明xran
,等等。否则,它只是在函数范围内创建新变量,为它们分配随机值,然后在函数返回时丢弃它们。您需要在allRand()
函数内使用global
声明xran
,等等。否则,它只是在函数范围内创建新变量,给它们分配随机值,然后在函数返回时丢弃它们。要补充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的错误
如果你想让变量进入函数,你需要把它们作为参数传递进去,但同样,除非你返回并捕获它们,否则它们不会影响函数之外的任何东西。同样,您可以将它们声明为全局变量,这也会起作用。补充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的错误
如果你想让变量进入函数,你需要把它们作为参数传递进去,但同样,除非你返回并捕获它们,否则它们不会影响函数之外的任何东西。同样,您可以将它们声明为全局变量,这也会起作用。不,它不会。如果没有在函数中声明全局变量,则它们在函数中的赋值会在函数范围中创建新的变量,这些变量会隐藏全局变量。你自己测试一下,不,没有。如果没有在函数中声明全局变量,则它们在函数中的赋值会在函数范围中创建新的变量,这些变量会隐藏全局变量。自己测试一下,看看结果如何。