当前位置:首页 » 《我的小黑屋》 » 正文

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

19 人参与  2024年10月16日 14:01  分类 : 《我的小黑屋》  评论

点击全文阅读


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

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

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

安装pygame库:

pip install pygame

我的代码实现部分如下:

1. 初始化

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

import pygameimport sys# 初始化pygame.init()screen = pygame.display.set_mode((800, 800))clock = pygame.time.Clock()pygame.display.set_caption("张学良下飞机")  # 更改窗口标题

2. 加载图片 

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

飞机                         少帅                 卫兵1             卫兵2

# 加载并调整图片尺寸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 = 0plane_y = 100guard_y = 300shao_visible = Falseshao_y = 200  # 少帅的初始高度falling = Falsefall_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))  # 卫兵1screen.blit(weibing2_img, (600, guard_y))  # 卫兵2if shao_visible:    screen.blit(shaoshaui_img, (500, shao_y))  # 掉落的位置pygame.display.flip()clock.tick(60)  # 控制帧率

完整代码如下: 

import pygameimport 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 = 0plane_y = 100guard_y = 300shao_visible = Falseshao_y = 200  # 少帅的初始高度falling = Falsefall_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)

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


点击全文阅读


本文链接:http://zhangshiyu.com/post/172606.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1