[英]Random movement in 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.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何时将它们视为同一数据。
有一些方法可以使变量全局化,但是在这里我建议您使用列表赋值,部分原因是您已经从函数中return (x, y)
:
x, y = create_randomPATH(x, y)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.