2016-04-09 9 views
0

nesneleri, sorun ben başka üst üste nesneyi taşıdığınızda i sürekli üzerinde her biri ing blit olmama rağmen sonuncusu kaybolur olmasıdır ekran. Bu neden oluyor ve bunu daha iyi nasıl yapabilirim?Pygame hareketli bireysel Ben birbirlerinden bağımsız olarak ekranda farklı nesneleri hareket ancak test ediyorum

import pygame 
from pygame.locals import * 
from random import randrange 


class Tst(object): 

    def __init__(self): 
     self.img=pygame.Surface((20,20)) 
     self.img.fill((100,200,0)) 
     self.rect=self.img.get_rect(center=(randrange(780),randrange(480))) 
     #pygame.draw.rect(TV,(0,0,255),self.rect,1) 
     TV.blit(self.img,self.rect) 
    def move(self): 
     mouse_pos=pygame.mouse.get_pos() 
     if pygame.mouse.get_pressed()[0]: 
      if self.rect.collidepoint(mouse_pos): 
       TV.fill((0,0,0),self.rect) 
       self.rect=pygame.Rect(mouse_pos[0]-10,mouse_pos[1]-10,20,20) 
     TV.blit(self.img,self.rect) 


pygame.init() 
TV=pygame.display.set_mode((800,500)) 

tstList=[] 
for _ in range(10): 
    tstList.append(Tst()) 

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

    for tst in tstList: 
     tst.move() 

    pygame.display.flip() 

cevap

1

sorun bu hat ile geçerli:

self.rect=pygame.Rect(mouse_pos[0]-10,mouse_pos[1]-10,20,20) 

Temelde, onlar fare pozisyonunda tümü. Her bir meydana bir ad verin ve konsola ismi ve rect yazdırmak, bu görebilirsiniz. Fare bir kare bittiğinde fare pos bunu ayarlarken seti, ve sonunda tüm kareler fare pos birbirinin üzerinde bulunmaktadır. Ne yapmaya çalışıyorsun sen başarmak için çalışıyoruz bağlıdır şekilde, bunu değiştirmek için ne yapması gerektiğini söylemek alamıyorum tam olarak ne emin değilim. Daha fazla öneriye ihtiyacınız varsa bana bildirin ve yardım etmeye çalışacağım.

import pygame 
from pygame.locals import * 
from random import randrange 


class Tst(object): 

    def __init__(self, name): 
     self.name = name 
     self.img=pygame.Surface((20,20)) 
     self.img.fill((100,200,0)) 
     self.rect=self.img.get_rect(center=(randrange(780),randrange(480))) 
     #print self.rect 
     #pygame.draw.rect(TV,(0,0,255),self.rect,1) 
     TV.blit(self.img,self.rect) 
    def move(self): 
     mouse_pos=pygame.mouse.get_pos() 
     if pygame.mouse.get_pressed()[0]: 
      if self.rect.collidepoint(mouse_pos): 
       TV.fill((0,0,0),self.rect) 
       self.rect=pygame.Rect(mouse_pos[0]-10,mouse_pos[1]-10,20,20) 
       print self.name, 
       print self.rect 
     TV.blit(self.img,self.rect) 


pygame.init() 
TV=pygame.display.set_mode((800,500)) 

tstList=[] 
for x in range(10): 
    print x 
    letters = "abcdefghij" 
    tstList.append(Tst(letters[x])) 

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

    for tst in tstList: 
     tst.move() 
     #print tst.img.get_rect() 
    pygame.display.flip() 
: Burada

onları dışarı yazdırır koddur
İlgili konular