如何在python中创建和移动多个形状

如何在python中创建和移动多个形状,python,pygame,Python,Pygame,我正在为学校比赛制作一款太空游戏。我将使用向外移动的星星(白点)来产生在太空中移动的效果。接下来,我将检查星星的x线是否小于中心或屏幕(向左移动星星),以及x坐标是否更大(向右移动)。然而,我似乎只能举一个stars类的例子。非常感谢你的帮助 import pygame import random pygame.init() screen = pygame.display.set_mode((1200, 800)) caption = pygame.display.set_caption("s

我正在为学校比赛制作一款太空游戏。我将使用向外移动的星星(白点)来产生在太空中移动的效果。接下来,我将检查星星的x线是否小于中心或屏幕(向左移动星星),以及x坐标是否更大(向右移动)。然而,我似乎只能举一个stars类的例子。非常感谢你的帮助

import pygame
import random
pygame.init()

screen = pygame.display.set_mode((1200, 800))
caption = pygame.display.set_caption("sapce game")
screen.fill((56, 56, 56))
white = (255, 255, 255)

class Stars:
    def __init__(self):
        self.x = random.randint(0, 600)
        self.y = random.randint(0, 400)
        self.pos = (self.x, self.y)

    def move(self):
        pygame.draw.circle(screen, white, (self.x, self.y), 4)
        self.y -= 1
        self.x -= 2
        screen.fill((56, 56, 56))
        pygame.draw.circle(screen, white, (self.x, self.y), 4)
        pygame.display.update()


s = Stars()

run = True
while run:
    s.move()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
            quit()

首先,您必须将
scrre.fill
pygame.display.update()
放在主应用程序循环中。从星号中删除此调用。移动:

run=True
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
退出
屏幕填充((56,56,56))
s、 移动()
pygame.display.update()
注意,您希望清除显示一次,然后绘制所有星星,最后更新显示

创建星星列表:

star_list=[]
对于范围(10)内的i:
star\u list.append(Stars())
在循环中移动并绘制星星:

run=True
运行时:
# [...]
屏幕填充((56,56,56))
对于star_列表中的s:
s、 移动()
pygame.display.update()

示例代码:

导入pygame
随机输入
pygame.init()
screen=pygame.display.set_模式((1200800))
caption=pygame.display.set_字幕(“sapce游戏”)
屏幕填充((56,56,56))
白色=(255,255,255)
班级明星:
定义初始化(自):
self.x=random.randint(0600)
self.y=random.randint(0400)
self.dx,self.dy=0,0
当self.dx==0时:
self.dx=random.randint(-2,2)
当self.dy==0时:
self.dy=random.randint(-2,2)
self.pos=(self.x,self.y)
def移动(自我):
self.x+=self.dx
self.y+=self.dy
如果self.x=1200:
self.dx=-self.dx
如果self.y=800:
self.dy=-self.dy
pygame.draw.circle(屏幕,白色,(self.x,self.y),4)
星_列表=[]
对于范围(10)内的i:
star\u list.append(Stars())
运行=真
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
退出
屏幕填充((56,56,56))
对于star_列表中的s:
s、 移动()
pygame.display.update()