2016-12-17 15 views
1

私はpygameを使用してペイントクローンを作成しようとしていますが、このエラーを解決するには固執しています。私は非常にPythonで新しいですので、私の恐ろしいコードXDを判断しないでくださいエラーメッセージ:属性エラーヘルプPygameの場合

です。

from pygame import * 
from random import * 
from math import * 
screen = display.set_mode((1280,720)) 
display.set_caption("Paint Program") 
running = True 
#graphics ------------------------------------------------- 
bg=image.load("background.jpg").convert_alpha() 
logo=image.load("logo.png").convert_alpha() 
draw=image.load("draw.png").convert_alpha() 
fill=image.load("fill.png").convert_alpha() 
text=image.load("txt.png").convert_alpha() 
drawC=image.load("cir.png").convert_alpha() 
drawR=image.load("rect.png").convert_alpha() 
erase=image.load("eraser.png").convert_alpha() 

bg=transform.scale(bg,(1280,720)) 

screen.blit(bg,(0,0)) 
screen.blit(logo,(0,0)) 
screen.blit(draw,(10,150)) 
screen.blit(fill,(210,150)) 
screen.blit(drawC,(10,300)) 
screen.blit(drawR,(210,300)) 
screen.blit(erase,(10,450)) 
screen.blit(text,(210,450)) 


hitD=Rect(10,150,150,150) 

pencilRect = Rect(20,80,40,40) 
draw.rect(screen,(0,255,0),pencilRect,2) 
#gameloop ------------------------------------------------- 
while running: 
    for evnt in event.get(): 
     if evnt.type == QUIT: 
      running = False 

    mx, my = mouse.get_pos() 
    mb = mouse.get_pressed() 

#Paint Brush ------------------------------------------------- 
    if hitD.collidepoint(mx,my) and mb[0]==1: 
     print("I CHOOSE PAINTBRUSH!") 


    display.flip() 
quit() 
+0

あなたは 'from pygame import *'を使うので問題があります。 'import pygame'を使用すると、' pygame.draw.rect() 'を呼び出す必要があり、変数' draw = image.load(...) 'と衝突しません。 – furas

答えて

3

変数名と関数名を混在させています。変数drawの名前は、from pygame import *でpygameからすべてをインポートすることを選択したので、組み込まれたpygame.draw...()関数を混乱させるので、この名前の答えの一番下を参照してください。

あなたは:

draw=image.load("draw.png").convert_alpha() 

、その後:あなたはその後、呼び出し:

pencilRect = Rect(20,80,40,40) 
draw.rect(screen,(0,255,0),pencilRect,2) 

それはあなたがあなたのimage.loadラインにインポートした画像オブジェクトとして描くために参照する、とされていると考えて内蔵のpygame.draw.rect()機能ではありません。あなたが書く場合:

any_other_name=image.load("draw.png").convert_alpha() 

あなたのコードは動作するはずです。これにさらに

を:あなたはfrom pygame import *を書く:一般的には、(drawlistlenとあなたのケースのようなもの)変数として関数名を使用していない、すなわち、変数と内蔵関数名を混在しないようにしてください。つまり、関数は、draw.rect()と書くだけで呼び出すことができます。代わりにimport pygame as pgを書き、pg.draw.rect()と書くと、このような状況を避けることができ、使用している関数をよりよく追跡できます。

+0

@ZackLiuこれで問題は解決しましたか? – Chuck

関連する問題