[英]Keep rectangles in screen in pygame
我有一个pygame
,我想用随机的“玩家”创建一个屏幕。 我通过getplayer
定义玩家。 一切正常,除了在每一帧中都会创建一个新玩家,但以前的玩家都离开了。 我知道为什么我的代码会这样做,但我不知道该怎么做才能保留玩家。 我的代码如下:
import random
import pygame
pygame.init()
HEIGHT = 600
WIDTH = 800
SCREEN = pygame.display.set_mode((WIDTH,HEIGHT))
def getplayer():
randr = random.randrange(256)
randg = random.randrange(256)
randb = random.randrange(256)
xpos = random.randrange(WIDTH)
ypos = random.randrange(HEIGHT)
pwidth = random.uniform(WIDTH/100, WIDTH/10)
pheight = random.uniform(HEIGHT/100, HEIGHT/10)
pygame.draw.rect(SCREEN, (randr, randg, randb), (xpos, ypos, pwidth, pheight))
running = True
clock = pygame.time.Clock()
while running:
clock.tick(1)
SCREEN.fill((200, 200, 200))
for ev in pygame.event.get():
if ev.type == pygame.QUIT:
running = False
getplayer()
pygame.display.update()
我认为最简单的方法是将 player 更改为一个类对象(如果您不知道它们是什么:它们真的很有用,您绝对应该花时间了解它们https://www.hackerearth。 com/practice/python/object-oriented-programming/classes-and-objects-i/tutorial/ )。
然后可以使用列表跟踪每个玩家对象。
import random
import pygame
pygame.init()
HEIGHT = 600
WIDTH = 800
SCREEN = pygame.display.set_mode((WIDTH,HEIGHT))
# It's easier to keep track of all your values using a class object
class Player:
def __init__(self):
self.randr = random.randrange(256)
self.randg = random.randrange(256)
self.randb = random.randrange(256)
self.xpos = random.randrange(WIDTH)
self.ypos = random.randrange(HEIGHT)
self.pwidth = random.uniform(WIDTH/100, WIDTH/10)
self.pheight = random.uniform(HEIGHT/100, HEIGHT/10)
def draw(self):
pygame.draw.rect(SCREEN, (self.randr, self.randg, self.randb), (self.xpos, self.ypos, self.pwidth, self.pheight))
running = True
clock = pygame.time.Clock()
# Used to keep track of all your player objects
lst_players = []
while running:
clock.tick(1)
SCREEN.fill((200, 200, 200))
# Create a new player
player = Player()
# Add the player to your list
lst_players.append(player)
# Draw all of your players
for player in lst_players:
player.draw()
pygame.display.update()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.