1

So, I'm new to Pygame and I'm trying to make a program in which you can control a ball with the arrow keys. The problem is that when I press arrow keys, nothing happens but I don't get any error messages. Can someone help me please?

I tried to use rect.move_ip but nothing happened too. I don't know what to do.

Here is my code:

import pygame, pygame.font, pygame.event, pygame.draw, string
from pygame.locals import *
from pygame.draw import *

pygame.init()

#surface
surface = pygame.display.set_mode(size=(800, 600), flags=0, depth=0, display=0, vsync=0)
pygame.display.set_caption("Ball Game")

#class Player
class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.speed = 10
        self.x = 50
        self.y = 60
        self.player1 = pygame.draw.circle(surface, (255, 174, 0), (self.x, self.y), 30)
        self.player2 = pygame.draw.circle(surface, (0,0,0), (self.x, self.y), 32, 2)

    def move_right(self):
        self.x += self.speed

    def move_left(self):
        self.x -= self.speed

    def move_up(self):
        self.y -= self.speed

    def move_down(self):
        self.y += self.speed

#class Game
class Game:
    def __init__(self):
        self.player = Player()



#background
surface.fill((255,0,0))

#loadgame
game = Game()



#main loop
running = True

while running:
    
    pygame.display.flip()
    
    for event in pygame.event.get():
        #close game
        if event.type == QUIT:
            running = False

        #detect if a player release a key
        elif event.type == pygame.KEYDOWN:
            
            #player controls
            keys = pygame.key.get_pressed()
            
            if keys[pygame.K_RIGHT]:
                game.player.move_right()

            if keys[pygame.K_LEFT]:
                game.player.move_left() 

            if keys[pygame.K_UP]:
                game.player.move_up()
                
            if keys[pygame.K_DOWN]:
                game.player.move_down()

    pygame.draw.circle
    pygame.display.flip() 

pygame.quit()
CodPix
  • 11
  • 2
  • `pygame.key.get_pressed()` is not an event. You have to do the movement in the application loop instead of the event loop. See [How can I make a sprite move when key is held down](https://stackoverflow.com/questions/9961563/how-can-i-make-a-sprite-move-when-key-is-held-down). – Rabbid76 Nov 06 '21 at 22:37

0 Answers0