2

私は大学のコース用にPythonテトリスクローンをプログラミングしています。落下するブロックのルートを変えようとしない限り、それは魅力のように機能します。それらを高速化するか、ブロックを左または右に移動すると、下のスクリーンショットに示すアーティファクトが表示されます。

コードは、ブロックのすべての動きで同じです。

runningBlock.update()
runningBlock.draw(field)
screen.blit(field, (20, 20))
pygame.display.flip()

一方、update()メソッドは、移動するオブジェクトの中心を新しい位置に設定するだけです。画面はスクリーンショットの灰色の領域であり、フィールドは灰色の画面の上にある白い遊び場です。何か考え、私がここに欠けているものは何ですか?

ところで、フレームレートは30に設定されていますが、問題ないはずですよね?

スクリーンショット

4

1 に答える 1

1

了解しました。ブロックを更新する前に、フィールドに入力し直しました。

field.fill((255, 255, 255))
runningBlock.update()
runningBlock.draw(field)
lyingBlocks.draw(field)
screen.blit(field, (20, 20))
pygame.display.flip()
于 2012-05-16T11:32:09.983 に答える