这是我的第一个pygame代码不多,非常简单。当我想移动我的球员时,它可以工作,但我希望移动平稳。比如当我按下左键时,我希望它向左移动。现在我每次都要按左键,这样玩家就会向左移动。你有什么建议吗?
import pygame, sys
pygame.init()
window_size = ( 400, 400 )
white = ( 255, 255, 255 )
class Player():
image = pygame.image.load( 'foo.png')
rect = image.get_rect()
player = Player()
screen = pygame.display.set_mode( window_size )
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
move = (-10, 0 )
player.rect = player.rect.move(move)
if event.key == pygame.K_RIGHT:
move = ( 10, 0 )
player.rect = player.rect.move(move)
if event.key == pygame.K_UP:
move = ( 0,-10 )
player.rect = player.rect.move(move)
if event.key == pygame.K_DOWN:
move = ( 0, 10 )
player.rect = player.rect.move(move)
screen.fill( white )
screen.blit( player.image, player.rect )
pygame.display.flip()
编辑我的Aarons方法答案:
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
pressed = pygame.key.get_pressed()
if pressed[pygame.K_LEFT]:
move = ( 2, 0 )
player.rect = player.rect.move(move)
if pressed[pygame.K_RIGHT]:
move = ( 2, 0 )
player.rect = player.rect.move(move)
if pressed[pygame.K_UP]:
move = ( 0,-2 )
player.rect = player.rect.move(move)
if pressed[pygame.K_DOWN]:
move = ( 0, 2 )
player.rect = player.rect.move(move)
看看树懒对类似问题的回答。你似乎有两种潜在的方法,要么利用set_repeat,要么get_pressed。
重复设置
当键盘重复被启用时,按下的键将生成多个pygame。键控事件。延迟是第一次重复pygame之前的毫秒数。将发送KEYDOWN。在那之后是另一场比赛。KEYDOWN将每隔毫秒发送一次。如果未传递任何参数,则禁用键重复。来源
像这样的东西可以完成这项工作:
# set_repeat(delay, interval)
pygame.key.set_repeat(1, 10)
# A delay of 0 disables the repeat.
# The lower the interval, the faster the movement would be.
催促
返回表示键盘上每个键状态的布尔值序列。使用键常量值为数组编制索引。真值表示该按钮已按下。使用此功能获取按钮列表不是处理用户输入文本的正确方法。您无法知道按键的顺序,在两次调用pygame之间,快速按键可能完全不被注意到。钥匙按下按钮()。也无法将这些按下的键转换为完全转换的字符值。看这个游戏。此功能的事件队列上的KEYDOWN事件。来源
像这样的东西应该非常适合您的代码:
pressed = pygame.key.get_pressed()
if pygame.K_LEFT in pressed:
# move left
if pygame.K_RIGHT in pressed:
# move right
解决方案实现到@ZedsWhatShesay的代码中,还添加了PEP-8格式:
import pygame
import sys
pygame.init()
window_size = (400, 400)
white = (255, 255, 255)
class Player():
image = pygame.image.load('foo.png')
rect = image.get_rect()
player = Player()
screen = pygame.display.set_mode(window_size)
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
pressed = pygame.key.get_pressed()
if pygame.K_LEFT in pressed:
move = (-10, 0)
player.rect = player.rect.move(move)
if pygame.K_RIGHT in pressed:
move = (10, 0)
player.rect = player.rect.move(move)
if pygame.K_UP in pressed:
move = (0, -10)
player.rect = player.rect.move(move)
if pygame.K_DOWN in pressed:
move = (0, 10)
您可以跟踪KEYUP
和KEYDOWN
事件,然后为正在跟踪的每个按键存储按下状态。
现在,不再是在用户按下按键时移动播放器,而是测试按键的状态,看看它是否被按下,如果被按下,将移动应用于播放器。
作为一个简化的例子:
pressed_keys = {
'left': false,
...define other keys...
}
while not done:
# Check for key events
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
pressed_keys['left'] = True
...check other keys...
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
pressed_keys['left'] = False
...check other keys...
# Move the player
if pressed_keys['left']:
...move player left...
本文向大家介绍jquery animate动画持续运动的实例,包括了jquery animate动画持续运动的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 如上,想要实现左右持续运动,则把该动画封装为一个函数,再反复调用就好。 以上这篇jquery animate动画持续运动的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
它们还提供了一个警告:如果您能够持续部署到测试系统,有时也会使用术语“持续部署”。 这一切让我很困惑。任何更详细的解释(或附带一个例子)都是赞赏的!
我不知道如何在iOS7中设置NSLayoutConstraint动画持续时间。这是我的代码:
我是一个对使用python相当陌生的爱好者。自从我安装 Pygame 以来已经一周了,经过多次尝试,当我运行任何程序时,我仍然无法启动或打开 Pygame 窗口。我已经看了尽可能多的教程,并阅读了我能找到的关于类似问题的所有文章。我已经复制了在其他网站上找到的所有解决方案,但问题仍然存在。然而,更奇怪的是,我正在使用的IDE(Pycharm)很少输出错误消息,而是简单地继续运行,但从未启动Pyga
translated_page: https://github.com/PX4/Devguide/blob/master/en/test_and_ci/continous_integration.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e PX4 Continuous Integration PX4 builds and
如果没有指定,但给定mp4视频的内容长度和索引范围,如何确定MPD文件中的片段持续时间?例如,如下所示的mpd文件(http://dash.edgesuite.net/akamai/streamroot/050714/Spring_4Ktest.mpd): 非常感谢你! 闪耀