pygame游戏角色旋转_使用Pygame移动游戏角色

pygame游戏角色旋转

在本系列的第一篇文章中,我解释了如何使用Python创建一个简单的基于文本的骰子游戏 。 在第二部分中,我们从头创建游戏 ,从创建游戏环境开始 。 并且,在第三部分中,我们创建了一个玩家精灵 ,并使其在您(而不是空的)游戏世界中生成。 您可能已经注意到,如果您不能随意移动角色,那么游戏就不会太有趣。 在本文中,我们将使用Pygame添加键盘控件,以便您可以控制角色的动作。

Pygame中有一些函数可以添加其他类型的控件,但是如果您要输入Python代码,肯定会拥有键盘,因此我们将使用它。 了解键盘控件后,您可以自己探索其他选项。

在本系列的第二篇文章中,您创建了退出游戏的钥匙,其原理与运动相同。 但是,使角色移动会更加复杂。

让我们从简单的部分开始:设置控制器键。

设置用于控制播放器精灵的键

在IDLE,Ninja-IDE或文本编辑器中打开Python游戏脚本。

由于游戏必须不断地“监听”键盘事件,因此您将编写需要连续运行的代码。 您能找出在整个游戏期间需要不断运行的代码的位置吗?

如果您回答“在主循环中”,那是对的! 请记住,除非代码处于循环中,否则它将(最多)仅运行一次-如果将其隐藏在永远不会使用的类或函数中,则可能根本不会运行。

要使Python监视传入的按键,请将此代码添加到主循环中。 尚无代码可以使任何事情发生,因此请使用print语句表示成功。 这是一种常见的调试技术。


   
   
   
while main == True :
    for event in pygame. event . get ( ) :
        if event. type == pygame. QUIT :
            pygame. quit ( ) ; sys . exit ( )
            main = False

        if event. type == pygame. KEYDOWN :
            if event. key == pygame. K_LEFT or event. key == ord ( 'a' ) :
                print ( 'left' )
            if event. key == pygame. K_RIGHT or event. key == ord ( 'd' ) :
                print ( 'right' )
            if event. key == pygame. K_UP or event. key == ord ( 'w' ) :
            print ( 'jump' )

        if event. type == pygame. KEYUP :
            if event. key == pygame. K_LEFT or event. key == ord ( 'a' ) :
                print ( 'left stop' )
            if event. key == pygame. K_RIGHT or event. key == ord ( 'd' ) :
                print ( 'right stop' )
            if event. key == ord ( 'q' ) :
                pygame. quit ( )
                sys . exit ( )
                main = False    

有些人喜欢使用键盘字符W,A,S和D来控制播放器角色,而另一些人则喜欢使用箭头键。 确保同时包含两个选项。

注意:编程时必须考虑所有用户,这一点至关重要。 如果您编写的代码只适合您自己,那么很可能您将是唯一使用您的应用程序的人。 更重要的是,如果您寻找一份能赚钱的代码,那么您就应该编写适合所有人的代码。 给予用户选择(例如使用箭头键或WASD的选项)的标志就是优秀的程序员。

使用Python启动游戏,然后按向右,向左和向上箭头或A,D和W键,观看控制台窗口的输出。


   
   
   
$ python ./your-name_game. py
  left
  left stop
  right
  right stop
  jump

这确认Pygame正确检测到按键。 现在是时候进行使精灵移动的艰苦工作了。

编码播放器移动功能

要使精灵移动,必须为精灵创建一个表示移动的属性。 当精灵不移动时,此变量设置为0

如果您要为子画面设置动画,或者如果您决定将来对其进行动画处理,则还必须跟踪帧以使行走周期保持在正轨上。

在Player类中创建变量。 前两行是针对上下文的(如果您一直遵循的话,您已经在代码中添加了它们),因此仅添加后三行:


   
   
   
    def __init__ ( self ) :
        pygame. sprite . Sprite . __init__ ( self )
        self . movex = 0
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
set_mods 是 Pygame 中的一个方法,用于设置当前按下的修饰键(如 Shift、Alt、Ctrl 等)。该方法需要传入一个参数,即表示当前正在按下的修饰键的整数值。例如,如果当前同时按下了 Shift 和 Ctrl 键,则可以这样调用该方法: ```python import pygame pygame.init() keys = pygame.key.get_pressed() mods = pygame.key.get_mods() if keys[pygame.K_a] and mods & pygame.KMOD_CTRL: print("You pressed Ctrl+A!") ``` 在上面的代码中,我们首先使用 pygame.key.get_pressed() 方法获取当前所有按键的状态,然后使用 pygame.key.get_mods() 方法获取当前正在按下的修饰键的整数值。最后,判断当前是否同时按下了 Ctrl 键和 A 键,如果是,则输出一段提示信息。 需要注意的是,set_mods 方法通常是在处理事件时使用的,用于确保当前正在按下的修饰键被正确地处理。例如,在处理 KEYDOWN 事件时,可以这样使用 set_mods 方法: ```python import pygame pygame.init() while True: for event in pygame.event.get(): if event.type == pygame.KEYDOWN: pygame.key.set_mods(event.mod) if event.key == pygame.K_a and pygame.key.get_mods() & pygame.KMOD_CTRL: print("You pressed Ctrl+A!") ``` 在上面的代码中,我们在处理 KEYDOWN 事件时,先使用 pygame.key.set_mods() 方法设置当前正在按下的修饰键,然后再使用 pygame.key.get_mods() 方法获取修饰键的状态。这样可以确保在按下键时,修饰键的状态是正确的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值