猫史档案馆


【Python作品分享】70周年华诞-陈志东

用户:机敏的土岩龙7tYA机敏的土岩龙7tYA查看:68 回复:0 评论:0 创建时间:2019-06-19T15:35:08


【作品展示】

center_image

 

【作品介绍】

献礼共和国70华诞

 

【作品源代码】

import pygame
from pygame.locals import *
from sys import *
from random import *


# 定义角色类
class Role(pygame.sprite.Sprite):
    def __init__(self, image, position, speed, width, height):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.transform.scale((pygame.image.load(image).convert_alpha()), (width, height))
        self.rect = self.image.get_rect()
        self.rect.left, self.rect.top = position
        self.speed = speed
        self.width, self.height = width, height
    # 移动方法
    def move(self):
        self.rect = self.rect.move(self.speed)
    # 烟花炸开后放大
    def explosion(self, each):
        self.image = pygame.transform.scale((pygame.image.load(each).convert_alpha()), (self.width, self.width))
        self.width, self.height = self.width + 6, self.height + 6
        self.rect.left -= 2.5
        self.rect.top -= 3

# 退出&刷新画面
def quit(delay = 30):
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
    pygame.display.flip()
    pygame.time.delay(delay)

def main():
    # 初始化

    pygame.init()

    screen = pygame.display.set_mode((480, 360), 0, 32)
    pygame.display.set_caption("70周年华诞")
    
    bg_image = pygame.transform.scale(pygame.image.load("image\白天.png").convert(), (480, 360))
    tiananmen_image = pygame.transform.scale(pygame.image.load("image\喵与小学生.png").convert_alpha(), (480, 280))
    dove_image = "image\dove.png"
    balloon_image = ["image\\balloon1.png", "image\\balloon2.png", "image\\balloon3.png"]
    plane_image = "image\plane.png"

    tiananmen_y = 82
    # 生成鸽子
    doves = []
    for i in range(5):
        position = randint(-50, 0), randint(200, 240)
        speed = [randint(5, 7), randint(-5, -3)]
        dove = Role(dove_image, position, speed, 60, 40)
        doves.append(dove)
    # 生成气球
    balloons = []
    for i in range(3):
        position = randint(240, 320), 200
        speed = [randint(-3, -1), randint(-5, -3)]
        balloon = Role(balloon_image[i], position, speed, 30, 50)
        balloons.append(balloon)
    # 生成飞机
    plane = Role(plane_image, (-700, 110), [12, -6], 700, 420)
    # 鸽子、气球移动
    for i in range(100):
        # 绘制背景
        screen.blit(bg_image, (0, 0))
        # 绘制气球
        for each in balloons:
            each.move()
            screen.blit(each.image, each.rect)
        # 绘制喵
        screen.blit(tiananmen_image, (0, tiananmen_y))
        # 绘制鸽子
        for each in doves:
            each.move()
            screen.blit(each.image, each.rect)
        quit() 
    # 镜头抬高
    for i in range(45):
        screen.blit(bg_image, (0, 0))
        screen.blit(tiananmen_image, (0, tiananmen_y))
        tiananmen_y += 3
        quit()
    # 飞机飞过
    for i in range(120):
        screen.blit(bg_image, (0,0))
        plane.move()
        screen.blit(plane.image, plane.rect)
        screen.blit(tiananmen_image, (0, tiananmen_y))
        quit()
    # 切换黑夜
    bg_image = pygame.transform.scale(pygame.image.load("image\黑夜.png").convert(), (480, 360))    
    # 镜头归位
    for i in range(45):
        screen.blit(bg_image, (0, 0))
        screen.blit(tiananmen_image, (0, tiananmen_y))
        tiananmen_y -= 3
        quit()
    
    # 重复燃放烟花
    while True:    
        # 生成烟花
        firework_image = ["image\烟花1-1.png", "image\烟花2-1.png", "image\烟花3-1.png"]
        fireworks = []
        for i in range(3):
            position = randint(60, 420), 300
            speed = [0, randint(-6, -4)]
            firework = Role(firework_image[i], position, speed, 5, 15)
            fireworks.append(firework)
        # 烟花上天
        for i in range(45):
            screen.blit(bg_image, (0, 0))
            for each in fireworks:
                each.move()
                screen.blit(each.image, each.rect)
            screen.blit(tiananmen_image, (0, tiananmen_y))
            quit()
        # 烟花炸开
        firework_image = ["image\烟花1-2.png", "image\烟花2-2.png", "image\烟花3-2.png"]
        for i, each in enumerate(fireworks):
            each.image = pygame.transform.scale((pygame.image.load(firework_image[i]).convert_alpha()), (50, 50))
            each.rect.left, each.rect.top = each.rect.left - 25, each.rect.top - 25
            each.width, each.height = 50, 50
        # 烟花放大
        for i in range(10):
            screen.blit(bg_image, (0, 0))
            for i, each in enumerate(fireworks):
                each.explosion(firework_image[i])
                screen.blit(each.image, each. rect)
            screen.blit(tiananmen_image, (0, tiananmen_y))
            quit(0)


if __name__ == "__main__":
    main()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页第 1 页 / 共 0 页下一页