KaranJK
KaranJK

Reputation: 23

Python Character Movement using Pygame

I'm using Visual Studio 2017 IDE. I'm getting character display in output but can't control movement. Would you please check if I made any mistakes. I'm using Pygame and it's keyboard input for character movement.

import pygame, sys
from pygame import *

characterSrc = 'character.png'
pygame.init()
window = display.set_mode((1000, 600))
display.set_caption('Character Movement')
speed = 3
posX = 0
posY = 0

white = (255, 255, 255)
window.fill(white)
character = pygame.image.load("character.png")


pressedkeys = pygame.key.get_pressed()

if pressedkeys[K_LEFT]:
    posX -= speed
elif pressedkeys[K_RIGHT]:
    posX += speed
if pressedkeys[K_UP]:
    posY -= speed
elif pressedkeys[K_DOWN]:
    posY += speed

if posX > 1000:
    posX = 1000
elif posX < 0:
    posX = 0
if posY > 600:
    posY = 600
elif posY < 0:
    posY = 0

window.blit(character, (posX, posY))
pygame.display.update()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            exit()

Upvotes: 0

Views: 148

Answers (1)

KaranJK
KaranJK

Reputation: 23

Thank you so much @musikreck I made the changes you suggested and now it works. Here are the modified version of the code above:

import pygame, sys
from pygame import *

characterSrc = 'character.png'
pygame.init()
window = display.set_mode((1000, 600))
display.set_caption('Flappy Bird')
speed = 3
posX = 0
posY = 0
white = (255, 255, 255)

character = pygame.image.load("character.png")


while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            exit()

    window.fill(white)
    pressedkeys = pygame.key.get_pressed()
    pygame.key.set_repeat()
    if pressedkeys[K_LEFT]:
        posX -= speed
    elif pressedkeys[K_RIGHT]:
        posX += speed
    if pressedkeys[K_UP]:
        posY -= speed
    elif pressedkeys[K_DOWN]:
        posY += speed

    if posX > 1000:
        posX = 1000
    elif posX < 0:
        posX = 0
    if posY > 600:
        posY = 600
    elif posY < 0:
        posY = 0
    window.blit(character, (posX, posY))
    pygame.display.update()

Upvotes: 1

Related Questions