少帅下飞机(Python版本)基于pygame

柚屿今天早睡了吗 2024-10-24 08:05:01 阅读 76

最近在短视频平台上的少帅下飞机很火看到了很多java、C语言等好多版本。

今天给大家带来一个python版本。基于pygame库的 程序运行效果如下:

环境安装:python3.x版本 pygame库

安装pygame库:

<code>pip install pygame

我的代码实现部分如下:

1. 初始化

首先,我们需要初始化Pygame,并创建一个窗口:

<code>import pygame

import sys

# 初始化

pygame.init()

screen = pygame.display.set_mode((800, 800))

clock = pygame.time.Clock()

pygame.display.set_caption("张学良下飞机") # 更改窗口标题

2. 加载图片 

下面是我用自己用的三张图片大家根据自己的图片来更改 :

飞机                         少帅                 卫兵1             卫兵2

<code># 加载并调整图片尺寸

plane_img = pygame.transform.scale(pygame.image.load('img/plane.jpg'), (128, 128))

shaoshaui_img = pygame.transform.scale(pygame.image.load('img/shaoshuai.png'), (64, 64))

weibing1_img = pygame.transform.scale(pygame.image.load('img/weibing1.png'), (64, 64))

weibing2_img = pygame.transform.scale(pygame.image.load('img/weibing2.png'), (64, 64))

3. 定义变量

# 定义位置

plane_x = 0

plane_y = 100

guard_y = 300

shao_visible = False

shao_y = 200 # 少帅的初始高度

falling = False

fall_speed = 25 # 每秒下降25个像素

falling_timer = 0 # 下落计时

4. 循环代码

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()

sys.exit()

# 更新飞机位置

plane_x += 1

if plane_x > 800:

plane_x = -1000000000 # 重新从屏幕左端出现

5. 下落逻辑

if not shao_visible and plane_x >= 500:

shao_visible = True # 显示少帅

pygame.time.set_timer(pygame.USEREVENT, 1000) # 设置定时器,1秒后触发

6. 使用blit绘制所有图片

screen.fill((255, 255, 255)) # 清屏

screen.blit(plane_img, (plane_x, plane_y))

screen.blit(weibing1_img, (400, guard_y)) # 卫兵1

screen.blit(weibing2_img, (600, guard_y)) # 卫兵2

if shao_visible:

screen.blit(shaoshaui_img, (500, shao_y)) # 掉落的位置

pygame.display.flip()

clock.tick(60) # 控制帧率

完整代码如下: 

import pygame

import sys

# 初始化

pygame.init()

screen = pygame.display.set_mode((800, 800))

clock = pygame.time.Clock()

pygame.display.set_caption("张学良下飞机") # 更改窗口标题

# 加载并调整图片尺寸

plane_img = pygame.transform.scale(pygame.image.load('img/plane.jpg'), (128, 128))

shaoshaui_img = pygame.transform.scale(pygame.image.load('img/shaoshuai.png'), (64, 64))

weibing1_img = pygame.transform.scale(pygame.image.load('img/weibing1.png'), (64, 64))

weibing2_img = pygame.transform.scale(pygame.image.load('img/weibing2.png'), (64, 64))

# 定义位置

plane_x = 0

plane_y = 100

guard_y = 300

shao_visible = False

shao_y = 200 # 少帅的初始高度

falling = False

fall_speed = 25 # 每秒下降25个像素

falling_timer = 0 # 下落计时

# 游戏循环

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()

sys.exit()

# 更新飞机位置

plane_x += 1

if plane_x > 800:

plane_x = -1000000000 # 飞机飞出屏幕后,设置一个很小的值,使其重新从屏幕左端出现

# 检查飞机是否到达 x = 500

if not shao_visible and plane_x >= 500:

shao_visible = True # 显示少帅

shao_y = 200 # 设置少帅初始位置

pygame.time.set_timer(pygame.USEREVENT, 1000) # 设置定时器,1秒后触发

falling_timer = 0 # 重置计时器

# 更新少帅的Y位置

if shao_visible and shao_y < 301 :

shao_y += 2 # 少帅向下移动

# 处理定时器事件

if event.type == pygame.USEREVENT:

falling = True # 开始同时下落

pygame.time.set_timer(pygame.USEREVENT, 0) # 停止定时器

# 同时下落

if falling:

if guard_y < 800: # 800 是最终位置

guard_y += fall_speed / 60 # 按帧率计算下落速度

if shao_y < 800:

shao_y += fall_speed / 60

# 绘制

screen.fill((255, 255, 255)) # 清屏

screen.blit(plane_img, (plane_x, plane_y))

screen.blit(weibing1_img, (400, guard_y)) # 卫兵1

screen.blit(weibing2_img, (600, guard_y)) # 卫兵2

if shao_visible:

screen.blit(shaoshaui_img, (500, shao_y)) # 掉落的位置

pygame.display.flip()

clock.tick(60)

欢迎大家在评论区分享你们的想法和建议,期待你的参与!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。