の開始のためにあなたに非常によく似たいくつかのコードを含んでいる、あなたがする必要があります"while True:"ループで何か変わることがあります。ここで何をしようとするでしょうコードの例です。
import pygame, sys, pygame.locals#1
pygame.init()#2
window=pygame.display.set_mode((500, 400), 0, 32)#3
pygame.display.set_caption("Paint")#4
BLACK = (0, 0, 0)#5
WHITE = (255, 255, 255)#6
RED = (255, 0, 0)#7
GREEN = (0, 255, 0)#8
BLUE = (0, 0, 255)#9
pentagon=pygame.Surface((250, 265))#10
pentagon.fill((0, 0, 0))#11
pygame.draw.polygon(pentagon, BLUE, ((146, 0), (250, 100), (230, 265), (44, 250), (0,110)))#12
pentagon.set_colorkey((0, 0, 0))#13
triangle=pygame.Surface((150, 200))#14
triangle.fill((0, 0, 0))#15
pygame.draw.polygon(triangle, RED, ((70, 0), (150, 200), (0, 50)))#16
triangle.set_colorkey((0, 0, 0))#17
line=pygame.Surface((60, 8))#18
line.fill(BLACK)#19
circle=pygame.Surface((30, 30))#20
circle.fill((0, 0, 0))#21
pygame.draw.circle(circle, GREEN , (15, 15), 15, 0)#22
circle.set_colorkey((0, 0, 0))#23
rects={'pentagon': pentagon.get_rect(), 'triangle': triangle.get_rect(), 'line': line.get_rect(), 'circle': circle.get_rect()}#24
rects['line'].centery=60#25
rects['line'].left=60#26
rects['circle'].centerx=150#27
rects['circle'].centery=150#28
while True:#29
for event in pygame.event.get():#30
if event.type==pygame.locals.QUIT:#31
pygame.quit()#32
sys.exit()#33
for rect in rects:#34
rects[rect].right+=1#35
if rects[rect].right>500:#36
if rect=='line':#37
rects['line'].centery=60#38
rects['line'].left=60#39
elif rect=='circle':#40
rects['circle'].centerx=150#41
rects['circle'].centery=150#42
else:#43
rects[rect].topleft=(0, 0)#44
window.fill(WHITE)#45
window.blit(pentagon, rects['pentagon'])#46
window.blit(triangle, rects['triangle'])#47
window.blit(line, rects['line'])#48
window.blit(circle, rects['circle'])#49
pygame.time.Clock().tick(40)#50
pygame.display.update()#51
私はこのコードだけでなく、可能性を説明するために最善を尽くします。
あなたはすでに知っています。
10行目はおそらくあなたが知らないものから始まります。サーフェスオブジェクトは、他のサーフェスにアタッチできる、またはpygame.drawを使用して描画できる、矩形のピクチャの一種です。それを信じるかどうか、窓は実際には表面です。
行10はサーフェスを作成し、行11は黒で塗りつぶし、行12はその上に五角形を描画します。
ライン13は、基本的に黒色のすべてのピクセルを透明にします。
14-17行目を理解すると分かります。
18行目は、その行に新しいサーフェスオブジェクトを作成しますが、その上に線を描画するのではなく、黒で塗りつぶして残ります。これは、古いプログラムの行を見ると、それはほんの矩形であることがわかります。
行20-23を理解する必要があります。
行24は、長方形の辞書を作成します。長方形はサーフェスオブジェクトの位置を示し、何かに描画するために必要です。
行25-28は、行と円の位置を変更します。私がこれをしたのは、あなたのプログラムの左上隅にラインとサークルがないことを考慮することが望ましいと思ったからです。
行29-33を理解する必要があります。
行34はすべての矩形を通過するforループを開始します。
行35は、各矩形の右側を1ピクセル右に移動します。
Line 36は、rectの右端がウィンドウの右端に当たっているかどうかを確認します。
ライン37は、そのラインに当たったラインがラインであるかどうかをチェックし、ライン38-39がそれを持っていた場所に移動します。
行40は、側面に当たっているものが円かどうかを確認し、そうであれば41-42行目でその位置に移動します。
行43-44は、左上隅に四角形を置きます。ここで他の2つの図形が始まります。
45行目を知っておく必要があります。
46-49行目は、surface.blit()関数を使用しています。この関数の最初の引数はサーフェスで、2番目の引数はrectです。
ライン50では、1秒間に40フレームを超えて渡すことはできません。
51行目で画面が更新されます。
私は本当にこれが助けを願って、そしてあなたがアップ投票したり、それはそれを書くために私をかかった時間を考えると、私の答えを受け入れた場合、私はそれをお願い申し上げます。ご不明な点がございましたら、お尋ねください。ありがとうございました!
多分これが助けになるかもしれません:http://stackoverflow.com/questions/8252860/pygame-move-object-position-from-one-point-to-another-at-constant-speed/8253040#8253040 – sinan