2016-03-20 21 views
0

Ich kann clamp nicht funktionieren. Ich dachte, clamp ist, ein rect innerhalb eines anderen zu halten, aber der folgende Versuch setzt den blauen Ball nicht innerhalb des roten rect. Wo ist das Problem?Pygame pygame.Rect.Clamp

import pygame 
from pygame.locals import * 

pygame.init() 

TV=pygame.display.set_mode((400,400)) 
pygame.display.set_caption("Rect") 

c=pygame.draw.circle(TV,(0,100,0),(150,100),100,1) 
c1=pygame.draw.circle(TV,(0,0,200),(250,250),20,1) 
r=pygame.draw.rect(TV,(100,0,0),c,1) 
c1.clamp(r) 
pygame.display.flip() 


while True: 
    for e in pygame.event.get(): 
     if e.type==QUIT: 
      pygame.quit() 
+1

Ein 'Kreis' gibt ein' Rect' zurück – amirteymuri

Antwort

2

clamp gibt einen neuen Rect ohne die Quelle zu ändern Rect selbst. Wenn Sie die Quelle Rect ändern möchten, müssen Sie clamp_ip verwenden.

Aber das ist nicht genug für Sie, weil Sie den Kreis direkt Fläche auf dem Bildschirm zeichnen, und die resultung Rect ändert nichts tut:

Sie haben eine neue Surface, ziehen Sie Ihre Kreis auf sie zu schaffen und erhalten a Rect von diesem Surface (oder jedes andere Rect, das Sie zum Zeichnen verwenden werden, aber es ist am einfachsten, nur die get_rect() Funktion zu verwenden).

Dann machen Sie was Sie wollen mit dieser Rect, z.B. Verwenden Sie clamp_ip oder erhalten Sie eine neue mit clamp, dann verwenden Sie diese Rect (oder die neue) zusammen mit der blit Funktion, z. TV.blit(the_new_surface, the_rect).