赞
踩
- 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的使用资源。
- #导入所需的模块
- 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()来不断刷新屏幕内容,以确保文字信息被显示在窗口中,同时保持程序一直运行。
- 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() # 退出程序
运行结果:
这段代码是用于创建一个窗口并在窗口中显示一张图像。我的思路是首先我们导入了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并退出程序。
- 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() # 退出整个程序
运行结果:
改进之后可以将图片放大至全屏,以下是实现图片的全屏显示的关键性函数:
- # 将图片缩放到窗口大小
- image = pygame.transform.scale(image, (screen_width, screen_height)) # 将图像缩放到与窗口大小相同
利用tansform中的pygame.transform.scale()这个函数可针对性的对图像进行缩放操作
可以再次改进,再次利用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 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() 的运行结果就是计算从开始到运行到这行代码的时间
t1 =pygame.time.wait(3000) 的运行结果是暂停3000毫秒再进行后续部分
在 Pygame 中我们使用 Rect() 方法来创建一个指定位置,大小的矩形区域。函数的使用样例如下:
rect =pygame.Rect(left,top,width,height)
Rect()方法应该应用于一个Surface对象上,像Screen窗口有四个参数left,top,width,height,他们的表述图如下:
- 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() # 刷新屏幕显示,确保最新的内容被渲染出来
运行结果:
从运行结果的截图能够得到,在之前的图片截取了一个150*120大小的矩形图片,将截取的图片放在rect1的变量中, 由rect1来进行图片的输出工作,创建一个子图将子图赋给rect2,用print函数将矩形区域的大小进行输出显示。
复制矩,(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()
运行结果:
移动矩形,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()
运行结果:
就在原地位置移动矩形,move_ip(x, y) -> None,与Rect.move()方法相同,但就在原地位置操作。
增大或缩小矩形大小,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()
运行结果:
就在原地位置增大或缩小矩形大小,inflate_ip(x, y) -> None,与Rect.inflate()方法相同,但就在原地位置操作。
- 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方法确保这个区域始终保持在窗口的边界内。通过无限循环,程序保持窗口的持续显示,并响应退出事件。
将矩形就在原地位置移动到另一个内部,clamp_ip(Rect) -> None,与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指定的区域,创建子图
-
- # 创建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 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() # 刷新屏幕显示,呈现最新的绘制内容
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。