【发布时间】:2017-09-06 21:46:54
【问题描述】:
在我的代码中,当玩家的化身跳到某个点时,重力会使其回落。但是,这仅在按住向上和空格按钮直到达到特定点时才有效。在释放按钮的情况下,我想使用这段代码将鸭子重力送回:
player.rect.move_ip(0, (player.speed) * -player.y_direction)
不知道怎么做检查,看是否释放,然后自动执行。
另外一个我需要帮助的问题是,当鸭子回到地板上时,必须松开按钮然后重新敲击。我想更新代码,只要按下按钮,头像就会跳回地面,然后在按住空格和向上按钮的情况下自动返回跳跃。
以下是完整代码: 类播放器(pygame.sprite.Sprite): """玩家控制的鸭子"""
def __init__(self, x, y, width, height):
super(Player, self).__init__(x, y, width, height)
# How many pixels the Player duck should move on a given frame.
self.y_change = 0
# How many pixels the spaceship should move each frame a key is pressed.
self.y_dist = 150
self.x_change = 0
# How many pixels the spaceship should move each frame a key is pressed.
self.x_dist = 30
self.x_direction = 1
# Positive = down, negative = up
self.y_direction = -1
# Current speed.
self.speed = 13
duck = pygame.image.load('walkingduck.png')
player = Player(0, (window_height)-125, 120, 160) #Making player object(duck)
all_sprites_list = pygame.sprite.Group()
all_sprites_list.add(player)
move = False
while True: # the main game loop
if move: #Jumping process
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_UP] or key_pressed[pygame.K_SPACE]:
if player.rect.y<=320:
move=False
else:
player.rect.move_ip(0, player.speed * player.y_direction)
if move==False and player.rect.y<=(window_height)-115:
player.rect.move_ip(0, (player.speed) * -player.y_direction)
for event in pygame.event.get(): #Closes game
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
move=True
#Adds images and text
screen.blit(BackGround.image, BackGround.rect)
all_sprites_list.draw(screen)
pygame.display.flip()
pygame.display.update()
clock.tick(FPS)
【问题讨论】:
-
所以如果按下键,鸭子应该向上飞,否则向下?
-
它已经做到了。然而,在释放鸭子时,它会停留在空中,除非它在下降时飞到某个点(按住键)。所以我想让它在任何时候释放钥匙然后将它放回地面。
标签: pygame python-3.5