2016-12-26 4 views
0

okだから私は14歳なので、これはあまり知られていないので、おそらくこれはちょっとばかな疑問ですが、現在私はランダムに動く小さなブロックを持つプログラムを書こうとしています画面の周りに私は何をしている問題が表示されません。Pygameのランダムな動き

create_randomPATH(x, y) 

を、その関数で使用すると、例えばのローカル値を変更する:あなたが呼び出しあなたのコードで

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() 
+0

コードがどのような奇妙な –

+2

に貼り付けますエラー? – Octo

+0

あなたは 'import random'を実行する必要があります – Octo

答えて

2

ここx

x += 2 

しかし、これはあなたの関数の外で同じ名前の変数を変更しません。変数名のコードにあるラベルにはsomething called "scope"があり、Pythonがそれらを同じデータとして扱うかどうかに影響します。

は、あなたの変数をグローバルにする方法がありますが、代わりにここで私はあなたがすでにあなたの関数からreturn (x, y)を行うので、あなたは、部分的には、リストの割り当てを使用することをお勧めします:

x, y = create_randomPATH(x, y) 
関連する問題