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

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移动游戏角色内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Pygame做一期吃豆子游戏的示例代码

    Pygame的历史 Pygame是一个利用SDL库的写就的游戏库,SDL呢,全名Simple DirectMedia Layer,是一位叫做Sam Lantinga的大牛写的,据说他为了让Loki(致力于向Linux上移植Windows的游戏的一家大好人公司,可惜已经倒闭,唉好人不长命啊--)更有效的工作,创造了这个东东. SDL是用C写的,不过它也可以使用C++进行开发,当然还有很多其它的语言,Pygame就是Python中使用它的一个库.Pygame已经存在很多时间了,许多优秀的程序员加入其

  • python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)

    python+pygame实现坦克大战小游戏-可以自定义子弹速度: 运行环境–python3.7.pycharm: 源码需要请:点赞留言邮箱: 正常版子弹速度: 普通速度版 加速版子弹速度: 子弹加速版 另外还有多种道具,支持两人一起玩.main()方法如下: def main(): pygame.init() pygame.mixer.init() resolution = 630, 630 screen = pygame.display.set_mode(resolution) pygame

  • Python3+Pygame实现射击游戏完整代码

    之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够"炫" 今天浏览Python资料的时候,意外发现了这个很好的"射击"类游戏,看上去类似飞机大战,但更好玩 一.游戏特点 1. 运行非常流畅 2. 默认有3条命,每条命的HP可以增加(吃补品)也可以减少(被击中) 3. 有碰撞时的音效 4. 有碰撞时的爆炸效果 二.运行效果展示 三.完整代码 from __future__ import division import pyga

  • python pygame 愤怒的小鸟游戏示例代码

    小鸟(image) 游戏展示 代码展示 import pygame,sys pygame.init()#初始化操作 #保存窗口大小 width,height=600,400 screen=pygame.display.set_mode([width,height])#创建游戏窗口 #设置窗口标题 pygame.display.set_caption("愤怒的小鸟") #加载小鸟素材 player=pygame.image.load("xiaoniao.png") #

  • 使用pygame实现垃圾分类小游戏功能(已获校级二等奖)

    项目简介 本项目报名参加了"兖州中材杯"武汉理工大学第十一届环保创意作品大赛艺术理念组比赛.组员共三名,本人负责代码实现部分,其余两人分别负责项目策划与场景人物绘制. 项目背景 小组中负责策划的同学经过一定的调研之后发现,我校在校学生普遍缺乏垃圾分类方面的知识.经过讨论后,我们把游戏方向定位于"垃圾分类",游戏类型定位于像素风游戏,由于本人水平和时间有限,只能将玩法设计得尽量简单.感谢另外两位组员,他们的努力掩盖了我水平上的不足. 玩法介绍 家控制一名角色在操场背景

  • python基于pygame实现飞机大作战小游戏

    基于pygame的飞机大作战小游戏,适合新手,不能直接运行,只能在命令行进入当前游戏目录,输入python game.py才能够运行,尚不知道是什么原因. 游戏截图如下,我们用黄色的圆圈代表敌机: 代码如下 import pygame,sys,time,random,math def init(): pygame.init() size = width, height =600,600 screen =pygame.display.set_mode(size) plx=270 ply=528 b

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

    Pygame是一组跨平台的 Python 模块,专为编写视频游戏而设计.它包括旨在与 Python 编程语言一起使用的计算机图形和声音库.您可以使用 pygame 创建不同类型的游戏,包括街机游戏.平台游戏等等. 使用的图像: 你可以控制玩家的移动.为此,首先使用 pygame 的 display.set_mode() 方法创建一个显示对象,并使用 pygame 的 image.load() 方法添加玩家的精灵.set_mode() 函数用于初始化显示表面或窗口.size 参数是一对代表宽度和高

  • 三分钟教你如何在IDEA中快速创建工程的方法

    1. 创建Java工程 1. 打开的初始界面 Create New Project:创建一个新的工程 Import Project:导入一个现有的工程 Open:打开一个已有工程.比如:可以打开 Eclipse 项目. Check out from VersionControl:可以通过服务器上的项目地址 check out Github上面项目或其他 Git 托管服务器上的项目 2. 新建项目 如果要创建 Web 工程,则需要勾选上面的 Web Application.如果不需要创建 Web

  • 值得收藏!教你如何在IDEA中快速查看Java字节码

    一.javap的参数 -help  --help  -?        输出此用法消息   -version                 版本信息   -v  -verbose             输出附加信息   -l                       输出行号和本地变量表   -public                  仅显示公共类和成员   -protected               显示受保护的/公共类和成员   -package              

  • 教你如何在pycharm中安装opencv,tensorflow,keras

    目录 一.首先安装Anaconda,python和pycharm 二.首先安装opencv 三.安装tensorflow和kerass 四.小结 我在安装环境的时后,怎么都装不上去,搞了好久,现在来写一下心得. 一.首先安装Anaconda,python和pycharm 有很多教程,我就不在此赘述 二.首先安装opencv 1.点击左下角的Terminal 2.输入pip install opencv-python,然后按键盘上的enter(亲测有效) 3.看到successfully就说明安装

  • 教你如何在Pytorch中使用TensorBoard

    什么是TensorboardX Tensorboard 是 TensorFlow 的一个附加工具,可以记录训练过程的数字.图像等内容,以方便研究人员观察神经网络训练过程.可是对于 PyTorch 等其他神经网络训练框架并没有功能像 Tensorboard 一样全面的类似工具,一些已有的工具功能有限或使用起来比较困难 (tensorboard_logger, visdom等) .TensorboardX 这个工具使得 TensorFlow 外的其他神经网络框架也可以使用到 Tensorboard

  • 教你如何在Pycharm中导入requests模块

    1.找到python的安装路径: 如果忘记可以在Pycharm运行如下代码: import sys pythonpath = sys.executable print(pythonpath) 路径如下: 2.打开CMD: 转到python路径下的Scripts文件夹下: 3.输入要下载的PiP命令:pip install requests 等待下载,出现Successfully,,,,则下载成功 4.出现错误的解决办法: 如果出现如上图错误,则继续在CMD上运行: 1.输入语句"pip3 ins

  • 教你如何在pycharm中使用less

    前端css中用到less,在pycharm中安装配置less操作步骤如下: 1.点开setting,在Plugins中搜索node.js(安装less之前得安装node.js),安装成功后关闭重新打开pycharm. 2.点开pycharm左下角的Terminal,输入 npm install -g less ,安装less: 3.检查是否安装成功,执行命令"lessc -v"查看版本: (正常执行命令之后应该会看到less版本号信息,但是我的pycharm不知道为什么报如下截图错误,

  • 教你如何在IDEA 中添加 Maven 项目的 Archetype(解决添加不起作用的问题)

    目录 前言 实现过程 新建模块 添加脚手架 前言 在 IDEA 中点击新建 Maven 模块,会发现他已经为我们罗列出来了许多的 archetype,但有些时候满足不了我们的需求.下面就来看看如何添加自己的脚手架吧. 实现过程 新建模块 在 IDEA 中新建一个模块,需要保证每个目录下都至少有一个文件,不然打包的时候那个文件夹会被忽略掉,这里使用的项目结构如下图所示: 1.创建脚手架并打包打开终端,cd 到这个模块的根目录,比如这里是 D:/Java_Study/idea_projects/sp

  • 教你用Python pygame设置窗口标题和图标

    窗口标题 pygame.display.set_caption(title, icontitle=None) ''' • title设置窗口的标题内容 • icontitle设置图表化后的小标题 † 小标题可选,部分系统没有,一般不设置 ''' pygame.display.get_caption() ''' • 返回当前设置窗口的标题及小标题内容 • 返回结构为(title, icontitle) • 该函数与游戏交互逻辑配合,可以根据游戏情节修改标题内容 ''' 设置图标 pygame.di

  • 如何在AngularJs中调用第三方插件库

    在AngularJs中我们会不可避免的使用第三方库,例如jquery插件库.我们不能散乱的在AngularJS中引入这些库,例如在controller中.那么应该怎么在Angular中使用第三方库呢? 如何使用? 很简单,给插件写一个directive. 在这里,我会使用一个简单的jquery插件Toolbar.js 的DEMO. 这是我们如何在jquery中创建一个tooltip的: <!-- Click this to see a toolbar --> <div id="

随机推荐