当前位置: 首页 > article >正文

【Python小游戏12——愤怒的小鸟】

 

  • 运行结果

14a4142e2c3b49f1a12c598c5e5ca084.png

  • 代码示例

python

import pygame, sys

pygame.init()

 

# 保存 窗口大小

width, height = 600, 400

screen = pygame.display.set_mode([width, height])

 

# 设置窗口标题

pygame.display.set_caption("愤怒的小鸟")

 

# 加载小鸟素材

player = pygame.image.load("xiaoniao.png")

 

# 获取图像矩形位置

rect = player.get_rect()

 

# 声明XY运动速度的列表

speed = [3, 2]

left_head = pygame.transform.flip(player, True, False)

right_head = player

 

# 无限循环

while True:

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            exit()

        if event.type == pygame.KEYDOWN:

            if event.key == pygame.K_LEFT:

                player = left_head # 小鸟的头向左

                speed = [-2, 1]

            if event.key == pygame.K_RIGHT:

                player = right_head # 小鸟的头向右

                speed = [2, 1]

            if event.key == pygame.K_UP:

                player = left_head # 小鸟的头向左

                speed = [2, -1]

            if event.key == pygame.K_DOWN:

                player = right_head # 小鸟的头向左

                speed = [2, 1]

 

    rect = rect.move(speed)

    if rect.right > width or rect.left < 0:

        # 将图片水平翻转,反转对象,是否水平反转,是否垂直翻转

        player = pygame.transform.flip(player, True, False)

        speed[0] = -speed[0]

    if rect.bottom > height or rect.top < 0:

        speed[1] = -speed[1]

 

    screen.fill((255, 255, 255))

    screen.blit(player, rect)

    pygame.display.update()

    pygame.time.delay(10)

  • 知识点总结

pygame库的使用:

pygame.init():初始化pygame库。

pygame.display.set_mode():创建游戏窗口。

pygame.display.set_caption():设置窗口标题。

pygame.image.load():加载图像文件。

pygame.transform.flip():翻转图像。

pygame.display.update():更新屏幕显示。

pygame.time.delay():延迟一段时间(毫秒)。

图像和矩形对象:

使用pygame.image.load()加载图像,返回一个Surface对象。

使用get_rect()方法获取图像的矩形对象,用于确定图像的位置和大小。

事件处理:

使用pygame.event.get()获取事件列表。

通过检查事件的type属性,可以处理不同类型的事件,如键盘按键(pygame.KEYDOWN)、鼠标移动、点击等。

动画和移动:

通过更新矩形对象的位置来实现图像的移动。

使用列表来存储X和Y方向的移动速度。

当图像移动到窗口边界时,通过反转速度方向来实现反弹效果。

游戏逻辑:

可以使用pygame中的pygame.sprite.Sprite类来管理游戏对象,并使用pygame.sprite.Group来管理多个游戏对象的集合。

物理引擎和碰撞检测(高级话题):

在更复杂的游戏中,可能需要使用物理引擎来处理物体的运动、碰撞等。

可以使用pymunk等库来实现物理模拟和碰撞检测。

UI和音效(高级话题):

可以使用pygame的pygame.mixer模块来处理音效。

可以使用pygame的pygame.font模块来绘制文本。

可以使用pygame的pygame.draw模块来绘制简单的形状和图形。

 


http://www.kler.cn/a/370703.html

相关文章:

  • C++ 强化记忆
  • 迅为RK3576开发板Android 多屏显示
  • php-2025面试题准备
  • 关于vite+vue3+ts项目中env.d.ts 文件详解
  • 【Block总结】掩码窗口自注意力 (M-WSA)
  • 单片机存储器和C程序编译过程
  • 【MySQL】实战篇—项目需求分析:ER图的绘制与关系模型设计
  • Linux命令 用户操作简介
  • CCF A类论文复现第一天
  • App相关技术以及打包
  • 支持向量机SVM简述
  • matlab线性度计算程序
  • 计算机专业毕业生面试工具推荐:白瓜面试
  • MySQL 9从入门到性能优化-通用查询日志
  • 大语言模型的Scaling Law【Power Low】
  • arcgis pro 3.3.1安装教程
  • lego-loam featureAssociation 源码注释(五)补充
  • QT中使用图表之QChart绘制曲线图
  • mybatis常见的标签有哪些?
  • Redis 持久化 总结
  • 面对复杂的软件需求:5大关键策略!
  • 无人机动态窗口路径规划算法!
  • C++ Qt面试题 | 精选25题
  • 字节回应实习生破坏AI模型训练
  • golang linux快速启动 一键重启脚本
  • 跟着小土堆学习pytorch(二)——TensorBoard和Transform