0
    import pygame, sys, time

win = pygame.display.set_mode((750, 750))

PlayerX = 375
PlayerY = 375
helloX = 10
helloY = 10


playerScale = 50

Player = pygame.image.load("player.png")
Player = pygame.transform.scale(Player, (playerScale, playerScale))
clock = pygame.time.Clock()

while 1:
    for event in pygame.event.get():
        keys = pygame.key.get_pressed()
        if keys[pygame.K_q]:
            sys.exit
        if keys[pygame.K_a]:
            PlayerX -= 1
        if keys[pygame.K_d]:
            PlayerX += 1
        if keys[pygame.K_s]:
            PlayerY += 1
        if keys[pygame.K_w]:
            PlayerY -= 1
        if keys[pygame.K_t]:
            playerScale *= 2
            Player = pygame.transform.scale(Player, (playerScale, playerScale))
        if keys[pygame.K_y]:
            playerScale /= 2
            Player = pygame.transform.scale(Player, (playerScale, playerScale))
    def drawScreen():
        win.fill((48, 101, 13))
        win.blit(Player, (PlayerX, PlayerY))
        pygame.display.update()
    drawScreen()
    pygame.display.flip()
    clock.tick(120)

for some when you move the mouse in this program the fps increases which makes the character move faster. so how do you fix it and also how do you make the character move at the same speed no matter the fps? Thanks for helping if you did.

avocadoLambda
  • 1,332
  • 7
  • 16
  • 33

1 Answers1

0

pygame.key.get_pressed() is not an event!

pygame.key.get_pressed() returns a list with the state of each key. If a key is held down, the state for the key is True, otherwise False. Use pygame.key.get_pressed() to evaluate the current state of a button and get continuous movement. See How can I make a sprite move when key is held down.

The keyboard events (see pygame.event module) occur only once when the state of a key changes. The KEYDOWN event occurs once every time a key is pressed. KEYUP occurs once every time a key is released. Use the keyboard events for a single action or a step-by-step movement.

while 1:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == pygame.K_t:
                playerScale *= 2
                Player = pygame.transform.scale(Player, (playerScale, playerScale))
            if event.key == pygame.K_y:
                playerScale /= 2
                Player = pygame.transform.scale(Player, (playerScale, playerScale))

    keys = pygame.key.get_pressed()
    if keys[pygame.K_q]:
        sys.exit
    if keys[pygame.K_a]:
        PlayerX -= 1
    if keys[pygame.K_d]:
        PlayerX += 1
    if keys[pygame.K_s]:
        PlayerY += 1
    if keys[pygame.K_w]:
        PlayerY -= 1

    # [...]
Rabbid76
  • 202,892
  • 27
  • 131
  • 174