2016-11-22 67 views
0

如何使紅塊顯示在灰色和綠色塊之間。如何爲我的遊戲正確設置座標

enter image description here

在上述圖象我改變驢的我的矩形x位置到160然後只有我能看到紅色塊如果不是指生病下灰塊隱藏。

這是我的代碼

class Road(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.Surface((200, 500)) 
     self.image.fill(grey) 
     self.rect = self.image.get_rect() 
     self.rect.centerx = width/2 
     #self.rect.left = width-200 
     #print self.rect.left 
     self.speedy = 5 
    def update(self): 
     self.rect.y += self.speedy 
     if self.rect.y > 0: 
      self.rect.y = 0 

class Donkey(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.Surface((100, 100)) 
     self.image.fill(red) 
     self.rect = self.image.get_rect() 
     self.rect.x = 200 
     print 'x:',self.rect.x 
     self.rect.y = -54 
     print 'y:',self.rect.y 
     self.speedy = random.randint(8,10) 
    def update(self): 
     self.choice = (200, 300) 
     self.rect.y += self.speedy 
     if self.rect.top > height: 
      self.rect.x = random.choice(self.choice) 
      print 'x:', self.rect.x 
      self.rect.y = random.randrange(-100, -40) 
      print 'y', self.rect.y 
      self.speedy = random.randint(8,10) 

class Race_car(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.Surface((100, 100)) 
     self.image.fill(green) 
     self.rect = self.image.get_rect() 
     self.rect.x = 200 
     self.rect.bottom = height 
     self.speedy = -0.1 
    def update(self): 
     #self.speedx = 0 
     self.rect.y += self.speedy 
     keypressed = pygame.key.get_pressed() 
     if keypressed[pygame.K_RIGHT]: 
      self.rect.x = 300 
     elif keypressed[pygame.K_LEFT]: 
      self.rect.x = 200 


#Group, object for game_hearth 
game_hearth = pygame.sprite.Group() 
road = Road() 
game_hearth.add(road) 

#Group, object for donkey 
donkey = Donkey() 
donkeys = pygame.sprite.Group() 
game_hearth.add(donkey) 
donkeys.add(donkey) 

#Group, object for racecar 
racecar = Race_car() 
racecars = pygame.sprite.Group() 
game_hearth.add(racecar) 
racecars.add(racecar) 

當我評論的Race_car類的紅色塊工作正常運行後我的代碼,看到

enter image description here

這樣的事情是我想要顯示的灰色道路上方的紅色和綠色街區。所以如何做到這一點,而不需要在我的程序中評論任何課程。我知道它的一些協調錯誤,但我不知道在哪裏改變它。

+0

您能發表一個代碼整體看法嗎? – Jovito

+0

[鏈接] https://gist.github.com/karthicbz/72d5a5b29edb6f082c96abe67c7b91a4 – pkarthicbz

+0

@Jovito我張貼我的鏈接 – pkarthicbz

回答

1

Pygame docs

本集團不保留任何順序的精靈,所以繪製順序是 任意的。

你或許應該切換到pygame.sprite.OrderedUpdates

這個類派生pygame.sprite.RenderUpdates()。它保持 Sprites被添加到組中進行渲染的順序。 這使得從組中添加和刪除精靈的速度比普通組慢 。

#Group, object for game_hearth 
game_hearth = pygame.sprite.OrderedUpdates() 

road = Road() 
game_hearth.add(road) 

#Group, object for donkey 
donkey = Donkey() 
donkeys = pygame.sprite.OrderedUpdates() 
game_hearth.add(donkey) 
donkeys.add(donkey) 

#Group, object for racecar 
racecar = Race_car() 
racecars = pygame.sprite.OrderedUpdates() 
game_hearth.add(racecar) 
racecars.add(racecar)