我最近遇到了一个名为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?如果有,那么有一种方法可以随机将它放在屏幕上吗?或者有更好的方法吗?
提前感谢您的时间。 :)
答案 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__