IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 02-pygame 图片处理 -> 正文阅读

[Python知识库]02-pygame 图片处理

你好,我是悦创。前面我们开始的为期 30天的更新挑战第一篇,接下来我们是第二篇。第一篇的课程视频,也已经在微信公众号里面了。有兴趣的可以关注公众号:AI悦创。上一篇的链接:https://mp.weixin.qq.com/s/Fth21WgO6f89dzNLSBZUoA

目录

  1. 载入图片、调整大小
  2. 图片显示规则
  3. 足球反弹

1. 载入图片、调整大小

案例 1:新建文件,准备好两个图片文件(可自行下载喜欢的图片,这两个图片完整文件名已经改为 football.pngbackground.jpg ),三个文件放同一文件夹内。然后编码进行图片载入和调整大小。

在这里插入图片描述

在这里插入图片描述

为了,方便后续的阅读,退出处理部分已经写成函数 quit() 写成函数部分,我在零基础一对一部分已经讲解过了,如果有需要学 Python 零基础一对一的人欢迎联系报名,长期招收。

import pygame # 导入 pygame 库
import sys # 导入系统库,无需安装
pygame.init() # 调用初始化函数
size = width, height = 600, 400
screen = pygame.display.set_mode(size)
pygame.display.set_caption('我的游戏')

def quit(): # 把退出处理写成函数,方便之后阅读。
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			sys.exit()
# 使用变量保存载入的图片,图片函数一般在 image 中
football = pygame.image.load('football.png') # 载入的图片会被认为是一层一层的面,称为 surface
football = pygame.transform.smoothscale(football, (60, 60))
# ↑ 通过 transform 改变 surface 的大小,存回变量中

while True:
	quit() # 调用退出处理函数,判断要不要退出
	# ↓ 使用 blit() 显示图片,第二个参数是图片坐标
	screen.blit(football, (100, 100))
	pygame.display.update() # update 意为更新

代码解析:

  • pygame 中的图像相关函数在 image 里,载入使用 load()
  • 载入时填写图片完整名称,载入时的图片数据被视为一个表面(surface),这个面可以改变坐标和大小。
  • 显示图片时,使用创建的屏幕来显示(PS:我们的东西肯定是放在屏幕上面来显示的)所以这里用了 screen,显示函数是 blit() ,它有两个参数,分别是要显示的面和这坐标。

2. 图片显示规则

  • 在 pygame 中采用屏幕左上角为坐标原点,向下为 y 正方向,向右为 x 正方向。

在这里插入图片描述

  • 显示图片的时候指定图片坐标,也是图片的左上角,surface 默认 (0, 0)

  • 先显示的图片会被后面显示的图片覆盖住,所以背景图片要先显示。

bg = pygame.image.load('background.jpg')
bg = pygame.transform.smoothscale(bg, (600, 400))
screen.blit(bg, (0, 0)) # 从左上角开始显示背景图片

为了,防止小白不理解,不知到代码放在哪里,下面放上代码图片:

在这里插入图片描述

注意:

载入背景图片后,设定为窗口一样的大小,然后将坐标设为 (0, 0) ,此时正好铺满背景。

3. 足球反弹

案例 2: 让足球在球场中运动,碰到边界就反弹,在原理的代码上做如下的修改。

我来提示一下:

我们知道图片显示的位置依靠坐标来定决定,那么坐标变化就意味着图片的运动。

图片坐标要变化,写定的数值显然是不可以的,所以用变量来表示坐标和对应的速度。

碰到边界实际上就是坐标超出了屏幕的大小了,需要注意图片上下左右的坐标,要考虑图片的尺寸。

这里我就直接放在完整代码:

import pygame, sys

pygame.init()
# 创建游戏窗口大小
size = width, height = 600,400
screen = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption("我的世界")
# 加载足球图像
football = pygame.image.load(r'football.png')
# 调整图像的大小
football = pygame.transform.smoothscale(football, (width//6, height//4))
# 加载背景图片
background = pygame.image.load(r'background.jpg').convert_alpha()
# 调整图像的大小
background = pygame.transform.smoothscale(background, (width, height))

# 设置游戏的图标
pygame.display.set_icon(football)
# 获取图像的外切矩形
ball_rect = football.get_rect()
# 定义速度
speed = [1,1]
# 创建颜色
bgcolor = pygame.Color('black')
# 创建控制频率的clock
fclock = pygame.time.Clock()
# 定义刷新频率
fps = 300
while True:
    # 处理退出事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    # 设置背景的颜色
    screen.fill(bgcolor)
    # 绘制背景图片
    screen.blit(background, (0, 0))
    # 设定足球的运动
    ball_rect = ball_rect.move(speed[0], speed[1])
    # 足球的上边Y轴坐标<0或者足球的下边的Y轴坐标>创建窗口的高度
    if ball_rect.top < 0 or ball_rect.bottom >height:
        speed[1] = -speed[1]
    # 足球的左边的X坐标<X轴的0坐标或者右边的坐标>创建窗口宽度
    if ball_rect.left < 0 or ball_rect.right > width:
        speed[0] = -speed[0]
    # 在屏幕中的矩形中绘制图形
    screen.blit(football, ball_rect)
    # 刷新游戏场景
    pygame.display.update()
    # 控制游戏场景刷新率
    fclock.tick(fps)

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。QQ、微信在线,随时响应!V:Jiabcdefh

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:46:25  更:2021-08-02 10:48:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 7:52:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码