如何将函数分组到精灵中并随机定位它

时间:2013-10-14 17:03:00

标签: python random word pygame sprite

我最近遇到了一个名为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(self)和addText(self)组合为Sprite?如果有,那么有一种方法可以随机将它放在屏幕上吗?或者有更好的方法吗?

提前感谢您的时间。 :)

1 个答案:

答案 0 :(得分:1)

您只想在每个游戏循环中调用pygame.display.update()一次。 (现在,如果您创建两个窗格,并在每个窗格上调用addText()两次,则每个循环更新4次。)

  

如果你可以将addRect(self)和addText(self)组合为Sprite?

您可以将它们渲染到同一个表面,稍后将在屏幕上绘制。

  

如果有,那么可以将其随机放在屏幕上吗?

要随机放置,请使用random.randint() - https://stackoverflow.com/a/10667252/341744

  

pygame.sprite.Sprite .__ init __(self,group)

这应该在构造函数Pane.__init__

中调用