Python Pygame中的随机运动

Python Pygame中的随机运动,python,pygame,Python,Pygame,好吧,我14岁,不知道那么多,所以这可能会是一个有点愚蠢的问题,但目前我正在尝试编写一个程序,将有一个小块在屏幕上随机移动,我没有看到我所做的问题 import pygame,sys,random from pygame.locals import * #colours red =(255,0,0) white=(255,255,255) #variables/objects ship_width = 60 x = 400 y = 520 FPS = 60 clock =pygame.time

好吧,我14岁,不知道那么多,所以这可能会是一个有点愚蠢的问题,但目前我正在尝试编写一个程序,将有一个小块在屏幕上随机移动,我没有看到我所做的问题

import pygame,sys,random
from pygame.locals import *
#colours
red =(255,0,0)
white=(255,255,255)

#variables/objects
ship_width = 60
x = 400
y = 520
FPS = 60
clock =pygame.time.Clock()
screen = pygame.display.set_mode((800,600))

def move_rect(x,y):
ship = pygame.draw.rect(screen,red,(x,y,ship_width,ship_width))

def create_randomPATH(x,y):
random_gen = False
if random_gen == False:
    randomX = random.randint(1,60)
    randomY = random.randint(1,60)
    random_gen = True
want_valX = x  + randomX
want_valY = y  + randomY
if want_valX  !=  x:
    x += 2
elif want-valY != y:
    y += 2
print (x,y)
return x,y


while True:
clock.tick(FPS)
for event in pygame.event.get():
    if event.type == QUIT:
        pygame.quit()
        sys.exit()
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:
            x -= 10
        if event.key == pygame.K_RIGHT:
            x += 10
        if event.key == pygame.K_DOWN:
            y += 10
        if event.key == pygame.K_UP:
            y -= 10


    screen.fill(white)
    create_randomPATH(x, y)
    print (x,y)
    move_rect(x, y)


    pygame.display.update()
在代码中调用:

create_randomPATH(x, y)
在该函数中,您可以在此处更改局部值,例如
x

x += 2
但是,这不会更改函数外部具有相同名称的变量。代码中变量名的标签会影响Python何时将它们视为同一数据段

有一些方法可以使变量成为全局变量,但我建议您使用列表赋值,部分原因是您已经从函数中执行了
返回(x,y)

x, y = create_randomPATH(x, y)
在代码中调用:

create_randomPATH(x, y)
在该函数中,您可以在此处更改局部值,例如
x

x += 2
但是,这不会更改函数外部具有相同名称的变量。代码中变量名的标签会影响Python何时将它们视为同一数据段

有一些方法可以使变量成为全局变量,但我建议您使用列表赋值,部分原因是您已经从函数中执行了
返回(x,y)

x, y = create_randomPATH(x, y)

粘贴的代码有什么错误?您需要执行“导入随机”操作。您应该在问题中编辑代码的缩进。目前,scree.fill和movement似乎在event.get循环中,这不是您希望粘贴的代码。错误是什么?您需要执行“导入随机”操作,您应该编辑问题中的代码缩进。目前,scree.fill和movement似乎位于event.get循环中,这不是您想要的