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

作者:海拥✘ 时间:2022-03-29 10:04:29 

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

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

使用的图像:

教你如何在Pygame 中移动你的游戏角色教你如何在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()

输出:

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

玩家也可以连续移动。为此,除了要进行一些更改外,其他一切都保持不变。在这里,我们创建了一个新的时钟对象来使用 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 中移动你的游戏角色

翻转玩家精灵

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

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

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

  • 要翻转的图像

  • 进行水平翻转的布尔值

  • 进行垂直翻转的布尔值

下面是实现。

示例:翻转播放器图像

输出:

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

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


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()

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

换张图试试

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

来源:https://blog.csdn.net/qq_44273429/article/details/120157888

标签:Pygame,游戏,角色
0
投稿

猜你喜欢

  • Python实现聊天机器人的示例代码

    2022-11-16 18:10:56
  • 安装完Python包然后找不到模块的解决步骤

    2022-01-23 05:38:10
  • PHP实现生成二维码的示例代码

    2023-06-13 09:16:03
  • PDO::rollBack讲解

    2023-07-23 06:52:34
  • Python实现公历(阳历)转农历(阴历)的方法示例

    2021-08-02 09:54:44
  • Python Panda中索引和选择 series 的数据

    2023-05-03 10:02:56
  • 不同分辨率下的自适用宽度

    2008-11-24 12:58:00
  • CSS 几条经典的 CSS Tips

    2008-08-20 18:40:00
  • Python办公自动化从Excel中计算整理数据并写入Word

    2021-12-19 03:22:35
  • Python 输出详细的异常信息(traceback)方式

    2023-01-17 11:43:48
  • python 19个值得学习的编程技巧

    2021-09-21 22:42:30
  • Python对象的深拷贝和浅拷贝详解

    2022-08-29 23:39:02
  • 使用一条INSERT语句完成多表插入

    2010-03-18 11:08:00
  • Python爬虫之pandas基本安装与使用方法示例

    2023-11-26 21:49:35
  • Django中的JWT身份验证的实现

    2022-10-28 23:01:54
  • 基于python框架Scrapy爬取自己的博客内容过程详解

    2021-12-21 06:39:30
  • Pandas.DataFrame删除指定行和列(drop)的实现

    2022-05-27 16:15:55
  • asp超强的Server Application Error 的解决方法

    2008-11-13 13:04:00
  • Windows10下 python3.7 安装 facenet的教程

    2022-06-21 11:17:01
  • Python3实现从文件中读取指定行的方法

    2021-01-06 04:18:17
  • asp之家 网络编程 m.aspxhome.com