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