Python >> Tutoriel Python >  >> Python GUI >> Pygame GUI

Mouvement de l'objet lorsque les touches fléchées sont enfoncées dans pygame

Dans ce module, nous allons discuter du mouvement de l'objet lorsque les touches sont enfoncées. C'est l'une des tâches les plus courantes lorsque nous concevons des jeux en faisant bouger le personnage spirituel.

Accepter la clé d'entrée du clavier à l'aide de pygame.key

Ici, la saisie au clavier fait référence à l'exécution d'un événement mis en œuvre à l'aide des touches suivantes :

  • K_UP :Il est utilisé pour effectuer une action lorsque la flèche vers le haut est enfoncée sur le clavier.
  • K_DOWN :Il est utilisé pour effectuer une action lorsque la flèche vers le bas est enfoncée sur le clavier.
  • K_LEFT :Il est utilisé pour effectuer une action lorsque la flèche gauche est enfoncée sur le clavier.
  • K_RIGHT :Il est utilisé pour effectuer une action lorsque la flèche droite est enfoncée sur le clavier.
  • K_SPACE :Il est utilisé pour effectuer une action lorsque la touche espace est enfoncée sur le clavier.

Il existe différents types de clés similaires dans pygame qui sont gérées à l'aide de pygame comme suit

key_object = pygame.key.get_pressed()

La syntaxe ci-dessus lira l'entrée du clavier.

Le code suivant décrit comment déplacer un objet lorsque la touche est enfoncée.

import pygame
import sys
pygame.init()
fps=30
fpsclock=pygame.time.Clock()
sur_obj=pygame.display.set_mode((400,300))
pygame.display.set_caption("Keyboard_Input")
White=(255,255,255)
p1=10
p2=10
step=5
while True:
    sur_obj.fill(White)
    pygame.draw.rect(sur_obj, (255,0,0), (p1, p2, 70, 65))
    for eve in pygame.event.get():
        if eve.type==pygame.QUIT:
            pygame.quit()
            sys.exit()
    key_input = pygame.key.get_pressed()   
    if key_input[pygame.K_LEFT]:
        p1 -= step
    if key_input[pygame.K_UP]:
        p2 -= step
    if key_input[pygame.K_RIGHT]:
        p1 += step
    if key_input[pygame.K_DOWN]:
        p2 += step
    pygame.display.update()
    fpsclock.tick(fps)

Sortie :

Le code ci-dessus donne la sortie sous la forme d'une fenêtre avec un rectangle rouge lorsqu'une touche gauche est enfoncée, elle se déplace vers la gauche et lorsque la touche droite est enfoncée, elle se déplace vers la droite et lorsque la touche haut est enfoncée, elle se déplace vers le haut.

if key_input[pygame.K_LEFT]:
        p1 -= step

Ici, lorsque nous appuyons sur une touche gauche une fois, il doit se déplacer vers la gauche car nous considérons l'écran pygame comme des coordonnées de pixels lorsque nous soustrayons 5 de la coordonnée x afin que la position du rectangle passe de (10,10) à (5,10) de la même manière plusieurs fois nous appuyons sur la touche gauche ces nombreux éléments 5 est soustrait de la coordonnée x.

if key_input[pygame.K_UP]:
        p2 -= step

Lorsque la touche haut est enfoncée, nous soustrayons 5 de la coordonnée y afin que la position passe de (10,10) à (10,5). Ce qui a défini cela comme un nouveau poste.

if key_input[pygame.K_RIGHT]:
        p1 += step

Lorsque la touche droite est enfoncée, nous ajoutons 5 à la coordonnée x afin que la position passe de (10,10) à (15,10).

if key_input[pygame.K_DOWN]:
        p2 += step

Lorsque la touche bas est enfoncée, nous ajoutons 5 à la coordonnée y afin que la position passe de (10,10) à (10,15). Ainsi, ce rectangle se déplace vers la position obtenue.

Comme ceci, combien de fois nous appuyons sur les touches autant de fois que les coordonnées x et y sont modifiées.