2017-12-17 1 views
0

화살통을 사용하여 움직일 수있는 stickman이 있지만 위쪽 화살표 키를 누르면 그 사람을 원합니다. 키를 누를 때마다 얼마 동안 길게 눌러도 약 10 유닛 만 이동할 수 있습니다. 다른 말로하면 나는 그가 뛰기를 원하고, 얼마나 뛰어날 수 있는지에 대한 한계를 가지고있다. 나는 몇 가지 일을 시도했지만 아무 것도 효과가 없었다.pygame - 화살표 키를 사용하여 stickman 점프를 만들지 만 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

점프를 허용하는 변수를 설정하십시오. 변수가 참이 아니면 점프 키는 아무 것도하지 않습니다.

그가 점프하면 변수를 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

좋아, 정말 고마워요! – NmcL

관련 문제