pygame 方块随机飞舞动画

import pygame
import random
# default
WIDTH=1280
HEIGHT=1060
FPS=60
sum=0
# set color
WHITE=(255,255,255)
BLACK=(0,0,0)
RED=(255,0,0)
GREEN=(0,255,0)
BLUE=(0,0,255)
color=[WHITE,RED,GREEN,BLUE]
# set Block class
class Block(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.Surface((50,50))
        self.image.fill(random.choice(color))
        self.rect = self.image.get_rect()
        self.rect.center=(random.randint(1,WIDTH),random.randint(1,HEIGHT))
        self.ce=random.randint(1,2)
        self.speed=random.choice([i for i in range(-20,20) if not i in range(-5,5)])
    def update(self):
        if self.ce==1:
            self.rect.x+=self.speed
        else:
            self.rect.y+=self.speed
# pygame init
pygame.init()
screen=pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption('lowb cartoon')
clock = pygame.time.Clock()
#set group
all_sprites = pygame.sprite.Group()
block1=[Block() for i in range(random.randrange(20,40))]
block2=[Block() for i in range(random.randrange(20,40))]
#block=Block()
#print(block.ce,block.speed)
all_sprites.add(block1)
all_sprites.add(block2)
# main loop
running=True
while running:
    sum+=1
    if sum%100==0:
        block1=[Block() for i in range(random.randrange(20,40))]
        all_sprites.add(block1)
    if sum%150==0:
        block2=[Block() for i in range(random.randrange(20,40))]
        all_sprites.add(block2)
    #set FPS
    clock.tick(FPS)
    #set event
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running=False
    #set update
    all_sprites.update()
    #set draw/render
    screen.fill(BLACK)
    all_sprites.draw(screen)
    #flip time
    pygame.display.flip()
pygame.quit()

转载于:https://www.cnblogs.com/baccano-acmer/p/10255057.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值