Pygame input splits into discrete events (KEYDOWN, MOUSEBUTTONDOWN) for one-shot actions, and continuous polling (pygame.key.get_pressed()) for smooth held-key movement — mixing these up is the most common input bug.
1-B 2-B 3-A 4-B | 5 KEYDOWN 6 MOUSEWHEEL 7 = keys = pygame.key.get_pressed() then if keys[pygame.K_LEFT]: player.x -= speed 8 = set dragging=True on MOUSEBUTTONDOWN over the object, update its position on MOUSEMOTION while dragging is True, set dragging=False on MOUSEBUTTONUP 9 = KEYDOWN only fires once per press, so movement would happen in single sudden jumps rather than smoothly every frame while the key stays held | 10 = key.get_pressed() returns the held state of EVERY key each frame, so you can check both K_UP and K_RIGHT simultaneously and apply both movements in the same frame — a single KEYDOWN event only reports one key press at a time