2013-10-14 3 views
0

Недавно я наткнулся на что-то, что называется PyGame Sprite, и хотел бы научиться создавать спрайты Pygame, так как это будет очень полезно для моего проекта.Как сгруппировать функции в спрайт и произвольно разместить его

Вот мой код:

import pygame 
import sys 
from pygame.locals import * 

white = (255,255,255) 
black = (0,0,0) 

objs = [] 

MAIN_BUTTON = 1 

class Pane(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.init() 
     self.font = pygame.font.SysFont('Arial', 25) 
     pygame.display.set_caption('Box Test') 
     self.screen = pygame.display.set_mode((600,400), 0, 32) 
     self.screen.fill((white)) 
     pygame.display.update() 

    def addRect(self): 
     self.rect = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2) 
     pygame.display.update() 

    def addText(self): 
     self.screen.blit(self.font.render('Hello', True, (black)), (250, 115)) 
     pygame.display.update() 

    def delText(self): 
     self.screen = pygame.display.set_mode((600,400), 0, 32) 
     self.screen.fill((white)) 
     pygame.display.update() 

    def mousePosition(self): #Ignore this. 
     global clickPos 
     global releasePos 
     for event in pygame.event.get(): 
      if event.type == MAIN_BUTTON: 
       self.Pos = pygame.mouse.get_pos() 
       return MAIN_BUTTON 
      else: 
       return False 
    def groupSp(self): 
     pygame.sprite.Sprite.__init__(self, group) 

if __name__ == '__main__': 
    Pan3 = Pane() 
    Pan3.addRect() 
    Pan3.addText() 
    Pan3.mousePosition() 
    group = pygame.sprite.Group(Pan3.addRect(), Pan3.addText()) 
    Pan3.groupSp() 
    group.sprites() 
    while True: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       pygame.quit(); sys.exit(); 

Так мне было интересно, если вы могли бы группу как addRect (самость) и AddText (Я), как Sprite? Если это так, значит, он может случайно разместить его на экране? Или есть лучший способ сделать это?

Заранее благодарю вас за ваше время. :)

ответ

1

Вы только хотите позвонить pygame.display.update() один раз за игровой цикл. (Прямо сейчас, если вы создаете две панели, и вызвать AddText() дважды на каждом, это 4 обновлений в цикле.)

, если можно сгруппировать как addRect (самость) и AddText (Я), как Sprite?

Вы можете визуализировать их на той же поверхности, которая позже нарисована на экране.

Если это так, то вы можете разместить его случайно на экране?

разместить случайным образом, используйте random.randint() - https://stackoverflow.com/a/10667252/341744

pygame.sprite.Sprite .__ INIT __ (я, группа)

Это должно быть названо в конструкторе Pane.__init__

+0

Oh Спасибо – PythonNovice

Смежные вопросы