Python -- 利用pygame库进行游戏开发基础(二)

这篇具有很好参考价值的文章主要介绍了Python -- 利用pygame库进行游戏开发基础(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、基本画面操作使用方法

1、pygame的窗口创建

import sys  # 导入sys模块,用于访问与Python解释器相关的命令和函数
import pygame  # 导入pygame模块,用于游戏开发

pygame.init()  # 初始化pygame,为使用pygame库做好准备

size = width, height = 320, 240  # 设置窗口大小,宽320像素,高240像素
screen = pygame.display.set_mode(size)  # 创建一个窗口或屏幕,其尺寸为之前设置的size

# 执行死循环,确保窗口一直显示
while True:  # 无限循环,确保窗口持续显示
    for event in pygame.event.get():  # 获取所有pygame事件
        if event.type == pygame.QUIT:  # 如果事件是pygame的退出事件
            sys.exit()  # 调用sys.exit()退出程序

pygame.quit()  # 退出pygame,清理pygame使用的资源

        这段代码生成了一个窗口导入pygame模块和sys模块,这两个模块准备后续开发所需的命令以及作用,进行pygame的初始化,而后上设置窗口大小,创建窗口,而后进入循环确保窗口持续显示,再判断是否有退出事件,有则退出程序,再退出pygame,清空pygame的使用资源。

2、pygame文本代码

#导入所需的模块
import sys
import pygame
# 使用pygame之前必须初始化
pygame.init()
# 设置主屏窗口
screen = pygame.display.set_mode((400,400))
# 设置窗口的标题,即游戏名称
pygame.display.set_caption('hello world')
# 引入字体类型
f = pygame.font.Font('C:/Windows/Fonts/simhei.ttf',50)
# 生成文本信息,第一个参数文本内容;第二个参数,字体是否平滑;
# 第三个参数,RGB模式的字体颜色;第四个参数,RGB模式字体背景颜色;
text = f.render("pygame画面",True,(255,0,0),(0,0,0))
#获得显示对象的rect区域坐标
textRect =text.get_rect()
# 设置显示对象居中
textRect.center = (200,200)
# 将准备好的文本信息,绘制到主屏幕 Screen 上。
screen.blit(text,textRect)
# 固定代码段,实现点击"X"号退出界面的功能,几乎所有的pygame都会使用该段代码
while True:
    # 循环获取事件,监听事件状态
    for event in pygame.event.get():
        # 判断用户是否点了"X"关闭按钮,并执行if代码段
        if event.type == pygame.QUIT:
            #卸载所有模块
            pygame.quit()
            #终止程序,确保退出程序
            sys.exit()
    pygame.display.flip() #更新屏幕内容

        我的思路是首先,我们导入了必要的模块,这是为了让Pygame正常工作;然后,我们初始化了Pygame,表示我们准备好使用它来制作一个小程序;接着,我们创建了一个400x400像素大小的窗口,并设置了窗口的标题为"hello world",这就是我们程序的窗口;我们还引入了一个字体文件,用来设置文字的样式和大小;接下来,我们生成了一段文字信息,包括文本内容、文字是否平滑、文字颜色和背景颜色;我们获取了这段文字的矩形区域坐标,并将它设置在窗口中央;然后,我们把这段准备好的文字信息绘制到了主屏幕上,这样就在窗口中显示了这段文字;最后,我们进入一个循环,不断监听事件。如果用户点击窗口右上角的"X"按钮,就会触发退出事件,在退出事件发生时,我们卸载了Pygame模块,然后终止了程序,确保程序能够正常退出;在循环中,我们使用pygame.display.flip()来不断刷新屏幕内容,以确保文字信息被显示在窗口中,同时保持程序一直运行。

 3、pygame图像代码

(1)直接导入图像
import pygame  # 导入pygame库,用于游戏开发
import sys     # 导入sys库,用于访问与Python解释器紧密相关的函数和变量

# 初始化Pygame
pygame.init()  # 初始化Pygame,准备资源,以便后续创建窗口和处理事件

# 设置窗口大小
screen_width = 1000  # 设置游戏窗口的宽度为800像素
screen_height = 600 # 设置游戏窗口的高度为600像素
# 创建一个窗口,尺寸为上面定义的宽度和高度
screen = pygame.display.set_mode((screen_width, screen_height))

# 设置窗口标题
pygame.display.set_caption('超级玛丽')  # 为游戏窗口设置标题

# 加载图像
image_path = 'C:\\Users\\lsz\\Desktop\\OIP.jpg'  # 指定图像文件的路径
image = pygame.image.load(image_path)  # 加载图像文件,并创建一个Surface对象

# 主游戏循环
running = True  # 设置一个变量来控制游戏循环的运行
while running:  # 当running为True时,持续运行游戏循环
    for event in pygame.event.get():  # 获取所有事件
        if event.type == pygame.QUIT:  # 检查是否有退出事件(如窗口关闭)
            running = False   # 如果有退出事件,则将running设置为False,退出循环

    # 绘制图像到窗口上
    screen.blit(image, (0, 0))  # 将加载的图像绘制到窗口的左上角

    # 更新屏幕显示
    pygame.display.flip()  # 刷新整个屏幕的显示,更新为最新内容

# 退出Pygame
pygame.quit()  # 关闭Pygame,释放资源
sys.exit()     # 退出程序

 运行结果:

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言
        这段代码是用于创建一个窗口并在窗口中显示一张图像。我的思路是首先我们导入了Pygame库和sys库,Pygame用于游戏开发,sys用于访问与Python解释器相关的函数和变量。接着,初始化Pygame,这一步是为了准备资源,以便后续创建窗口和处理事件。设置了游戏窗口的宽度和高度,然后创建了一个窗口,标题设置为"超级玛丽"。加载了一张图像文件,这个图像将用于在窗口中显示。图像的路径在image_path变量中指定。进入主游戏循环,其中的while running表示只要running变量为True,就一直执行循环。在循环中,我们监听所有事件,包括窗口关闭事件(QUIT事件)。如果检测到窗口关闭事件,就将running变量设为False,退出循环。在游戏循环中,我们使用screen.blit(image, (0, 0))将加载的图像绘制到窗口的左上角(坐标为(0, 0))。最后,使用pygame.display.flip()来刷新整个屏幕的显示,以更新为最新的内容。当running变量变为False时,退出游戏循环,然后关闭Pygame并退出程序。

(2)代码进行改进,将图像全屏显示
import pygame  # 导入pygame库,用于创建游戏和图形界面
import sys     # 导入sys库,用于处理系统相关的操作,如退出程序

# 初始化Pygame
pygame.init()  # 初始化Pygame,为使用其功能(如创建窗口)做准备

# 设置窗口大小
screen_width = 1000  # 定义窗口的宽度为1000像素
screen_height = 600  # 定义窗口的高度为600像素
# 创建窗口
screen = pygame.display.set_mode((screen_width, screen_height))  # 创建一个宽1000像素、高600像素的窗口

# 设置窗口标题
pygame.display.set_caption('超级玛丽')  # 设置窗口的标题为'超级玛丽'

# 加载图像
image_path = 'C:\\Users\\lsz\\Desktop\\OIP.jpg'  # 定义图像的文件路径
image = pygame.image.load(image_path)  # 加载图像文件

# 将图片缩放到窗口大小
image = pygame.transform.scale(image, (screen_width, screen_height))  # 将图像缩放到与窗口大小相同

# 主游戏循环
running = True  # 设置一个标志,用于控制游戏循环是否继续
while running:  # 当running为True时,不断执行循环
    for event in pygame.event.get():  # 获取所有的事件
        if event.type == pygame.QUIT:  # 检查是否有退出事件(如点击窗口关闭按钮)
            running = False  # 如果有退出事件,设置running为False,从而退出循环

    # 绘制图像到窗口上
    screen.blit(image, (0, 0))  # 将缩放后的图像绘制到窗口左上角

    # 更新屏幕显示
    pygame.display.flip()  # 刷新整个屏幕,显示最新绘制的图像

# 退出Pygame
pygame.quit()  # 结束Pygame,释放资源
sys.exit()     # 退出整个程序

运行结果:import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言

 改进之后可以将图片放大至全屏,以下是实现图片的全屏显示的关键性函数:

# 将图片缩放到窗口大小
image = pygame.transform.scale(image, (screen_width, screen_height))  # 将图像缩放到与窗口大小相同

利用tansform中的pygame.transform.scale()这个函数可针对性的对图像进行缩放操作

(3)代码再改进,将图像进行旋转

可以再次改进,再次利用transform中的另一个函数pygame.transform.rotate()这个函数可将图片进行旋转处理

import pygame  # 导入pygame库,用于创建游戏和图形界面
import sys     # 导入sys库,用于处理系统相关的操作,如退出程序

# 初始化Pygame
pygame.init()  # 初始化Pygame,为使用其功能(如创建窗口)做准备

# 设置窗口大小
screen_width = 1000  # 定义窗口的宽度为1000像素
screen_height = 600  # 定义窗口的高度为600像素
# 创建窗口
screen = pygame.display.set_mode((screen_width, screen_height))  # 创建一个宽1000像素、高600像素的窗口

# 设置窗口标题
pygame.display.set_caption('超级玛丽')  # 设置窗口的标题为'超级玛丽'

# 加载图像
image_path = 'C:\\Users\\lsz\\Desktop\\OIP.jpg'  # 定义图像的文件路径
image = pygame.image.load(image_path)  # 加载图像文件

# 将图片缩放到窗口大小
image = pygame.transform.scale(image, (500, 300))  # 将图像缩放到相应大小
image = pygame.transform.rotate(image,45)  # 将图像逆时针旋转45度
# 主游戏循环
running = True  # 设置一个标志,用于控制游戏循环是否继续
while running:  # 当running为True时,不断执行循环
    for event in pygame.event.get():  # 获取所有的事件
        if event.type == pygame.QUIT:  # 检查是否有退出事件(如点击窗口关闭按钮)
            running = False  # 如果有退出事件,设置running为False,从而退出循环

    # 绘制图像到窗口上
    screen.blit(image, (0, 0))  # 将缩放后的图像绘制到窗口左上角

    # 更新屏幕显示
    pygame.display.flip()  # 刷新整个屏幕,显示最新绘制的图像

# 退出Pygame
pygame.quit()  # 结束Pygame,释放资源
sys.exit()     # 退出整个程序

 改进之后可以将图片旋转45度,以下是实现图片的全屏显示的关键性函数:

image = pygame.transform.rotate(image,45)  # 将图像逆时针旋转45度

运行结果:

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言

 4、pygame进行时间控制

import pygame  # 导入pygame库,用于创建游戏和图形界面
import sys     # 导入sys库,用于处理系统相关的操作,如退出程序

# 初始化Pygame
pygame.init()  # 初始化Pygame,为使用其功能(如创建窗口)做准备

# 设置窗口大小
screen_width = 1000  # 定义窗口的宽度为1000像素
screen_height = 600  # 定义窗口的高度为600像素
# 创建窗口
screen = pygame.display.set_mode((screen_width, screen_height))  # 创建一个宽1000像素、高600像素的窗口

# 设置窗口标题
pygame.display.set_caption('超级玛丽')  # 设置窗口的标题为'超级玛丽'
t = pygame.time.get_ticks() #该时间指的从pygame初始化后开始计算,到调用该函数为止
t1 =pygame.time.wait(3000) #暂停游戏3000毫秒
# 加载图像
image_path = 'C:\\Users\\lsz\\Desktop\\OIP.jpg'  # 定义图像的文件路径
image = pygame.image.load(image_path)  # 加载图像文件

# 将图片缩放到窗口大小
image = pygame.transform.scale(image, (500, 300))  # 将图像缩放到与窗口大小相同
image = pygame.transform.rotate(image,45)  # 将图像逆时针旋转45度
# 主游戏循环
running = True  # 设置一个标志,用于控制游戏循环是否继续
while running:  # 当running为True时,不断执行循环
    for event in pygame.event.get():  # 获取所有的事件
        if event.type == pygame.QUIT:  # 检查是否有退出事件(如点击窗口关闭按钮)
            running = False  # 如果有退出事件,设置running为False,从而退出循环

    # 绘制图像到窗口上
    screen.blit(image, (0, 0))  # 将缩放后的图像绘制到窗口左上角

    # 更新屏幕显示
    pygame.display.flip()  # 刷新整个屏幕,显示最新绘制的图像

# 退出Pygame
pygame.quit()  # 结束Pygame,释放资源
sys.exit()     # 退出整个程序

在这个代码中,调用了pygame.time模块,利用其中的两个个函数pygame.time.get_tick和pygame.time.wait两个函数,先面试使用示例。

t = pygame.time.get_ticks() #该时间指的从pygame初始化后开始计算,到调用该函数为止
t1 =pygame.time.wait(3000) #暂停游戏3000毫秒

t = pygame.time.get_ticks() 的运行结果就是计算从开始到运行到这行代码的时间

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言

t1 =pygame.time.wait(3000) 的运行结果是暂停3000毫秒再进行后续部分

 5、使用pygame的Rect进行图像区域位置控制

在 Pygame 中我们使用 Rect() 方法来创建一个指定位置,大小的矩形区域。函数的使用样例如下:

rect =pygame.Rect(left,top,width,height) 

Rect()方法应该应用于一个Surface对象上,像Screen窗口有四个参数left,top,width,height,他们的表述图如下:

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言

import pygame  # 导入pygame库,用于游戏和图形界面的开发

pygame.init()  # 初始化pygame,准备使用pygame的各种功能

# 创建一个窗口
screen = pygame.display.set_mode((500, 400))  # 创建一个500x400像素的窗口

# 设置窗口标题
pygame.display.set_caption('超级玛丽')  # 设置窗口的标题为“超级玛丽”

# 加载图像
image_surface = pygame.image.load("C:\\Users\\lsz\\Desktop\\OIP.jpg")  # 从指定路径加载一张图像

# 创建一个矩形对象
rect1 = pygame.Rect(50, 50, 150, 120)  # 创建一个矩形区域,位于(50, 50),大小为150x120像素

# 创建一个子图(surface对象)
image_child = image_surface.subsurface(rect1)  # 从原始图像中截取rect1定义的区域,创建一个新的surface对象

# 获取并打印子图的矩形区域的大小
rect2 = image_child.get_rect()  # 获取新创建的子图的矩形区域
print(rect2)  # 打印这个矩形区域的大小

# 主循环
while True:  # 开始一个无限循环,用于保持窗口显示
    for event in pygame.event.get():  # 遍历所有事件
        if event.type == pygame.QUIT:  # 检查是否有退出事件
            exit()  # 如果有退出事件,退出程序

    # 在屏幕上显示子图的区域
    screen.blit(image_child, rect1)  # 将子图绘制到屏幕上,位置由rect1定义

    # 更新屏幕显示
    pygame.display.update()  # 刷新屏幕显示,确保最新的内容被渲染出来

运行结果:

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言

从运行结果的截图能够得到,在之前的图片截取了一个150*120大小的矩形图片,将截取的图片放在rect1的变量中, 由rect1来进行图片的输出工作,创建一个子图将子图赋给rect2,用print函数将矩形区域的大小进行输出显示。

(1)pygame.Rect.copy() 的用法

        复制矩,(rectangle)copy() -> Rect,返回与原始位置和大小相同的新矩形。

import pygame  # 导入pygame库,用于游戏和图形界面的开发

pygame.init()  # 初始化pygame,准备使用pygame的各种功能

# 创建一个窗口
screen = pygame.display.set_mode((500, 400))  # 创建一个500x400像素的窗口

# 设置窗口标题
pygame.display.set_caption('超级玛丽')  # 设置窗口的标题为“超级玛丽”

# 加载图像
image_surface = pygame.image.load("C:\\Users\\lsz\\Desktop\\OIP.jpg")  # 从指定路径加载一张图像

# 创建一个矩形对象
rect1 = pygame.Rect(50, 50, 150, 120)  # 创建一个矩形区域,位于(50, 50),大小为150x120像素

# 创建一个子图(surface对象)
image_child = image_surface.subsurface(rect1)  # 从原始图像中截取rect1定义的区域,创建一个新的surface对象

# 使用pygame.Rect.copy()创建矩形的副本
rect2 = rect1.copy()  # 创建rect1的副本rect2

# 修改副本矩形的属性
rect2.move_ip(200, 0)  # 将副本矩形向右移动200像素

# 主循环
while True:  # 开始一个无限循环,用于保持窗口显示
    for event in pygame.event.get():  # 遍历所有事件
        if event.type == pygame.QUIT:  # 检查是否有退出事件
            exit()  # 如果有退出事件,退出程序

    # 在屏幕上显示子图的区域
    screen.blit(image_child, rect1)  # 将子图绘制到屏幕上,位置由rect1定义

    # 在屏幕上显示副本矩形
    pygame.draw.rect(screen, (255, 0, 0), rect2)  # 在屏幕上绘制一个红色矩形,位置和大小由rect2定义

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

运行结果:

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言

(2)pygame.Rect.move() 的用法

        移动矩形,move(x, y) -> Rect,返回由给定偏移量移动的新矩形。 x和y参数可以是任何整数值,正数或负数

import pygame # 导入pygame库
import sys

pygame.init()  # 初始化pygame

# 创建一个窗口
screen = pygame.display.set_mode((500, 400))  # 创建一个500x400像素的窗口
pygame.display.set_caption('超级玛丽')  # 设置窗口标题

# 加载图像
image_surface = pygame.image.load("C:\\Users\\lsz\\Desktop\\OIP.jpg")  # 加载图像

# 创建一个矩形对象
rect1 = pygame.Rect(50, 50, 150, 120)  # 定义一个矩形区域

# 使用subsurface创建一个子图(surface对象)
image_child = image_surface.subsurface(rect1)  # 从原图中截取子部分

# 使用pygame.Rect.copy()创建矩形的副本
rect2 = rect1.copy()  # 创建rect1的副本rect2

# 使用pygame.Rect.move()移动矩形
rect3 = rect1.move(250, 0)  # 创建rect1的另一个副本并向右移动250像素

# 主循环
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()  # 退出pygame
            sys.exit()  # 退出程序

    # 在屏幕上显示两个子图的区域
    screen.blit(image_child, rect1)  # 显示第一个子图
    screen.blit(image_child, rect3)  # 显示移动后的第二个子图

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

运行结果:

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言

(3)pygame.Rect.move_ip() 的用法

        就在原地位置移动矩形,move_ip(x, y) -> None,与Rect.move()方法相同,但就在原地位置操作。

(4)pygame.Rect.inflate()的用法

        增大或缩小矩形大小,inflate(x, y) -> Rect,返回一个新的矩形,其大小由给定的偏移量改变。 矩形保持以其当前中心为中心。 负值会缩小矩形。 注意,使用整数,如果给定的偏移量太小(<2> -2),则中心位置将会被关闭。

import pygame  # 导入pygame库
import sys

pygame.init()  # 初始化pygame

# 创建一个窗口
screen = pygame.display.set_mode((500, 400))  # 创建一个500x400像素的窗口
pygame.display.set_caption('超级玛丽')  # 设置窗口标题

# 加载图像
image_surface = pygame.image.load("C:\\Users\\lsz\\Desktop\\OIP.jpg")  # 加载图像

# 创建一个矩形对象
rect1 = pygame.Rect(50, 50, 150, 120)  # 定义一个矩形区域

# 使用subsurface创建一个子图(surface对象)
image_child = image_surface.subsurface(rect1)  # 从原图中截取子部分

# 使用pygame.Rect.copy()创建矩形的副本
rect2 = rect1.copy()  # 创建rect1的副本rect2

# 使用pygame.Rect.move()移动矩形
rect3 = rect1.move(250, 0)  # 创建rect1的另一个副本并向右移动250像素

# 使用pygame.Rect.inflate()调整矩形大小
rect4 = rect1.inflate(50, 50)  # 创建rect1的副本,将其大小增大50像素

# 主循环
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()  # 退出pygame
            sys.exit()  # 退出程序

    # 在屏幕上显示两个子图的区域
    screen.blit(image_child, rect1)  # 显示第一个子图
    screen.blit(image_child, rect3)  # 显示移动后的第二个子图

    # 在屏幕上显示调整大小后的矩形
    pygame.draw.rect(screen, (255, 0, 0), rect4, 2)  # 绘制一个红色的矩形框

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

运行结果:

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言

(5)pygame.Rect.inflate_ip() 的用法

        就在原地位置增大或缩小矩形大小,inflate_ip(x, y) -> None,与Rect.inflate()方法相同,但就在原地位置操作。

(6)pygame.Rect.clamp() 的用法
import pygame  # 导入pygame库,用于创建游戏和图形用户界面

pygame.init()  # 初始化pygame,这是开始使用pygame之前必须做的准备工作

# 创建窗口
screen = pygame.display.set_mode((500, 400))  # 创建一个500像素宽、400像素高的窗口
pygame.display.set_caption('超级玛丽')  # 设置窗口标题为“超级玛丽”

# 加载图像
image_surface = pygame.image.load("C:\\Users\\lsz\\Desktop\\OIP.jpg")  # 从指定路径加载图像

# 创建矩形
rect1 = pygame.Rect(50, 50, 150, 120)  # 在位置(50, 50)处创建一个150x120像素的矩形

# 创建子图
image_child = image_surface.subsurface(rect1)  # 使用rect1指定的区域从image_surface创建子图

# 创建矩形副本
rect2 = rect1.copy()  # 创建rect1的副本,命名为rect2

# 创建边界矩形
boundary_rect = pygame.Rect(0, 0, 500, 400)  # 创建一个与屏幕同样大小的边界矩形

# 主循环
while True:  # 开始无限循环,用于保持窗口持续显示
    for event in pygame.event.get():  # 遍历所有事件
        if event.type == pygame.QUIT:  # 检测是否有退出事件(例如点击关闭按钮)
            pygame.quit()  # 退出pygame
            exit()  # 退出程序

    # 使用clamp方法确保rect2在边界内
    rect2 = rect2.clamp(boundary_rect)  # 使用clamp方法保持rect2在boundary_rect边界内

    # 在屏幕上显示图像
    screen.blit(image_child, rect1)  # 在rect1指定的位置显示image_child图像
    screen.blit(image_child, rect2)  # 在rect2指定的位置显示相同的图像

    # 更新屏幕
    pygame.display.update()  # 更新屏幕以显示最新的绘制内容

        创建一个Pygame窗口,加载一张图像,并在窗口的不同位置显示这张图像的特定区域。程序使用了Pygame的Rect对象来指定图像的区域,并利用clamp方法确保这个区域始终保持在窗口的边界内。通过无限循环,程序保持窗口的持续显示,并响应退出事件。

(7)pygame.Rect.clamp_ip() 的用法

        将矩形就在原地位置移动到另一个内部,clamp_ip(Rect) -> None,与Rect.clamp()方法相同,但就在原地位置操作。

(8)pygame.Rect.clip() 的用法
import pygame  # 导入pygame库,用于游戏和图形界面的开发

pygame.init()  # 初始化pygame,这是开始使用pygame之前必须做的准备工作

# 创建一个窗口
screen = pygame.display.set_mode((500, 400))  # 创建一个500像素宽、400像素高的窗口
pygame.display.set_caption('超级玛丽')  # 设置窗口标题为“超级玛丽”

# 加载图像
image_surface = pygame.image.load("C:\\Users\\lsz\\Desktop\\OIP.jpg")  # 从指定路径加载图像

# 创建矩形对象
rect1 = pygame.Rect(50, 50, 150, 120)  # 在位置(50, 50)处创建一个150x120像素的矩形

# 创建子图
image_child = image_surface.subsurface(rect1)  # 从原图中截取rect1指定的区域,创建子图

# 创建rect1的副本rect2
rect2 = rect1.copy()  # 创建rect1的副本rect2
rect2.move_ip(200, 0)  # 将rect2向右移动200像素

# 创建用于演示clip功能的另一个矩形rect3
rect3 = pygame.Rect(100, 100, 150, 120)  # 创建一个新矩形,位置在(100, 100),大小150x120像素

# 主循环
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()  # 检测到退出事件后,退出pygame
            exit()  # 退出程序

    # 使用clip()方法找出rect2和rect3的重叠部分
    overlap_rect = rect2.clip(rect3)  # clip方法计算两个矩形的重叠部分

    # 在屏幕上显示图像和矩形
    screen.blit(image_child, rect1)  # 将子图绘制在rect1指定的位置
    pygame.draw.rect(screen, (255, 0, 0), rect2, 2)  # 在rect2指定的位置绘制一个红色矩形
    pygame.draw.rect(screen, (0, 255, 0), rect3, 2)  # 在rect3指定的位置绘制一个绿色矩形

    # 如果rect2和rect3有重叠部分,则绘制重叠部分
    if overlap_rect.width > 0 and overlap_rect.height > 0:
        pygame.draw.rect(screen, (0, 0, 255), overlap_rect, 2)  # 绘制重叠部分,蓝色矩形

    # 更新屏幕显示
    pygame.display.update()  # 刷新屏幕,显示最新绘制的内容

运行结果:

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言

(8)pygame.Rect.clip() 的用法
import pygame  # 导入pygame库,这是一个用于创建游戏和图形界面的Python模块

pygame.init()  # 初始化pygame,这是使用pygame前的必要步骤

# 创建窗口
screen = pygame.display.set_mode((500, 400))  # 创建一个宽500像素、高400像素的窗口
pygame.display.set_caption('超级玛丽')  # 为窗口设置标题为“超级玛丽”

# 加载图像
image_surface = pygame.image.load("C:\\Users\\lsz\\Desktop\\OIP.jpg")  # 从指定路径加载图像

# 创建矩形对象
rect1 = pygame.Rect(50, 50, 150, 120)  # 创建一个位置在(50, 50)、宽150像素、高120像素的矩形

# 创建子图
image_child = image_surface.subsurface(rect1)  # 从加载的图像中截取rect1所指定的区域

# 创建rect1的副本rect2
rect2 = rect1.copy()  # 复制rect1,创建rect2
rect2.move_ip(200, 0)  # 将rect2沿水平方向移动200像素

# 使用union()方法
union_rect = rect1.union(rect2)  # 计算rect1和rect2的合并矩形

# 主循环
while True:
    for event in pygame.event.get():  # 处理所有从pygame获取的事件
        if event.type == pygame.QUIT:  # 如果事件类型为退出
            pygame.quit()  # 退出pygame
            exit()  # 退出程序

    # 在屏幕上显示子图
    screen.blit(image_child, rect1)  # 将子图显示在rect1所在的位置
    pygame.draw.rect(screen, (255, 0, 0), rect2)  # 在rect2位置绘制红色矩形框

    # 在屏幕上绘制合并后的矩形
    pygame.draw.rect(screen, (0, 255, 0), union_rect, 2)  # 绘制代表合并区域的绿色矩形框

    # 更新屏幕显示
    pygame.display.update()  # 刷新屏幕显示,呈现最新的绘制内容

运行结果:

import pygameimport sys# 初始化pygamepygame.init()# 设置窗口大小screen = pyg,pygame,python,开发语言文章来源地址https://www.toymoban.com/news/detail-827243.html

到了这里,关于Python -- 利用pygame库进行游戏开发基础(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python利用pygame实现飞机大战游戏

    文章目录: 一:运行效果 1.演示 2.思路和功能 二:代码 文件架构 Demo 必备知识:python图形化编程pygame游戏模块 效果图 ◕‿◕✌✌✌ Python利用pygame实现飞机大战游戏运行演示 参考:【Python游戏】1小时开发飞机大战游戏-Pygame版本(1小时40分钟) 博主提取资源: 提取

    2024年04月09日
    浏览(90)
  • Pygame 游戏开发 基础知识

    Pygame 是一个跨平台的 Python 模块, 专为电子游戏设计. Pygame 在已经非常优秀的 SDL 库的基础上增加了许多功能. 安装命令: 导入 Pygame 包: pygame.locals 模块包括了 pygame 中定义的各种常量. 导入所有常量 pygame.init() 是启动 pygame 并初始化的命令, 类似 python 中的 __init__ . 例子: pygame.

    2023年04月25日
    浏览(50)
  • Python 游戏开发与 Pygame

    第一章. Python 简介 Python 简介和历史 Python 特点和优势 安装 Python 第二章. 变量和数据类型 变量和标识符 基本数据类型:数字、字符串、布尔值等 字符串操作 列表、元组和字典 第三章. 控制语句和函数 分支结构:if/else 语句 循环结构:for 和 while 循环 函数 参数传递与返回值

    2024年04月17日
    浏览(51)
  • Python基础篇(十五)-- Pygame游戏编程

            Pygame是一个开源的Python模块,专门用于多媒体应用(如电子游戏)的开发,其中包含对图像、声音、视频、事件、碰撞等的支持。Pygame建立在SDL的基础上,SDL是一套跨平台的多媒体开发库,用C语言实现,被广泛的应用于游戏、模拟器、播放器等的开发。而Pygame让

    2024年02月05日
    浏览(50)
  • 【附源码】使用python+pygame开发消消乐游戏

    消消乐小游戏相信大家都玩过,大人小孩都喜欢玩的一款小游戏,那么基于程序是如何实现的呢?今天带大家,用python+pygame来实现一下这个花里胡哨的消消乐小游戏功能,感兴趣的朋友一起看看吧 目录 一、环境要求 二、游戏简介 三、完整开发流程 1、项目主结构 2、详细配

    2024年02月04日
    浏览(63)
  • Python Pygame游戏开发教程正式发布(非常详细)

    Pygame 是一款专门为开发和设计 2D 电子游戏而生的、免费开源的 Python 软件包/模块,它支 Windows、Linux、Mac OS 等操作系统,具有良好的跨平台性 Pygame 在 SDL 的基础上开发而成,它提供了诸多操作模块,比如图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏

    2024年04月13日
    浏览(48)
  • 【pygame游戏开发】这几个经典游戏,小红书Python面试题目

    pygame.time.set_timer(change_hole_event, 800) mole = Mole(cfg.MOLE_IMAGEPATHS, hole_pos) hammer = Hammer(cfg.HAMMER_IMAGEPATHS, (500, 250)) clock = pygame.time.Clock() your_score = 0 flag = False init_time = pygame.time.get_ticks() while True: time_remain = round((61000 - (pygame.time.get_ticks() - init_time)) / 1000.) if time_remain == 40 and not flag: hole

    2024年04月25日
    浏览(52)
  • 在Python中使用Pygame开发游戏的100条建议

    Pygame是一个用于制作游戏的Python库。它提供了许多功能,使您可以轻松地创建2D游戏和多媒体应用程序。下面是一些使用Pygame库的基本步骤: 安装Pygame 首先,您需要安装Pygame库。您可以使用pip命令在命令行中安装它: 导入Pygame模块 在Python脚本中,您需要导入Pygame模块,以便

    2024年03月11日
    浏览(54)
  • Pygame事件处理机制简介-慕课的python游戏开发入门02

    目录 首先解释几个问题: 1、事件处理需求主要有以下几个方面: 2、Pygame事件队列 3、Pygame事件 4、事件类型及属性  5、事件处理的重要函数  6、键盘事件 7、鼠标事件 8、处理事件函数 9、操作事件队列 10、生成事件 其次给出代码段,有利于大家对其进行学习和分析 最后进

    2024年02月06日
    浏览(88)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包