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

  • 运行结果
  • 代码示例

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模块来绘制简单的形状和图形。

相关推荐
t***L26627 分钟前
JavaScript在机器学习中的库
开发语言·javascript·机器学习
qq_17082750 CNC注塑机数采34 分钟前
【Python TensorFlow】 CNN-GRU卷积神经网络-门控循环神经网络时序预测算法(附代码)
python·rnn·机器学习·cnn·gru·tensorflow
勇闯逆流河1 小时前
【C++】C++11(下)
开发语言·c++
云栈开源日记2 小时前
Python 开发技术栈梳理:从数据库、爬虫到 Django 与机器学习
数据库·爬虫·python·学习·机器学习·django
青衫码上行2 小时前
【Java Web学习 | 第15篇】jQuery(万字长文警告)
java·开发语言·前端·学习·jquery
wanhengidc3 小时前
云手机是由什么组成的?
运维·服务器·web安全·游戏·智能手机
胡萝卜3.07 小时前
掌握C++ map:高效键值对操作指南
开发语言·数据结构·c++·人工智能·map
电子_咸鱼8 小时前
【STL string 全解析:接口详解、测试实战与模拟实现】
开发语言·c++·vscode·python·算法·leetcode
世洋Blog8 小时前
利用<<左移运算符优雅的设计游戏能力的任意组合和判断
游戏·unity·c#
哈茶真的c8 小时前
【书籍心得】左耳听风:传奇程序员练级攻略
java·c语言·python·go