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

 更新时间:2021年9月8日 12:00  点击:1513

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

换张图试试

到此这篇关于教你如何在Pygame 中移动你的游戏角色的文章就介绍到这了,更多相关Pygame移动游戏角色内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

[!--infotagslink--]

相关文章

  • 关于python pygame游戏进行声音添加的技巧

    这篇文章主要给大家分享的是pygame游戏进行声音添加的方法,这文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!...2021-10-23
  • JavaScript 实现生命游戏

    这篇文章主要介绍了JavaScript 实现生命游戏的示例步骤,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下...2021-04-24
  • C#拼图游戏编写代码

    这篇文章主要为大家详细介绍了C#拼图游戏的编写代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • 13个有趣又好玩的Python游戏代码分享

    今天小编跟大家分享13个有趣又好玩的Python小游戏示例代码,教你如何通过边打游戏边学编程!感兴趣的小伙伴快跟随小编一起学习起来...2022-02-23
  • 基于Python-Pycharm实现的猴子摘桃小游戏(源代码)

    这篇文章主要介绍了基于Python-Pycharm实现的猴子摘桃小游戏,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-20
  • Python Pygame中精灵和碰撞检测详解

    对于游戏中出现的每一样东西,比如砖块箱子水管地面,还有人物都可以看成是一个独立的物体,所以每个物体类都继承了pygame的精灵类pg.sprite.Sprite,这篇文章主要给大家介绍了关于Python Pygame中精灵和碰撞检测的相关资料,需要的朋友可以参考下...2021-10-05
  • python基于tkinter制作图形界面的2048游戏

    这篇文章主要介绍了python基于tkinter制作图形界面的2048游戏的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-04-06
  • Android开发之游戏引擎AndEngine资料简单介绍

    最近查看了一些关于开源Android游戏引擎的资料,觉得AndEngine功能强大,例子丰富,更新较快。由于初学,找资料化不少时间,现在将自己在网上收集的比较实用的资料网址贴在这里...2016-09-20
  • python实现逢七拍腿小游戏的思路详解

    这篇文章主要介绍了python实现逢七拍腿小游戏的思路,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-27
  • 利用python3 的pygame模块实现塔防游戏

    这篇文章主要介绍了利用python3 的pygame模块实现塔防游戏,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-08
  • C#利用控件拖拽技术制作拼图游戏

    这篇文章主要介绍了C#利用控件拖拽技术制作拼图游戏的方法以及核心代码,需要的朋友可以参考下...2020-06-25
  • 如何利用pygame实现简单的五子棋游戏

    这篇文章主要给大家介绍了关于如何利用pygame实现简单的五子棋游戏的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用pygame具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-05-08
  • Python干货实战之八音符酱小游戏全过程详解

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Python实现一个八音符酱小游戏,大家可以在过程中查缺补漏,提升水平...2021-10-23
  • JavaScript仿微信打飞机游戏

    这篇文章主要为大家详细介绍了JavaScript仿微信打飞机游戏的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-05-09
  • 简单实现C语言2048游戏

    这篇文章主要为大家详细介绍了简单实现C语言2048游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
  • JavaScript实现打字游戏

    这篇文章主要为大家详细介绍了JavaScript实现打字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-19
  • python基于pygame实现飞机大作战小游戏

    这篇文章主要为大家详细介绍了python基于pygame实现飞机大作战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-11-19
  • Python制作简单的剪刀石头布游戏

    这篇文章主要介绍了Python制作剪刀石头布游戏的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...2020-12-11
  • 详解CocosCreator制作射击游戏

    这篇文章主要介绍了CocosCreator制作射击游戏,各个方面都讲的比较详细,希望同学们自己动手试一下...2021-04-16
  • MFC实现连连看游戏之消子算法

    这篇文章主要为大家详细介绍了MFC实现连连看游戏之消子算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25