在pygame中如何实现键盘控制元素移动的效果
Admin 2022-06-06 群英技术资讯 454 次浏览
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 pygame from 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 和 y x = 100 y = 100 # 创建一个变量来存储玩家移动的速度 velocity = 12 # 创建无限循环 run = True while 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 pygame from 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 和 y x = 100 y = 100 # 创建一个变量来存储玩家移动的速度 velocity = 12 # 创建无限循环 run = True while 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 pygame from 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 和 y x = 100 y = 100 # 创建一个变量来存储玩家移动的速度 velocity = 12 # 创建无限循环 run = True while 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()
换张图试试
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了Pytorch搭建YoloV4目标检测平台实现源码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要介绍了Pytorch中的backward()多个loss函数用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了python中的opencv 图像分割与提取,图像中将前景对象作为目标图像分割或者提取出来。对背景本身并无兴趣分水岭算法及GrabCut算法对图像进行分割及提取。具体实现过程需要的朋友可以参考下面文章详细介绍
这篇文章主要介绍了Python运行时修改业务SQL代码,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
pytorch 用于训练,TensorRT用于推理是很多AI应用开发的标配。大家往往更加熟悉 pytorch 的算子,而不太熟悉TensorRT的算子。本文介绍了Pytorch中常用乘法的TensorRT实现,感兴趣的可以了解一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008