使用pygame让方向键实现角色的移动和转向

这篇具有很好参考价值的文章主要介绍了使用pygame让方向键实现角色的移动和转向。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现效果

pygame小鱼

1.导入包pygame和sys

import pygame
import sys
from pygame.locals import *

2.初始化pygame,设置窗口大小

pygame.init()
screen = pygame.display.set_mode((800, 400))

3.导入角色图片

(1)先加载图片

img=pygame.image.load("./fish.png") # ./代表当前目录

(2)图片过大需要缩放

img=pygame.transform.scale(img,(50,50))  #可以将角色缩放

(3)获得图片的位置和大小

pos = img.get_rect()

4.展示图片

while True: # 游戏主循环
	for event in pygame.event.get(): # 获取事件
		if event.type == QUIT:  # 退出
            pygame.quit()  # 退出pygame模块
            sys.exit()  # 退出系统
	
	screen.fill((0,204,255)) # 使用蓝色填充窗口
	screen.blit(img,pos) # 在窗口上绘制图像
	pygame.display.update()  # 更新窗口画面显示

5.用键盘控制角色上下左右移动

while True:
	for event in pygame.event.get():
	......
	......
  	key = pygame.key.get_pressed()  # 获取键盘状态
    	if key[K_UP] and pos.top > 0:  # 如果方向键上按下,并且没有超过上边界
        	pos.y -= 5  # 向上移动一个速度的值
    	if key[K_DOWN] and pos.bottom < 400:  # 如果方向键下按下,并且没有超过下边界
        	pos.y += 5  # 向下移动一个速度的值
    	if key[K_LEFT] and pos.left > 0:  # 如果方向键左按下,并且没有超过左边界
        	pos.x -= 5  # 向左移动一个速度的值
    	if key[K_RIGHT] and pos.right < 800:  # 如果方向键右按下,并且没有超过右边界
        	pos.x += 5  # 向右移动一个速度的值
    
    screen.fill((0,204,255)) # 使用蓝色填充窗口
    ......
    ......
    

7.改变方向

transform.flip(Surface,xbool,ybool)可以将图片进行翻转,返回一个新图像
Surface:需要翻转的图像
xbool:是否水平翻转,True/False
ybool:是否垂直翻转,True/False文章来源地址https://www.toymoban.com/news/detail-765768.html

img_=pygame.transform.flip(img,True,False) #新建一个图片对象,用来存放面向左边的图片

8.全部代码

import pygame
import sys
from pygame.locals import *

clock = pygame.time.Clock()
img = pygame.image.load("./fish.png")
img=pygame.transform.scale(img,(50,50))  #可以将角色缩放
img_=pygame.transform.flip(img,True,False) #新建一个图片对象,用来存放面向左边的图片
pos = img.get_rect()
screen = pygame.display.set_mode((800, 400))
speedx = 5
speedy = 5
pygame.mouse.set_visible(False)  # 隐藏鼠标
while True:
    clock.tick(60) # 每秒不超过60帧的速度运行
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    '''# 让角色跟着鼠标走
    mouse_pos = pygame.mouse.get_pos()  # 获取鼠标位置
    pos.center=mouse_pos  #修改角色中心位置为鼠标位置'''

    # 用键盘控制角色上下移动
    key = pygame.key.get_pressed()  # 获取键盘状态
    if key[K_UP] and pos.top > 0:  # 如果方向键上按下,并且没有超过上边界
        pos.y -= speedy  # 向上移动一个速度的值
    if key[K_DOWN] and pos.bottom < 400:  # 如果方向键下按下,并且没有超过下边界
        pos.y += speedy  # 向下移动一个速度的值
    if key[K_LEFT] and pos.left > 0:  # 如果方向键左按下,并且没有超过左边界
        img = img_   #当按下左键时,图像变成面向左边的图片
        pos.x -= speedx  # 向左移动一个速度的值
    if key[K_RIGHT] and pos.right < 800:  # 如果方向键右按下,并且没有超过右边界
        img = pygame.image.load("./fish.png")  #当按下右键时载入原图
        img = pygame.transform.scale(img, (50, 50))  # 可以将角色缩放
        pos.x += speedx  # 向右移动一个速度的值
    screen.fill((0, 204, 255))  # 用纯色填充窗口
    screen.blit(img, pos)  # 绘制图像
    pygame.display.update()

到了这里,关于使用pygame让方向键实现角色的移动和转向的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity InputSystem】实用教程-实现角色移动跳跃功能(Input System在PC端鼠键!手机端触摸屏!主机手柄!三端使用教程)

    在上一篇文章当中我们手把手的跟大家分享了InputSystem的基础操作(如何使用5种不同的方式获取到InputSystem种的输入检查信息)。那么接下来我们继续分享一下在我们获取到InputSystem输入信息后,如何使用检测到的信息实现我们对应的输入功能。 本次我们使用的Unity编辑器版本为

    2024年02月11日
    浏览(53)
  • 将树莓派转身为强大的Web服务器:使用Nginx和cpolar实现远程访问

    安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Nginx 的内存占用率非常低,可以在树莓派等资源受限的设备上运行。同时结合cpolar 内网穿透工具即可实现远程访问。 在树莓派安装Nginx也是

    2024年02月12日
    浏览(32)
  • 10.Unity2D 横版 简单AI 之 敌人随机移动+自动巡逻+障碍物跳跃+悬崖处转身+射线检测

    总目录 9.Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人发起攻击(索敌)+对象池优化+主角受伤死亡_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客 Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不

    2023年04月20日
    浏览(47)
  • 7. unity脚本控制物体运动(转向、移动、旋转)

    1. 移动物体: 在界面中添加一个物体,并给这个物体添加一个脚本文件,在脚本文件当中如果想控制物体运动,就需要在 unity 每一帧更新的时候,给物体的坐标值重新赋值,这样就能按照帧更新速率实时的更改物体的位置,实现移动效果。 位置更新的代码应该写在***update

    2023年04月12日
    浏览(53)
  • vxe表格实现键盘上下左右方向键移动聚焦

    vxe 表格分为 vxe-table 一般表格和 vxe-grid 高级表格,两者之间的区别我就不说啦,我们来实现这两种表格用键盘按动上下左右方向键达到移动聚焦的效果。话不多说,上正文!!! 首先在标签放入这两个事件: 主要是利用vxe表格内置的@cell-click事件,来监听点击单元格的行号

    2024年02月07日
    浏览(79)
  • Unity 3D之 利用Vector3 计算移动方向,以及实现位移多少

    这段代码是一个在游戏开发中常见的示例,用于获取玩家的输入,并将输入值转换为一个三维向量,以表示移动方向。让我们逐步解释这段代码: float horizontalInput = Input.GetAxis(\\\"Horizontal\\\"); :这一行代码获取水平方向上的输入。它调用 Input.GetAxis(\\\"Horizontal\\\") 来获取水平轴的输入

    2024年02月11日
    浏览(41)
  • Unity3D学习记录04——利用射线实现角色类似LOL的移动

    首先新建一个空白的GameObject,挂在一个MouseManager的脚本 实现思路: 通过获取鼠标点击的位置,获得该位置的信息,然后使角色移动到该位置 MouseManager脚本的代码如下:   代码解释: 先创建了一个Action类型的事件OnMouseClicked 这个是C#中事件的内容,我们可以在满足条件的时

    2024年02月08日
    浏览(53)
  • 【算法】游戏中的学习,使用c#面向对象特性控制游戏角色移动

    最近,小悦的生活像是一首繁忙的交响曲,每天忙得团团转,虽然她的日程安排得满满当当,但她并未感到充实。相反,她很少有时间陪伴家人,这让她感到有些遗憾。在周五的午后,小悦的哥哥突然打来电话,他的声音里充满了焦虑。 “小悦,我有个事情想拜托你。”哥哥

    2024年02月08日
    浏览(53)
  • Unity VR 开发教程 OpenXR+XR Interaction Toolkit (三) 转向和移动

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2024年02月11日
    浏览(50)
  • Unity解决:3D开发模式第三人称视角 WASD控制角色移动旋转 使用InputSystem

    Unity版本:2019.2.3f1 目录  安装InputSystem 1:创建InputHander.cs脚本 挂载到Player物体上 获取键盘输入WADS 2.创建PlayerLocomotion.cs挂载到Player物体上,控制物体移动转向   菜单栏/Window/Package Manager/Input System  工程面板内 右键--创建Input Actions  选中New Controls改名为PlayerControls 然后属

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包