资讯专栏INFORMATION COLUMN

❤️ 如何在 Pygame 中移动你的游戏角色 ❤️

lookSomeone / 2429人阅读

作者:海拥

主页:https://haiyong.blog.csdn.net/

 

Pygame是一组跨平台的 Python 模块,专为编写视频游戏而设计。它包括旨在与 Python 编程语言一起使用的计算机图形和声音库。您可以使用 pygame 创建不同类型的游戏,包括街机游戏、平台游戏等等。

使用的图像:

 
你可以控制玩家的移动。为此,首先使用 pygame 的 display.set_mode() 方法创建一个显示对象,并使用 pygame 的 image.load() 方法添加玩家的精灵。set_mode() 函数用于初始化显示表面或窗口。size 参数是一对代表宽度和高度的数字。flags 参数是附加选项的集合。depth 参数表示用于颜色的位数。

语法:

set_mode(size=(0, 0), flags=0, depth=0, display=0, vsync=0) 


创建一个变量来存储玩家的速度。设置玩家的初始坐标。现在,根据键盘事件(即键状态改变时发生的事件)更改播放器的 x 和 y 坐标。

blit(surface,surfacerect) 函数用于在屏幕上绘制图像。

语法:

blit(surface, surfacerect)


为了从队列中收集所有事件,使用事件模块的 get() 函数,然后我们使用 for 循环迭代所有事件。

语法:

get(eventtype=None)


使用显示模块的 update() 函数更新屏幕。

语法:

update(rectangle=None)


下面是实现

示例:玩家移动程序

# 导入 pygame 模块import pygamefrom pygame.locals import *# 启动 pygame 并授予使用 pygame 功能的权限pygame.init()# 创建特定尺寸的显示面对象window = pygame.display.set_mode((600, 600))# 在窗口中添加标题pygame.display.set_caption("Player Movement")# 添加玩家精灵image = pygame.image.load(r"haiyong.png")# 将玩家的初始坐标存储在两个变量中,即 x 和 yx = 100y = 100# 创建一个变量来存储玩家移动的速度velocity = 12# 创建无限循环run = Truewhile run:    # 用白色填充背景    window.fill((255, 255, 255))    # 在 x 和 y 坐标处显示玩家精灵    window.blit(image, (x, y))    # 迭代 pygame.event.get() 方法返回的 Event 对象列表。    for event in pygame.event.get():        # 如果事件类型为 QUIT,则关闭窗口和程序        if event.type == pygame.QUIT:            run = False            pygame.quit()            quit()        # 如果事件类型为 KEYDOWN,即按下键盘按钮,则检查事件键        if event.type == pygame.KEYDOWN:            # 如果按下的按钮是左箭头键,则减小 x 坐标            if event.key == pygame.K_LEFT:                x -= velocity            # 如果按下的按钮是右箭头键,则增加 x 坐标            if event.key == pygame.K_RIGHT:                x += velocity            # 如果按下按钮是向上箭头键,则减小 y 坐标            if event.key == pygame.K_UP:                y -= velocity            # 如果按下按钮是向下箭头键,则增加 y 坐标            if event.key == pygame.K_DOWN:                y += velocity        # 将表面对象绘制到屏幕上        pygame.display.update()

输出:

 玩家也可以连续移动。为此,除了要进行一些更改外,其他一切都保持不变。在这里,我们创建了一个新的时钟对象来使用 clock() 控制游戏的帧速率。

语法

Clock()

 创建一个新变量(名为 key_pressed_is)来存储用户按下的键。为此,我们使用 key 模块的 get_pressed() 函数。

语法

get_pressed()

它返回一个布尔值序列,表示键盘上每个键的状态。

示例:连续移动玩家

# 导入 pygame 模块import pygamefrom pygame.locals import *# 启动 pygame 并授予使用 pygame 功能的权限pygame.init()# 创建特定尺寸的显示面对象window = pygame.display.set_mode((600, 600))# 在窗口中添加标题pygame.display.set_caption("玩家移动")# 初始化时钟 时钟用于跟踪和控制游戏的帧速率clock = pygame.time.Clock()# 添加玩家精灵image = pygame.image.load(r"haiyong.png")# 将玩家的初始坐标存储在两个变量中,即 x 和 yx = 100y = 100# 创建一个变量来存储玩家移动的速度velocity = 12# 创建无限循环run = Truewhile run:	# 将帧速率设置为 60 fps	clock.tick(60)	# 用白色填充背景	window.fill((255, 255, 255))	# 在 x 和 y 坐标处显示玩家精灵	window.blit(image, (x, y))	# 迭代 pygame.event.get() 方法返回的 Event 对象列表。	for event in pygame.event.get():		# 如果事件类型为 QUIT,则关闭窗口和程序		if event.type == pygame.QUIT:			run = False			pygame.quit()			quit()	# 使用 key.get_pressed() 方法将按下的键存储在新变量中	key_pressed_is = pygame.key.get_pressed()	# 改变玩家坐标	if key_pressed_is[K_LEFT]:		x -= 8	if key_pressed_is[K_RIGHT]:		x += 8	if key_pressed_is[K_UP]:		y -= 8	if key_pressed_is[K_DOWN]:		y += 8	# 将表面对象绘制到屏幕上	pygame.display.update()

 输出:

 

翻转玩家精灵

您可以使用 pygame 的转换模块的 flip() 函数轻松翻转任何精灵。例如,如果我们想在玩家改变移动方向时翻转精灵,那么我们可以使用下面的代码 

window.blit(pygame.transform.flip(image, False, True), (x,y))

flip() 函数用于水平、垂直翻转表面对象。 或两者。 这个函数有三个参数:

  • 要翻转的图像
  • 进行水平翻转的布尔值
  • 进行垂直翻转的布尔值

下面是实现。

示例:翻转播放器图像

输出:

 

 我们还可以通过创建精灵列表轻松更新玩家精灵。

image = [pygame.image.load(r’haiyong.png’),pygame.image.load(r’haiyong2.png’)]

示例:更新精灵

# 导入 pygame 模块import pygamefrom pygame.locals import *# 启动 pygame 并授予使用 pygame 功能的权限pygame.init()# 创建特定尺寸的显示面对象window = pygame.display.set_mode((600, 600))# 在窗口中添加标题pygame.display.set_caption("玩家切换")# 初始化时钟 时钟用于跟踪和控制游戏的帧速率clock = pygame.time.Clock()# 创建一个变量来检查运动方向# 每当玩家改变方向时,我们就会改变它的值direction = True# 在列表中添加玩家精灵image = [pygame.image.load(r"haiyong.png"),		pygame.image.load(r"haiyong2.png")]# 将玩家的初始坐标存储在两个变量中,即 x 和 yx = 100y = 100# 创建一个变量来存储玩家移动的速度velocity = 12# 创建无限循环run = Truewhile run:	# 将帧速率设置为 60 fps	clock.tick(60)	# 用浅灰蓝色填充背景	window.fill((176, 224, 230))	# 在 x 和 y 坐标处显示玩家精灵    # 如果玩家改变方向,则改变玩家精灵	if direction == True:		window.blit(image[0], (x, y))	if direction == False:		window.blit(image[1], (x, y))	# 迭代 pygame.event.get() 方法返回的 Event 对象列表。	for event in pygame.event.get():		# 如果事件类型为 QUIT,则关闭窗口和程序		if event.type == pygame.QUIT:			run = False			pygame.quit()			quit()		# 改变方向变量的值		if event.type == pygame.KEYDOWN:			if event.key == pygame.K_RIGHT:				direction = True			elif event.key == pygame.K_LEFT:				direction = False	# 使用 key.get_pressed() 方法将按下的键存储在新变量中	key_pressed_is = pygame.key.get_pressed()	# 改变玩家坐标	if key_pressed_is[K_LEFT]:		x -= 5	if key_pressed_is[K_RIGHT]:		x += 5	if key_pressed_is[K_UP]:		y -= 5	if key_pressed_is[K_DOWN]:		y += 5	# 将表面对象绘制到屏幕上	pygame.display.update()

 

换张图试试

 更多和Python相关的文章

❤️【python入门项目】使用 Python 生成二维码❤️

❤️【python入门项目】使用 Tkinter 的 日历 GUI 应用程序❤️

❤️【python入门项目】将学妹的照片转换为铅笔素描 ❤️

❤️ 手把手教你使用 Python 制作贪吃蛇游戏 ❤️ 

❤️ 使用 python 的单人AI 扫雷游戏 ❤️

我已经写了很长一段时间的技术博客,并且主要通过CSDN发表,这是我的一篇 Web 响应式可过滤的游戏+工具展示页面教程。我喜欢通过文章分享技术与快乐。您可以访问我的博客: https://haiyong.blog.csdn.net  以了解更多信息。希望你们会喜欢!?

? 欢迎大家在评论区提出意见和建议!?

如果你真的从这篇文章中学到了一些新东西,喜欢它,收藏它并与你的小伙伴分享。?最后,不要忘了❤或?支持一下哦。
 

 

 

 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119550.html

相关文章

  • Pygame实战】开心——消消乐,你乐,我乐,大家乐~

    摘要:正文开心消消乐分为二部分首先是开心然后是消消乐游戏嘛嘿嘿一开心小故事三则近视聪明的学生杀手二消消乐游戏素材图片开心消消乐语音提示环境安装本文是由写的小游戏。 导语 你今天消消乐了吗? ​ 哈喽哈喽~木木子之前不是写过一篇百变消消乐嘛? 可能你们不记得了,没关系——今天重温一下,来一篇开心?...

    changfeng1050 评论0 收藏0
  • 使用 HTML、CSS 和 JS 创建响应式可过滤的游戏+工具展示页面 ❤

    响应式可过滤的游戏+工具展示页面 用于各种网站以按类别对图像进行排序。在本文中,我将向您展示如何借助 HTML CSS 和 javascript 创建响应式可过滤的游戏+工具展示页面。 可过滤作品集是一种流行的网络元素,可用于各种网站。它是一种作品画廊,大量作品整齐地排列在一起。值得注意的一点是,所有作品都可以在这里按类别排序。有一个导航栏,其中对所有类别进行了排序。单击这些类别中的任何一个时。...

    Lavender 评论0 收藏0
  • Pycharm常用快捷键【快查字典版】❤爆肝总结❤

    文章目录(PS:觉得不错请点赞收藏支持一下) 1. 格式化代码 【Ctrl + Alt + L】2. 多行代码合并为一行【Crtl+Shift+J】3. 修正报警告的代码【Ctrl + Enter】4 .包装代码【Crtl+Alt+T】5. 快速注释/取消注释【Crtl+/】6. 向右缩进一个制表位【Tab】7. 向左缩进一个制表位【Shift + Tab】8. 在上方插入新行【Ctrl + Al...

    BigNerdCoding 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<