import sys
import pygame
import random
import os.path as path
from move_ren import Game
def main():
# 初始化pygame
pygame.init()
width = 400
height = 365
SIZE = width * 2, height * 2
screen = pygame.display.set_mode(SIZE, pygame.NOFRAME)
# 根据背景图片的大小,设置屏幕长宽
image = pygame.image.load('tree/sds.jpg')
image.set_alpha(150)
i1 = pygame.image.load('tree/1.png')
i1.set_alpha(200)
# i1的镜像翻转
i11 = pygame.image.load('tree/11.png')
i11.set_alpha(180)
i2 = pygame.image.load('tree/2.png')
i2.set_alpha(200)
# i1的镜像翻转
i22 = pygame.image.load('tree/22.png')
i22.set_alpha(180)
i3 = pygame.image.load('tree/3.png')
i3.set_alpha(200)
# i1的镜像翻转
i33 = pygame.image.load('tree/33.png')
i33.set_alpha(180)
# 雪花列表
snow_list = []
# 初始化雪花:(x坐标, y坐标), x轴速度, y轴速度
for i in range(200):
x = random.randrange(0, SIZE[0])
y = random.randrange(0, SIZE[1])
# 让雪有两种下落趋势--左下或者右下
speed_x = random.randint(-1, 1)
speed_y = random.randint(1, 4)
snow_list.append([x, y, speed_x, speed_y])
# 刷新帧率,[能源期货](https://www.gendan5.com/cf/ef.html)控制速度
clock = pygame.time.Clock()
# 背景音乐
pygame.mixer.init()
music = pygame.mixer.Sound('tree/ddd.mp3')
music.play(-1)
# 动态人物
ren = Game(screen, start_x=750, start_y=90, end_x=80, end_y=320, heroes='tree/6.png')
ren1 = pygame.image.load('tree/7.png')
# 引线--准时跳出图片
x1 = -50
y1 = 300
# 游戏主循环
while True:
screen.fill((0, 0, 0))
# 重影效果
# screen.blit(pygame.transform.scale(image2, SIZE), (-width/2, 0))
screen.blit(pygame.transform.scale(image, SIZE), (0, 0))
screen.blit(image, (0, 0))
screen.blit(i1, (430, 190))
screen.blit(i11, (220, 350))
screen.blit(i1, (500, 455))
screen.blit(i2, (500, 650))
screen.blit(i33, (610, 640))
screen.blit(i22, [100, 650])
screen.blit(i33, (350, 655))
screen.blit(i3, (180, 620))
# screen.blit()
# 事件检测
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
# 按q键退出
if event.key == event.key == pygame.K_q:
sys.exit()
# 按s键截图
if event.key == pygame.K_s:
list_file = []
list_ooo = list(range(1000))
for num_in in list_ooo:
if path.isfile('picture/picture' + str(num_in) + '.jpg'):
continue
else:
list_file.append(num_in)
pygame.image.save(screen, 'picture/picture' + str(list_file[0]) + '.jpg')
# 圣诞老人奔跑
ren.role.move()
ren.role.draw(screen)
pygame.display.update()
# 发放礼物
if x1 < 60:
x1 += 0.23
else:
screen.blit(ren1, (x1, y1))
# 随机下雪
for i in range(len(snow_list)):
# a = (192, 192, 192)
a = (255, 255, 255)
pygame.draw.circle(
# 显示
screen,
# 颜色
[int(f) for f in a],
# 降落点
snow_list[i][:2],
# 雪花半径
snow_list[i][3],
# 充实雪花颗粒
0
)
# 移动雪花位置(下一次循环起效)
snow_list[i][0] += snow_list[i][2]
snow_list[i][1] += snow_list[i][3]
# 如果雪花落出屏幕,可以让雪不停的下
if snow_list[i][1] > SIZE[1]:
snow_list[i][1] = random.randrange(-50, -10)
snow_list[i][0] = random.randrange(0, SIZE[0])
# 刷新屏幕
pygame.display.flip()
clock.tick(20)
【用Python画圣诞树 ‘‘遇见’’ 圣诞老人】if name == '__main__':
main()
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)