2017-12-08 23 views
0
import pygame 

pygame.init() 
Display = pygame.display.set_mode((800,600)) 
pygame.display.set_caption("Blocky") 

red = (157, 139, 215) 
black = (0,0,0) 

Display.fill(red) 
pygame.draw.rect(Display,black,(400,300,200,80)) 

pygame.display.update() 

excape = False 

while not excape: 
    for dork in pygame.event.get(): 
     print (dork) 

[私はコピーして、それが動作しない更新機能の下pygame.drawする赤貼り付けるとResultしない理由をどのようにちょうど..

が正しく動作しますが、を説明し、この事の仕事は、このようありません?

+1

私が正しく理解していれば、あなたは 'pygame.display.update'の後に' pygame.draw.rect'を呼び出します。 'pygame.display.update'はメモリからコンピュータのディスプレイにサーフェスを描画する役割を担います。あなたは矩形を描きましたが、ディスプレイを更新するために 'update'を呼び出さないでください – Mirac7

+1

「うまくいかない」とはどういう意味ですか?変更を行うとどうなりますか? –

+0

私は、更新機能の下にコードを貼り付けた後、結果が同じではない、なぜ私はそれらのコードを更新関数の下に置くとうまくいかないのですか?それは私が「働かない」と言った理由です。 – RuhanUR

答えて

1

PyGameは、メモリ内のバッファに描画し、updata()/flip()がモニターに表示されますビデオカードには、このバッファからデータを送信します。

それは、画面をフリックするとの問題のための一般的な方法であり、あなたはそれがビデオカードに送信しないことになるupdate()後に描く場合、それは

Double Bufferingと呼ばれています。

ところで:通常のゲームでは、をwhileループに描画して使用しても問題ありません。

2

(157, 139, 215)は赤色ではありません。あなたの背景と同じ紫色です。

red = (255, 0, 0)

でそれを交換し、異なる塗りつぶしの色に背景表示を設定します。

だから、このようなものは:

purple = (157, 139, 215) 
red = (255, 0, 0) 
black = (0,0,0) 

Display.fill(purple) 
pygame.draw.rect(Display,red,(400,300,200,80)) 
+0

私はred-pygame.drawのコードをコピーして更新の下に貼り付けると、結果が同じではないので、私の質問はなぜですか? – RuhanUR

+0

@RuhanURあなたはすでに@ Mirac7のコメントで答えを得ています。 PyGameはバッファに描画し、 'updata()/ flip()'はバッファからビデオカードにデータを送り、それをモニタに表示します。画面をフリックする問題でよく使われる方法で、[ダブルバッファリング](https://en.wikipedia.org/wiki/Multiple_buffering#Double_buffering_in_computer_graphics)と呼ばれます。 'update()'の後に描画すると、送信されませんビデオカードに。 – furas

関連する問題