what set_alpha pos oficial initialize event down python pygame keydown keyup

python - pos - set_alpha pygame



Pygame Keyup/Keydown (1)

Sangrado problema. Debes probar tus estados clave en el bucle principal de tu juego, no en tu bucle de eventos. Debes DESACTIVAR tu nivel de prueba de un estado clave.

while 1: # do init stuff screen.fill(0) # .... (all main loop init stuff here) for event in pygame.event.get(): # test events, set key states if event.type == pygame.KEYDOWN: if event.key==K_w: keys[0]=True # .... (all event stuff) # Indent moves back to main game loop # test key states here... if keys[0]: playerpos[1]-=5 elif keys[2]: playerpos[1]+=5 # .... (and so on)

Estoy haciendo un pequeño Mario para el Computer Club de mi escuela. (bueno, como parte de un equipo.) De todos modos, estoy teniendo problemas con los comandos "keyup / keydown". Aquí está mi código:

# 1 - Import library import pygame from pygame.locals import * # 2 - Initialize the game pygame.init() width, height = 1280, 1000 screen=pygame.display.set_mode((width, height)) keys = [False, False, False, False] playerpos=[100,100] # 3 - Load images player = pygame.image.load("images/totallynotgodzilla.png") # 3.1 - Load Audio music = pygame.mixer.Sound("audio/skyrim.wav") # 4 - keep looping through while 1: # 5 - clear the screen before drawing it again screen.fill(0) # 6 - draw the screen elements screen.blit(player, playerpos) # 7 - update the screen pygame.display.flip() # 8 - loop through the events for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key==K_w: keys[0]=True elif event.key==K_a: keys[1]=True elif event.key==K_s: keys[2]=True elif event.key==K_d: keys[3]=True if event.type == pygame.KEYUP: if event.key==pygame.K_w: keys[0]=False elif event.key==pygame.K_a: keys[1]=False elif event.key==pygame.K_s: keys[2]=False elif event.key==pygame.K_d: keys[3]=False # 9 - Move player if keys[0]: playerpos[1]-=5 elif keys[2]: playerpos[1]+=5 if keys[1]: playerpos[0]-=5 elif keys[3]: playerpos[0]+=5

Básicamente, el problema es que cuando presiono una tecla, espera a que ocurra el comando de teclado antes de volver a moverse. Así que, básicamente, tengo que presionar rápidamente los botones para mover.

Eliminé parte del código, así que si falta algo, házmelo saber y te diré si lo tengo o no.