2016-03-25 16 views
0

このコードで虹色のグラデーションを作成しようとしましたが、UnboundLocalErrorがあります。pygameグラデーション関数のUnboundLocalError

import pygame, random, time 

Red = 0 
Blue = 0 
Green = 0 

background_color = (Red, Green, Blue) 
(width, height) = (300, 200) 


def ChangeRa(): 
    Red += 1 
def ChangeGa(): 
    Green += 1 
def ChangeBa(): 
    Blue += 1 
def ChangeRs(): 
    Red += 1 
def ChangeGs(): 
    Green += 1 
def ChangeBs(): 
    Blue += 1 

while Red <= 255: 
    ChangeRa() 
    time.sleep(0.1) 
while Green <= 255: 
    ChangeGa() 
    time.sleep(0.1) 
while Blue <= 255: 
    ChangeBa() 
    time.sleep(0.1) 
while Red >= 0: 
    ChangeRs() 
    time.sleep(0.1) 
while Green >= 0: 
    ChangeGs() 
    time.sleep(0.1) 
while Blue >= 0: 
    ChangeBs() 
    time.sleep(0.1) 

screen = pygame.display.set_mode((width, height)) 
pygame.display.set_caption('Rainbow!!!') 
screen.fill(background_colour) 

def close(): 
    running = True 
    while running: 
     for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      running = False 
    pygame.quit() 

close() 

これはエラーメッセージです:

Traceback (most recent call last): 
    File "/home/ronnochj/Fill.py", line 25, in <module> 
    ChangeRa() 
    File "/home/ronnochj/Fill.py", line 12, in ChangeRa 
    Red += 1 
UnboundLocalError: local variable 'Red' referenced before assignment 

答えて

0

あなたがここに代入する前Redを参照している(同じBlueGreen適用されます):

def ChangeRa(): 
    Red += 1 

あなたが何かを言うことができます:

Red = 0 
global Red 

そして

def ChangeRa(): 
    Red += 1 

RedのみChangeRaの外で定義されていることに注意してください。関数内でグローバル変数にアクセスできるようにするには、グローバル変数を使用します。

TLDRGreen = 0

次の行に global Red, Blue, Greenを追加します。
関連する問題