4
    '''
Created on 21. sep. 2013

Page 136 in ze almighty python book, 4.3

@author: Christian
'''

import sys,pygame,time

pygame.init()

numLevels = 15           # Number of levels    
unitSize = 25            # Height of one level 
white = (255,255,255)    # RGB Value of White
black = (0,0,0)          # RGB Value of Black
size = unitSize * (numLevels + 1)
xPos = size /2.0         # Constant position of X value 
screenSize = size,size   # Screen size to accomodate pygame 

screen = pygame.display.set_mode(screenSize)

for level in range(numLevels):
    yPos = (level + 1) * unitSize
    width = (level +1) * unitSize
    block = pygame.draw.rect(screen,white,(0,0,width,unitSize),0)
    block.move(xPos,yPos)
    pygame.time.wait(100)
    pygame.display.flip()

block.move(xPos,yPos) は機能するはずですが、奇妙な理由で機能しません。理由がわかりません。他のすべてが正常に機能していることはほぼ確実です。このサイトに来て助けを求める前に、インターウェブを何時間も検索しました.

4

2 に答える 2

3

ドキュメントから、タプルではなく、コンストラクターでdraw.rectaを使用しているようです:Rect

block = pygame.draw.rect(screen, white, Rect(0, 0, width, unitSize), 0)

返されたものを移動してRectも、魔法のようにブロックが再び描画されることはありません。ブロックを再度描画するには、ブロックを再度描画する必要があります。

block.move(xPos,yPos)
block = pygame.draw.rect(screen, white, block, 0)

もちろん、2 回描画したため、画面には 2 つのブロックが表示されます。とにかくブロックを移動したいのに、そもそもなぜ古い場所に描画するのでしょうか? 最初に希望の場所を指定してみませんか?

block = pygame.draw.rect(screen, white, Rect(xPos, yPos, width, unitSize), 0)

あなたがやろうとしていることについてのより多くの情報があれば、おそらくより良い答えを構築することができます.

于 2013-10-14T21:11:40.953 に答える