2017-12-17 4 views
0

私が持っている棒人間はすべて矢印キーを使って動かすことができるが、上矢印キーを押すと、どれくらい長く押されても、キーが押されるたびに約10台しか動かすことができません。言い換えれば、私は彼が飛び降りて、飛び跳ねることのできる高さに限界があります。私はいくつかのことを試しましたが、何も働いていません。pygame - 矢印キーを使ってスティックマンジャンプをするが、10単位を超えないようにする

import pygame 

def drawMan(screen,x,y): 
    #head 
    pygame.draw.ellipse(screen,BLACK,[0+x,0+y,10,10], 0) 
    #body 
    pygame.draw.line(screen,BLACK,[4+x,17+y],[4+x,7+y], 2) 
    #legs 
    pygame.draw.line(screen,BLACK,[4+x,17+y],[9+x,27+y], 2) 
    pygame.draw.line(screen,BLACK,[4+x,17+y],[-1+x,27+y], 2) 
    #arms 
    pygame.draw.line(screen,BLACK,[4+x,7+y],[8+x,17+y], 2) 
    pygame.draw.line(screen,BLACK,[4+x,7+y],[0+x,17+y], 2) 

BLACK = (0, 0, 0) 
WHITE = (255, 255, 255) 
BORDER = (100,100,100) 

pygame.init() 

size = (800, 500) 
screen = pygame.display.set_mode(size) 

pygame.display.set_caption("Jump") 

done = False 

clock = pygame.time.Clock() 

pygame.mouse.set_visible(1) 

xCoord = 11 
yCoord = 463 

xSpeed = 0 
ySpeed = 0 

while not done: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      done = True 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_LEFT: 
       xSpeed = -3 
      if event.key == pygame.K_RIGHT: 
       xSpeed = 3 
      if event.key == pygame.K_UP: 
       ySpeed = -3 

     if event.type == pygame.KEYUP: 
      if event.key == pygame.K_LEFT: 
       xSpeed = 0 
      if event.key == pygame.K_RIGHT: 
       xSpeed = 0 
      if event.key == pygame.K_UP: 
       ySpeed = 3 


    if xCoord >= 780: 
     xSpeed = 0 
     xCoord -= 1 
    elif xCoord <= 13: 
     xSpeed = 0 
     xCoord += 1 
    elif yCoord > 465: 
     ySpeed = 0 
     yCoord -= 1 
    elif yCoord <= 13: 
     ySpeed = 0 
     yCoord += 1 
    else: 
     xCoord += xSpeed 
     yCoord += ySpeed 


    screen.fill(WHITE) 
    pygame.draw.line(screen, BORDER, [0,0],[800,0], 20) 
    pygame.draw.line(screen, BORDER, [0,0],[0,500], 20) 
    pygame.draw.line(screen, BORDER, [0,500],[800,500], 20) 
    pygame.draw.line(screen, BORDER, [800,500],[800,0], 20) 


    drawMan(screen,xCoord,yCoord) 

    pygame.display.flip() 

    clock.tick(60) 

pygame.quit() 

答えて

1

ジャンプできる変数を設定します。変数がTrueでない場合、ジャンプキーは何もしません。

ジャンプするとき、変数をFalseに切り替えます。彼が再び地面に当たるまでそれをリセットしないでください。

擬似コード:

IF INPUT = "jump" AND can_jump == True THEN 
    can_jump = False 
    player.jump() 
END IF 

IF player.y == 0 and can_jump == False THEN 
    can_jump = True 
END IF 
+0

[OK]を本当にありがとうございました! – NmcL

関連する問題