2016-11-22 33 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)